Skip to content

Commit 8183330

Browse files
authored
Merge pull request #2212 from bugsnag/PLAT-14481/version-catalog
Gradle Version Catalog
2 parents 2878407 + 7d3a3dc commit 8183330

41 files changed

Lines changed: 365 additions & 325 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.buildkite/pipeline.full.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ steps:
3636
timeout_in_minutes: 10
3737
agents:
3838
queue: macos-15
39+
env:
40+
JAVA_VERSION: 17
3941
command: './gradlew clean assembleRelease check --scan'
4042

4143
#

.buildkite/pipeline.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,21 @@ steps:
4949
timeout_in_minutes: 20
5050
agents:
5151
queue: macos-15
52+
env:
53+
JAVA_VERSION: 17
5254
command: './gradlew --continue checkstyle detekt lint ktlintCheck'
55+
env:
56+
JAVA_VERSION: 17
5357

5458
- label: ':android: Binary compatibility checks'
5559
timeout_in_minutes: 20
5660
agents:
5761
queue: macos-15
62+
env:
63+
JAVA_VERSION: 17
5864
command: './gradlew apiCheck'
65+
env:
66+
JAVA_VERSION: 17
5967

6068
- label: ':android: CppCheck'
6169
timeout_in_minutes: 10
@@ -89,7 +97,11 @@ steps:
8997
timeout_in_minutes: 10
9098
agents:
9199
queue: macos-15
100+
env:
101+
JAVA_VERSION: 17
92102
command: './gradlew test'
103+
env:
104+
JAVA_VERSION: 17
93105

