Skip to content

Commit 4eea8dc

Browse files
authored
feat: merge December 2025 QPR2 Patches (android-16.0.0_r4) (#97)
* Merge December 2025 QPR2 Patches (android-16.0.0_r4) (#91) * SettingsLib: bump to `android-16.0.0_r4` tag * SettingsLib: bump `minSdk` version to 23 https://android.googlesource.com/platform/frameworks/base/+/40ba4786d08b0618fe77ce7435116dbd41f2fb12 ("Update SettingsLib/DataStore min_sdk_version to 23.") * CollapsingToolbarBaseActivity: add APIs for action button https://android.googlesource.com/platform/frameworks/base/+/7e207744232a1a9f22ba6edafe26d0e575290090 ("Added button in CollapsingToolbar") * CollapsingToolbarBaseActivity: add APIs for trailing buttons (primary/secondary/action) https://android.googlesource.com/platform/frameworks/base/+/5deb69739d62f225dd8ba15f0987250d107a1145 ("[Expressive design] Add trailing buttons to CollapsingToolbar") * CollapsingToolbarBaseActivity: add API to toggle Toolbar trailing buttons Now we have a trailing buttons view holding the action, primary & secondary buttons not just the action button, so refactoring is needed. * CollapsingToolbarBaseActivity: collapse toolbar when hosting multiple fragments https://android.googlesource.com/platform/frameworks/base/+/e0bf8cb02e2bbab0dea2ec1d1153b1b8818b6677 ("Collapse toolbar when hosting multiple fragments") * SettingsLib/CollapsingToolbarBaseActivity: fix compilation issues * ScrollableToolbarItemLayout is a Kotlin class. --- /home/runner/work/7SIM/7SIM/SettingsLib/fwb/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/CollapsingToolbarBaseActivity.java:34: error: cannot find symbol import com.android.settingslib.collapsingtoolbar.widget.ScrollableToolbarItemLayout; ^ symbol: class ScrollableToolbarItemLayout location: package com.android.settingslib.collapsingtoolbar.widget * Bump `Room` to `v2.8.0-alpha01` (`android-16.0.0_r4` tag) * Bump `Material3` to `v1.14.0-alpha02` (`android-16.0.0_r4` tag) * Bump AndroidX deps to `android-16.0.0_r4` tag * CollapsingToolbarBaseActivity: fix compilations errors /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/ui/components/CollapsingToolbarBaseActivity.java:87: error: cannot find symbol .map((v) -> (View) v.getParent()); ^ symbol: method getParent() location: variable v of type Object * SimPinFeederTest: increase task timeout in CI environment to 5 seconds GitHub Actions runners are very slow sometimes, which timeouts our tests, probably due to JVM waiting for resources from the OS such as processor. We already faced a similar issue in 1b353b0 and 6946b97, so increasing timeout a bit should resolve the issue. To maintain speed when testing locally, we still want to timeout after 3 seconds. org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in com.github.iusmac.sevensim.telephony.SimPinFeederTest was not fulfilled within 3 seconds. at org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:167) at org.awaitility.core.CallableCondition.await(CallableCondition.java:78) at org.awaitility.core.CallableCondition.await(CallableCondition.java:26) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1160) at org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1129) at com.github.iusmac.sevensim.telephony.SimPinFeederTest.assertTaskInState(SimPinFeederTest.java:879) at com.github.iusmac.sevensim.telephony.SimPinFeederTest.test_ShouldUnlockWhenAttemptsRemainingIsAtLeastThree_SinceS(SimPinFeederTest.java:274) --- Another symptom that GitHub Actions runners are very slow, is that we even got a NPE in the SimPinFeeder thread that runs in parallel, because the main/test thread already terminated (due to a fixed timeout), and recycled objects that aren't reachable anymore. Exception in thread "Thread-71" java.lang.NullPointerException: Cannot invoke "android.telephony.TelephonyManager.getSimState()" because "this.mTelephonyManager" is null at com.github.iusmac.sevensim.telephony.SimPinFeeder$SimCard.toString(SimPinFeeder.java:325) at java.base/java.util.Formatter$FormatSpecifier.printString(Formatter.java:3158) at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:3036) at java.base/java.util.Formatter.format(Formatter.java:2791) at java.base/java.util.Formatter.format(Formatter.java:2728) at java.base/java.lang.String.format(String.java:4431) at com.github.iusmac.sevensim.Logger.format(Logger.java:112) at com.github.iusmac.sevensim.Logger.v(Logger.java:56) at com.github.iusmac.sevensim.telephony.SimPinFeeder.run(SimPinFeeder.java:99) * SimPinFeederTest: fix compilation errors /home/runner/work/7SIM/7SIM/tests/test/java/com/github/iusmac/sevensim/telephony/SimPinFeederTest.java:120: error: element value must be a constant expression @test(timeout = TASK_WAIT_TIMEOUT_MILLIS) * Revert "fix(ui/PrimarySwitchPreference): address extra divider empty space [Expressive Design] (#79)" This reverts commit 60c5164. * fix(ui/PrimarySwitchPreference): address extra divider empty space [Expressive Design] In the expressive theme introduced in Android 16 (Baklava), the switch preference used in the SIM list activity contains additional space at the beginning of the parent layout causing the title (e.g., SIM name) and summary (e.g., next upcoming schedule) text views that precede it to wrap earlier. * Update golden screenshots for Roborazzi tests * test(SimListActivityTest): preemptively make background restricted banner visible (#94) We make the "Background usage required" banner preference visible in SimListFragment's onResume() method, but *sometimes* we get an ArrayIndexOutOfBoundsException from SettingsPreferenceGroupAdapter, which serves as a preferences decorator that updates their drawable's background round corners radius when expressive theme in enabled. The exception raises because the update preference list runnable is posted on the main thread, so that RecyclerView runs first. This is right to do and this issue cannot be reproduced when running on a real device, but it happens only in Robolectric tests, probably due to the paused looper and how Activity lifecycle chain is processed. (Could this be a bug in Robolectric?) As a workaround, we'll preemptively make the banner visible during setup in SimListFragment's onViewCreated() method, so that it's present in the preference's adapter upon binding its view holder, which will pass through the SettingsPreferenceGroupAdapter decorator first and avoid the ArrayIndexOutOfBoundsException. --- java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6 at com.android.settingslib.widget.SettingsPreferenceGroupAdapter.updateBackground(SettingsPreferenceGroupAdapter.kt:185) at com.android.settingslib.widget.SettingsPreferenceGroupAdapter.onBindViewHolder(SettingsPreferenceGroupAdapter.kt:96) at com.android.settingslib.widget.SettingsPreferenceGroupAdapter.onBindViewHolder(SettingsPreferenceGroupAdapter.kt:46) at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7846) at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7953) at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6742) at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:7013) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6853) at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6849) at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2422) at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1722) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1682) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:747) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4737) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4459) at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:5011) [...] at org.robolectric.shadows.ShadowPausedLooper$IdlingRunnable.doRun(ShadowPausedLooper.java:677) at org.robolectric.shadows.ShadowPausedLooper$ControlRunnable.run(ShadowPausedLooper.java:599) at org.robolectric.shadows.ShadowPausedLooper$HandlerExecutor.execute(ShadowPausedLooper.java:849) at org.robolectric.shadows.ShadowPausedLooper.executeOnLooper(ShadowPausedLooper.java:765) at org.robolectric.shadows.ShadowPausedLooper.idle(ShadowPausedLooper.java:109) at org.robolectric.shadows.ShadowPausedLooper.idleIfPaused(ShadowPausedLooper.java:193) at org.robolectric.android.controller.ActivityController.visible(ActivityController.java:233) at org.robolectric.android.internal.RoboMonitoringInstrumentation.lambda$startActivitySyncInternal$0(RoboMonitoringInstrumentation.java:143) at org.robolectric.shadows.ShadowInstrumentation.runOnMainSyncNoIdle(ShadowInstrumentation.java:1183) at org.robolectric.android.internal.RoboMonitoringInstrumentation.startActivitySyncInternal(RoboMonitoringInstrumentation.java:125) at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:38) at org.robolectric.android.internal.LocalActivityInvoker.startActivity(LocalActivityInvoker.java:43) at androidx.test.core.app.ActivityScenario.launchInternal(ActivityScenario.java:367) at androidx.test.core.app.ActivityScenario.launch(ActivityScenario.java:237) at com.github.iusmac.sevensim.ui.sim.SimListActivityTestKt.onActivity(SimListActivityTest.kt:992) at com.github.iusmac.sevensim.ui.sim.SimListActivityTestKt.onActivity$default(SimListActivityTest.kt:942) at com.github.iusmac.sevensim.ui.sim.SimListActivityTest$BackgroundRestrictedBanner.test full view when background usage restricted(SimListActivityTest.kt:218) * l10n(korean): fix formatting argument types incomplete or inconsistent lint warning (#95) Addressing the incomplete commit 0419351 ("chore(SubscriptionSchedulerSummaryBuilder): add support for custom date-time separator"). --- /home/runner/work/7SIM/7SIM/res/values-ko-rKR/strings.xml:28: Warning: Inconsistent number of arguments in formatting string scheduler_start_time_custom_summary; found both 1 here and 2 in values/strings.xml [StringFormatCount] <string name="scheduler_start_time_custom_summary">"<![CDATA[<b><xliff:g name="date_time" example="today, 6 AM">%1$s</xliff:g></b>]]>에 자동으로 켜짐"</string> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/runner/work/7SIM/7SIM/res/values/strings.xml:54: Conflicting number of arguments (2) here /home/runner/work/7SIM/7SIM/res/values-ko-rKR/strings.xml:29: Warning: Inconsistent number of arguments in formatting string scheduler_end_time_custom_summary; found both 1 here and 2 in values/strings.xml [StringFormatCount] <string name="scheduler_end_time_custom_summary">"<![CDATA[<b><xliff:g name="date_time" example="today, 10 PM">%1$s</xliff:g></b>]]>에 자동으로 꺼짐"</string> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/runner/work/7SIM/7SIM/res/values/strings.xml:55: Conflicting number of arguments (2) here Explanation for issues of type "StringFormatCount": When a formatted string takes arguments, it usually needs to reference the same arguments in all translations (or all arguments if there are no translations. There are cases where this is not the case, so this issue is a warning rather than an error by default. However, this usually happens when a language is not translated or updated correctly. Signed-off-by: iusmac <iusico.maxim@libero.it> * build(deps): bump Gradle and update deps (#93) * Bump Gradle to `v8.14.3` * Bump AGP plugin to `v8.13.2` * Extract AGP version from Toml file for `com.android.settings` plugin Unfortunately, we cannot use "alias()" in the "plugins {}" block to reuse the AGP version from gradle/libs.versions.toml file. Getting an error instead (happens only in settings.gradle script): only alias(libs.plugins.someAlias) plugin identifiers where libs is a valid version catalog * Suppress false positive `GradlePluginVersion` lint check /home/runner/work/7SIM/7SIM/settings.gradle:22: Error: You must use a newer version of the Android Gradle plugin. The minimum supported version is 4.0.0 and the recommended version is 8.13.2 [GradlePluginVersion] id 'com.android.settings' version "${apgVersion}" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Explanation for issues of type "GradlePluginVersion": Not all versions of the Android Gradle plugin are compatible with all versions of the SDK. If you update your tools, or if you are trying to open a project that was built with an old version of the tools, you may need to update your plugin version number. * Bump Roborazzi to `v1.54.0` * Downgrade AGP to `v8.11.2` The tests fail because our static BroadcastReceiver (AlarmReceiver) is not listed anymore in ShadowApplication.getRegisteredReceivers(). java.util.NoSuchElementException: No value present at java.base/java.util.Optional.get(Optional.java:143) at com.github.iusmac.sevensim.scheduler.AlarmReceiverTest.setUp(AlarmReceiverTest.java:97) After manual investigation, it seems that Robolectric can't load static <receiver> components from our AndroidManifest.xml file starting from AGP 8.12 or newer. * Fix typo in `settings.gradle` * Bump Mockito to `v5.21.0` * Bump Kover coverage library to `v0.9.4` * Bump `Error Prone` library to `v2.45.0` * Resolve `Error Prone` warnings/errors /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/Logger.java:111: warning: [AnnotateFormatMethod] This method uses a pair of parameters as a format string and its arguments, but the enclosing method wasn't annotated. Doing so gives compile-time rather than run-time protection against malformed format strings.     private static String format(String message, Object... args) {                           ^     (see https://errorprone.info/bugpattern/AnnotateFormatMethod) /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/SystemBroadcastReceiver.java:51: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d("onReceive() : intent=" + intent); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("onReceive() : intent=%s", intent);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/DirectBootAwareBroadcastReceiver.java:46: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d("onReceive() : intent=" + intent); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("onReceive() : intent=%s", intent);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/Subscriptions.java:76: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.v("onReceive() : intent=" + intent); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.v("onReceive() : intent=%s", intent);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/SubscriptionController.java:64: error: [FormatStringAnnotation] Local format string variables must only be assigned to compile time constant values. Invalid format string assignment: final String logPrefix = String.format(Locale.getDefault(), "setUiccApplicationsEnabled(subId=%d,enabled=%s)", subId, enabled) mLogger.d(logPrefix); ^ (see https://errorprone.info/bugpattern/FormatStringAnnotation) /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/SubscriptionController.java:69: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.e(logPrefix + " Aborting due to missing subscription."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.e("%s Aborting due to missing subscription.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:116: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.w(logPrefix + "Aborting due to Airplane mode."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.w("%sAborting due to Airplane mode.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:125: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d(logPrefix + "In sync block."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("%sIn sync block.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:131: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.e(logPrefix + "Aborting due to missing subscription."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.e("%sAborting due to missing subscription.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:137: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.w(logPrefix + "Already in state."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.w("%sAlready in state.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:202: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.w(logPrefix + "Acquire wait interrupted."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.w("%sAcquire wait interrupted.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:297: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. default -> mLogger.e(logPrefix + ". Unexpected resCode."); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'default -> mLogger.e("%s. Unexpected resCode.", logPrefix);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/telephony/TelephonyController.java:359: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d(logPrefix + ", requestFailed=%s,shouldNotifyAllListeners=%s", requestFailed, ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("%s, requestFailed=%s,shouldNotifyAllListeners=%s", logPrefix, requestFailed, shouldNotifyAllListeners);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/ui/scheduler/SchedulerViewModel.java:428: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d("onReceive() : intent=" + intent); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("onReceive() : intent=%s", intent);'? /home/runner/work/7SIM/7SIM/src/com/github/iusmac/sevensim/ui/sim/SimListActivity.java:154: warning: [FormatStringShouldUsePlaceholders] Using a format string avoids string concatenation in the common case. mLogger.d("onReceive() : intent=" + intent); ^ (see https://errorprone.info/bugpattern/FormatStringShouldUsePlaceholders) Did you mean 'mLogger.d("onReceive() : intent=%s", intent);'? --------- Signed-off-by: iusmac <iusico.maxim@libero.it>
1 parent a3b7bcb commit 4eea8dc

436 files changed

Lines changed: 209 additions & 98 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.

SettingsLib/ButtonPreference/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99
namespace 'com.android.settingslib.widget.preference.button'
1010

1111
defaultConfig {
12-
minSdk 21
12+
minSdk 23
1313
versionCode 1
1414
versionName "1.0"
1515
}

SettingsLib/CollapsingToolbarBaseActivity/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id 'com.android.library'
3+
id 'org.jetbrains.kotlin.android'
34
}
45

56
def SettingsLibCollapsingToolbarBaseActivity = '../fwb/packages/SettingsLib/CollapsingToolbarBaseActivity'

SettingsLib/LayoutPreference/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ android {
88
namespace 'com.android.settingslib.widget.preference.layout'
99

1010
defaultConfig {
11-
minSdk 21
11+
minSdk 23
1212
versionCode 1
1313
versionName "1.0"
1414
}

SettingsLib/SettingsTheme/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99
namespace 'com.android.settingslib.widget.theme'
1010

1111
defaultConfig {
12-
minSdk 21
12+
minSdk 23
1313
versionCode 1
1414
versionName "1.0"
1515
}

SettingsLib/SettingsThemeFlags/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ android {
66
namespace 'com.android.settingslib.widget.theme.flags'
77

88
defaultConfig {
9-
minSdk 21
9+
minSdk 23
1010
}
1111

1212
sourceSets {

SettingsLib/TwoTargetPreference/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ android {
88
namespace 'com.android.settingslib.widget.preference.twotarget'
99

1010
defaultConfig {
11-
minSdk 21
11+
minSdk 23
1212
versionCode 1
1313
versionName "1.0"
1414
}

SettingsLib/fetch.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ declare -r SHORT_OPTS=u:,t:
88
declare -r LONG_OPTS=set-repo-url:,set-repo-tag:,get-repo-url,get-repo-tag,apply-patches-only
99
declare -r FWB_DIR='fwb'
1010
declare REPO_URL='https://android.googlesource.com/platform/frameworks/base.git'
11-
declare REPO_TAG='android-16.0.0_r1'
11+
declare REPO_TAG='android-16.0.0_r4'
1212
declare -a LIBS=(
1313
'BannerMessagePreference'
1414
'ButtonPreference'

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ android {
160160
// Instead of failing the build due to missing translations, just inform us to avoid
161161
// mistakes during manual import
162162
informational 'MissingTranslation'
163+
disable 'GradlePluginVersion'
163164
}
164165

165166
dependenciesInfo {
@@ -267,6 +268,7 @@ dependencies {
267268
exclude group: 'org.hamcrest', module: 'hamcrest-core'
268269
}
269270

271+
implementation libs.errorprone.annotations
270272
errorprone libs.errorprone
271273
annotationProcessor libs.errorprone
272274
testAnnotationProcessor libs.errorprone

gradle/libs.versions.toml

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
# https://mvnrepository.com/artifact/androidx.room/room-runtime
77
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/room/room-compiler/
88
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/room/room-runtime/
9-
room = "2.7.0-beta01"
9+
room = "2.8.0-alpha01"
1010
# https://mvnrepository.com/artifact/com.google.dagger/hilt-android
1111
# https://mvnrepository.com/artifact/com.google.dagger/hilt-compiler
1212
# https://android.googlesource.com/platform/external/dagger2
1313
hilt = "2.55"
1414
# https://mvnrepository.com/artifact/io.github.takahirom.roborazzi/roborazzi
15-
roborazzi = "1.50.0"
15+
roborazzi = "1.54.0"
1616
# https://mvnrepository.com/artifact/androidx.test.espresso/espresso-core
1717
# https://mvnrepository.com/artifact/androidx.test.espresso/espresso-contrib
1818
espresso = "3.7.0"
@@ -22,21 +22,21 @@ espresso = "3.7.0"
2222
# ========================================
2323
# https://mvnrepository.com/artifact/com.android.application/com.android.application.gradle.plugin
2424
# https://mvnrepository.com/artifact/com.android.library/com.android.library.gradle.plugin
25-
agp = "8.10.1"
25+
agp = "8.11.2"
2626
# https://plugins.gradle.org/plugin/org.jetbrains.kotlin.android
2727
kotlin = "2.1.10"
28-
# https://mvnrepository.com/artifact/net.ltgt.errorprone/net.ltgt.errorprone.gradle.plugin
29-
errorprone = "4.2.0"
28+
# https://mvnrepository.com/artifact/com.google.errorprone/error_prone_core
29+
errorprone = "2.45.0"
3030
# https://mvnrepository.com/artifact/org.jetbrains.kotlinx/kover-gradle-plugin
31-
kover = "0.9.1"
31+
kover = "0.9.4"
3232

3333
[libraries]
3434
# https://mvnrepository.com/artifact/androidx.activity/activity
3535
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/activity/activity/
36-
activity = { module = "androidx.activity:activity", version = "1.11.0-alpha01" }
36+
activity = { module = "androidx.activity:activity", version = "1.12.0-alpha08" }
3737
# https://mvnrepository.com/artifact/androidx.annotation/annotation
3838
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/annotation/annotation-jvm/
39-
annotation = { module = "androidx.annotation:annotation", version = "1.9.0-rc01" }
39+
annotation = { module = "androidx.annotation:annotation", version = "1.9.1" } # TODO: AOSP sources use 1.11.0-alpha01; upgrade when available in Maven Central
4040
# https://mvnrepository.com/artifact/androidx.appcompat/appcompat
4141
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/appcompat/appcompat/
4242
appcompat = { module = "androidx.appcompat:appcompat", version = "1.7.1" } # TODO: AOSP sources use 1.8.0-alpha01; upgrade when available in Maven Central }
@@ -46,18 +46,18 @@ arch-core-testing = { module = "androidx.arch.core:core-testing", version = "2.2
4646
awaitility = { module = "org.awaitility:awaitility", version = "4.3.0" }
4747
# https://mvnrepository.com/artifact/androidx.biometric/biometric
4848
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/biometric/biometric/
49-
biometric = { module = "androidx.biometric:biometric", version = "1.4.0-alpha02" }
49+
biometric = { module = "androidx.biometric:biometric", version = "1.4.0-alpha04" }
5050
# https://mvnrepository.com/artifact/androidx.collection/collection
5151
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/collection/collection-jvm/
52-
collection = { module = "androidx.collection:collection", version = "1.5.0-beta03" }
52+
collection = { module = "androidx.collection:collection", version = "1.5.0" }
5353
# https://mvnrepository.com/artifact/androidx.coordinatorlayout/coordinatorlayout
5454
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/coordinatorlayout/coordinatorlayout/
5555
coordinatorlayout = { module = "androidx.coordinatorlayout:coordinatorlayout", version = "1.3.0-alpha02" }
5656
# https://mvnrepository.com/artifact/androidx.core/core
5757
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/core/core/
58-
core = { module = "androidx.core:core", version = "1.16.0-beta01" }
59-
# https://mvnrepository.com/artifact/com.google.errorprone/error_prone_core
60-
errorprone = { module = "com.google.errorprone:error_prone_core", version = "2.42.0" }
58+
core = { module = "androidx.core:core", version = "1.17.0" } # TODO: AOSP sources use 1.19.0-alpha01; upgrade when available in Maven Central }
59+
errorprone = { module = "com.google.errorprone:error_prone_core", version.ref = "errorprone" }
60+
errorprone-annotations = { module = "com.google.errorprone:error_prone_annotations", version.ref = "errorprone" }
6161
# https://mvnrepository.com/artifact/androidx.test.espresso/espresso-core
6262
espresso = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" }
6363
espresso-contrib = { module = "androidx.test.espresso:espresso-contrib", version.ref = "espresso" }
@@ -70,12 +70,12 @@ hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hil
7070
junit = { module = "junit:junit", version = "4.13.2" }
7171
# https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-livedata
7272
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/lifecycle/lifecycle-livedata/
73-
livedata = { module = "androidx.lifecycle:lifecycle-livedata", version = "2.9.0-alpha12" }
73+
livedata = { module = "androidx.lifecycle:lifecycle-livedata", version = "2.10.0-alpha04" }
7474
# https://mvnrepository.com/artifact/com.google.android.material/material
7575
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/extras/material-design-x/com/google/android/material/material/
76-
material = { module = "com.google.android.material:material", version = "1.13.0-alpha08" }
76+
material = { module = "com.google.android.material:material", version = "1.14.0-alpha02" }
7777
# https://mvnrepository.com/artifact/org.mockito/mockito-core
78-
mockito = { module = "org.mockito:mockito-core", version = "5.20.0" }
78+
mockito = { module = "org.mockito:mockito-core", version = "5.21.0" }
7979
# https://mvnrepository.com/artifact/androidx.preference/preference
8080
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/preference/preference/
8181
preference = { module = "androidx.preference:preference", version = "1.2.1" } # TODO AOSP sources use 1.3.0-alpha01; upgrade when available in Maven Central }
@@ -101,12 +101,13 @@ test-rules = { module = "androidx.test:rules", version = "1.7.0" }
101101
test-runner = { module = "androidx.test:runner", version = "1.7.0" }
102102
# https://mvnrepository.com/artifact/androidx.lifecycle/lifecycle-viewmodel
103103
# https://android.googlesource.com/platform/prebuilts/sdk/+/refs/heads/main/current/androidx/m2repository/androidx/lifecycle/lifecycle-viewmodel-android/
104-
viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version = "2.9.0-alpha12" }
104+
viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel", version = "2.10.0-alpha04" }
105105

106106
[plugins]
107107
android-application = { id = "com.android.application", version.ref = "agp" }
108108
android-library = { id = "com.android.library", version.ref = "agp" }
109109
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
110-
errorprone = { id = "net.ltgt.errorprone", version.ref = "errorprone" }
110+
# https://mvnrepository.com/artifact/net.ltgt.errorprone/net.ltgt.errorprone.gradle.plugin
111+
errorprone = { id = "net.ltgt.errorprone", version = "4.2.0" }
111112
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
112113
roborazzi = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

0 commit comments

Comments
 (0)