94106
- label: ':android: Instrumentation tests'
95107
timeout_in_minutes: 10
@@ -101,6 +113,8 @@ steps:
101113
command: './scripts/run-connected-checks.rb'
102114
env:
103115
API_LEVEL: 30
116+
JAVA_VERSION: 17
117+
104118
#
105119
# BitBar steps
106120
#

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## TBD
4+
5+
### Changes
6+
7+
* Bumped the `minSdk` to 16 (Android 4.1 Jelly Bean), and removed redundant `minSdk` checks in the codebase
8+
[#2212](https://github.com/bugsnag/bugsnag-android/pull/2212)
9+
310
## 6.15.0 (2025-07-07)
411

512
### Enhancements

bugsnag-android-core/build.gradle.kts

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,25 @@ import kotlinx.validation.ApiValidationExtension
22
import org.jetbrains.dokka.gradle.DokkaTask
33

44
plugins {
5-
loadDefaultPlugins()
5+
alias(libs.plugins.android.library)
6+
alias(libs.plugins.kotlin.android)
7+
alias(libs.plugins.kotlin.compatibility)
8+
alias(libs.plugins.detekt)
9+
alias(libs.plugins.dokka)
10+
alias(libs.plugins.ktlint)
11+
alias(libs.plugins.licenseCheck)
12+
checkstyle
613
}
714

815
android {
9-
compileSdk = Versions.Android.Build.compileSdkVersion
16+
compileSdk = libs.versions.android.compileSdk.get().toInt()
1017
namespace = "com.bugsnag.android.core"
1118

19+
configureRelease()
20+
1221
defaultConfig {
13-
minSdk = Versions.Android.Build.minSdkVersion
14-
ndkVersion = Versions.Android.Build.ndk
22+
minSdk = libs.versions.android.minSdk.get().toInt()
23+
ndkVersion = libs.versions.android.ndk.get()
1524

1625
consumerProguardFiles("proguard-rules.pro")
1726
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
@@ -22,11 +31,13 @@ android {
2231
}
2332

2433
lint {
25-
isAbortOnError = true
26-
isWarningsAsErrors = true
27-
isCheckAllWarnings = true
28-
baseline(File(project.projectDir, "lint-baseline.xml"))
29-
disable("GradleDependency", "NewerVersionAvailable")
34+
lintConfig = file("lint.xml")
35+
36+
abortOnError = true
37+
warningsAsErrors = true
38+
checkAllWarnings = true
39+
baseline = File(project.projectDir, "lint-baseline.xml")
40+
disable += setOf("GradleDependency", "NewerVersionAvailable")
3041
}
3142

3243
buildFeatures {
@@ -67,11 +78,14 @@ android {
6778
}
6879

6980
externalNativeBuild.cmake.path = project.file("CMakeLists.txt")
70-
externalNativeBuild.cmake.version = Versions.Android.Build.cmakeVersion
81+
externalNativeBuild.cmake.version = libs.versions.cmake.get()
7182
}
7283

7384
dependencies {
74-
addCommonModuleDependencies()
85+
api(libs.bundles.common.api)
86+
87+
testImplementation(libs.bundles.test.jvm)
88+
androidTestImplementation(libs.bundles.test.android)
7589
}
7690

7791
tasks.getByName<DokkaTask>("dokkaHtml") {

bugsnag-android-core/lint.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<lint>
2+
<issue id="all">
3+
<ignore path="dsl-json/**" />
4+
</issue>
5+
</lint>

bugsnag-android-core/src/androidTest/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.bugsnag.android.test"
43
android:versionCode="1"
54
android:versionName="1.0">
65

bugsnag-android-core/src/androidTest/java/com/bugsnag/android/AppDataCollectorTest.kt

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import android.app.ActivityManager
44
import android.content.Context
55
import android.content.pm.PackageManager
66
import android.os.Build
7-
import android.os.Process
87
import androidx.test.core.app.ApplicationProvider
98
import com.bugsnag.android.internal.dag.ValueProvider
109
import org.junit.Assert.assertEquals
@@ -154,58 +153,4 @@ class AppDataCollectorTest {
154153
val result = collector.getAppDataMetadata()["processImportance"]
155154
assertEquals("foreground service", result)
156155
}
157-
158-
@Test
159-
fun testGetProcessImportanceWithVersion14() = withBuildSdkInt(Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
160-
val packageManager = mock(PackageManager::class.java)
161-
`when`(packageManager.getApplicationLabel(any())).thenReturn("Test App name")
162-
`when`(am.runningAppProcesses).thenReturn(
163-
listOf(
164-
ActivityManager.RunningAppProcessInfo().apply {
165-
importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
166-
pid = Process.myPid()
167-
}
168-
)
169-
)
170-
171-
val collector = AppDataCollector(
172-
context,
173-
packageManager,
174-
client.immutableConfig,
175-
ValueProvider(client.sessionTracker),
176-
am,
177-
client.launchCrashTracker,
178-
client.memoryTrimState
179-
)
180-
181-
val result = collector.getAppDataMetadata()["processImportance"]
182-
assertEquals("foreground", result)
183-
}
184-
185-
@Test
186-
fun testGetProcessImportanceWithPid0() = withBuildSdkInt(Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
187-
val packageManager = mock(PackageManager::class.java)
188-
`when`(packageManager.getApplicationLabel(any())).thenReturn("Test App name")
189-
`when`(am.runningAppProcesses).thenReturn(
190-
listOf(
191-
ActivityManager.RunningAppProcessInfo().apply {
192-
importance = ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
193-
pid = 0
194-
}
195-
)
196-
)
197-
198-
val collector = AppDataCollector(
199-
context,
200-
packageManager,
201-
client.immutableConfig,
202-
ValueProvider(client.sessionTracker),
203-
am,
204-
client.launchCrashTracker,
205-
client.memoryTrimState
206-
)
207-
208-
val result = collector.getAppDataMetadata()["processImportance"]
209-
assertEquals(null, result)
210-
}
211156
}

bugsnag-android-core/src/main/AndroidManifest.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.bugsnag.android.core">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43

54
<!-- Required: Used to deliver Bugsnag crash reports -->
65
<uses-permission android:name="android.permission.INTERNET" />

bugsnag-android-core/src/main/java/com/bugsnag/android/AppDataCollector.kt

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import android.content.Context
2121
import android.content.pm.PackageManager
2222
import android.os.Build.VERSION
2323
import android.os.Build.VERSION_CODES
24-
import android.os.Process
2524
import android.os.SystemClock
2625
import com.bugsnag.android.internal.ImmutableConfig
2726
import com.bugsnag.android.internal.dag.Provider
@@ -77,17 +76,7 @@ internal class AppDataCollector(
7776
private fun getProcessImportance(): String? {
7877
try {
7978
val appInfo = ActivityManager.RunningAppProcessInfo()
80-
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
81-
ActivityManager.getMyMemoryState(appInfo)
82-
} else {
83-
val expectedPid = Process.myPid()
84-
activityManager?.runningAppProcesses
85-
?.find { it.pid == expectedPid }
86-
?.let {
87-
appInfo.importance = it.importance
88-
appInfo.pid = expectedPid
89-
}
90-
}
79+
ActivityManager.getMyMemoryState(appInfo)
9180

9281
if (appInfo.pid == 0) {
9382
return null

bugsnag-android-core/src/main/java/com/bugsnag/android/ContextExtensions.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.bugsnag.android
22

3+
import android.annotation.SuppressLint
34
import android.app.ActivityManager
45
import android.content.BroadcastReceiver
56
import android.content.Context
@@ -16,6 +17,7 @@ import java.lang.RuntimeException
1617
* Calls [Context.registerReceiver] but swallows [SecurityException] and [RemoteException]
1718
* to avoid terminating the process in rare cases where the registration is unsuccessful.
1819
*/
20+
@SuppressLint("UnspecifiedRegisterReceiverFlag")
1921
internal fun Context.registerReceiverSafe(
2022
receiver: BroadcastReceiver?,
2123
filter: IntentFilter?,

0 commit comments

Comments
 (0)