Is the dependency safe to upgrade?

Gradle

1
gradle wrapper --gradle-version 

Disable Reformat Code before committing

Note, you need to run this command twice to upgrade both Gradle and the Gradle Wrapper itself

https://gradle.org/releases/

  • 8.13: ✔

  • 8.11.1: ✔

  • 8.10.2: ✔

  • 8.8: ✔(Kotlin 1.9)

  • 8.2.1: ✔

  • 8.1.1: ✔

    • Configuration cache stable(requires Kotlin 1.8 and sourceCompatibility, etc.)

      1
      2
      3
      4
      5
      6
      7
      compileOptions {
      sourceCompatibility = JavaVersion.VERSION_17
      targetCompatibility = JavaVersion.VERSION_17
      }
      kotlinOptions {
      jvmTarget = JavaVersion.VERSION_17.toString()
      }
  • 8.0.2: ✔

  • 7.5.1: ✔

Kotlin

Google

  • com.android.tools.build:gradle(& Android Studio)

    What's New in Android Studio has more release notes.

  • androidx.appcompat:appcompat

    • 1.7.0: ✔

    • 1.6.1: ✔

      • AppCompatDelegate.setApplicationLocales(LocaleListCompat)
    • 1.5.1: ✔(Android 13(33))

    • 1.4.2: ✔

    • 1.4.1: ✔(Android 12(31))

    • 1.3.1: ✔

  • androidx.activity:activity

    • 1.10.1: ??(Android 15(35))

      • LocalActivity
    • 1.9.3: ✔

    • 1.9.2: ✔

    • 1.9.1: ✔

    • 1.9.0: ✔

      • OnUserLeaveHintProvider
      • APIs now warn when calling onBackPressedDispatcher.onBackPressed()
      • activity-ktx is now completely empty.
    • 1.8.1: -

      • ComponentActivity.enableEdgeToEdge() has been added to easily set up the edge-to-edge display in a backward-compatible manner.
    • 1.7.2: ✔(Kotlin 1.8, Compose 2023.06.01)

  • androidx.fragment:fragment

    • 1.8.6: ✔

    • 1.8.5: ✔

    • 1.8.4: ✔

    • 1.8.2: ✔

      • Composable(fragment-compose): AndroidFragment
    • 1.7.1: ✔

    • 1.7.0: ✔

    • 1.6.2: ✔

    • 1.6.1: ✔

    • 1.5.6: ✔

    • 1.4.1: ✔(Android 12(31))

      • FragmentContainerView.getFragment
    • 1.3.6: ✔

  • androidx.lifecycle:lifecycle

    • 2.8.7: ✔

    • 2.8.6: ⬆(Compose 1.7)

    • 2.8.4: ✔

    • 2.8.2: ✔

      • LocalLifecycleOwner => androidx.lifecycle:lifecycle-runtime-compose
      • onClick: () -> Unit = dropUnlessResumed/Started { navController.navigate(NEW_SCREEN) }
      • ViewModel.viewModelScope is now an overridable constructor parameter, allowing you to inject your own dispatcher
    • 2.7.0: ✔(Android 14(34))

      • Read Important changes since 2.6.0
      • LiveData.map, switchMap
      • SavedStateHandle, Array<CustomParcelable>
      • LifecycleEventEffect, LifecycleStartEffect, LifecycleResumeEffect
    • 2.6.2: ✔

    • 2.6.1: ✔(Kotlin 1.8)

      • LiveData.isInitialized
      • Lifecycle.launchWhenX
      • If you want Observer.onChanged() to accept a nullable type, you must instantiate the Observer with a nullable type.
    • 2.5.1: ✔

    • 2.4.1: ✔(Android 12(31))

      • lifecycle-common-java8
    • 2.3.1: ✔

  • androidx.core:core-ktx

    • 1.16.0: ??

      • JSpecify nullness annotations
    • 1.15.0: 🚧(Android 15(35))

    • 1.13.1: ✔

    • 1.12.0: ✔(Android 14(34))

      • New LocalePreferences APIs to help developers to easily access locale data or user’s locale preferences.
      • Added LinkMovementMethodCompat that fixes link touch handling
      • Added a SoftwareKeyboardControllerCompat to provide direct methods to show and hide the software keyboard given a View.
    • 1.10.1: ✔(Kotlin 1.8)

      • Adds compatibility methods for new APIs introduced in Android 13 for Parcels, Bundles, and Intents.
    • 1.9.0: ✔(Android 13(33))

    • 1.8.0: ✔

    • 1.7.0: ✔(Android 12(31))

    • 1.6.0: ✔

  • androidx.collection:collection-ktx

    • 1.5.0: ??

      • SieveCache is a new allocation-free replacement for LruCache that offers better hit ratio characteristics.
    • 1.4.5: ✔

    • 1.4.4: ✔

    • 1.4.3: ✔

    • 1.4.0: ✔

      • ScatterMap, ScatterSet, and ObjectList.
    • 1.3.0: ✔

      • You can safely drop any dependencies on collection:collection-ktx in favor of collection:collection as collection-ktx is now empty.
      • ArrayMap.isEmpty -> ArrayMap.isEmpty()
    • 1.2.0: ✔

  • com.android.tools:desugar_jdk_libs

    • 2.1.3: ❌(AGP 8.0)

      • java.lang.IllegalArgumentException: this and base files have different roots
    • 2.0.4: ✔

    • 2.0.3: ✔(AGP 7.4)

    • 1.2.2: ✔(AGP 7.3, Android 13(33))

    • 1.1.5: ✔

      • getDisplayName doesn’t work.
  • androidx.constraintlayout:constraintlayout

    • 2.2.1: ✔

    • 2.2.0: ✔

    • 2.1.4: ✔

      • Gone<->Visible components are now animated as expected

  • androidx.constraintlayout:constraintlayout-compose

    • 1.1.1: ✔
    • 1.1.0: ✔(Compose 1.7)
      • ! Dimension.ratio only allows W:H
    • 1.0.1: ✔
  • androidx.recyclerview:recyclerview

    • 1.4.0: ??(Android 15)

    • 1.3.2: ✔ Depending on a beta viewpager2

    • 1.3.0: ✔

      • ConcatAdapter.getWrappedAdapterAndPosition
    • 1.2.1: ✔

  • androidx.viewpager2:viewpager2

    • 1.1.0: ✔
    • 1.0.0: ✔
  • androidx.navigation:navigation

    • 2.8.6: ✔

    • 2.8.5: ✔

    • 2.8.4: ✔(Compose 1.7)

      • Navigation Kotlin DSL Type-Safety(used by Navigation Compose)
      • navigation-fragment-compose: <composable android:id="@+id/home_screen"...
    • 2.7.7: ✔(Android 14(34))

    • 2.5.3: ✔

    • 2.4.2: ✔

    • 2.3.5: ✔

  • androidx.room:room

  • androidx.preference:preference

    • 1.2.1: ✔
    • 1.1.1: ✔
  • androidx.work:work

    • 2.10.0: 🚧(Android 15(35))

    • 2.9.1: ✔

    • 2.9.0: ✔(Android 14(34))

      • work-runtime-ktx is now empty.
      • override val workManagerConfiguration: androidx.work.Configuration
    • 2.8.1: ✔(Kotlin 1.7.21)

    • 2.7.1: ✔(Android 12(31))

    • 2.6.0: ✔

  • androidx.startup:startup

    • 1.2.0: ✔
    • 1.1.1: ✔
  • androidx.media3

    • 1.4.1: ✔
  • androidx.security:security-crypto

    • 1.1.0-alpha06: ✔
    • 1.1.0-alpha03: ✔
  • androidx.swiperefreshlayout:swiperefreshlayout

    • 1.1.0: ✔
  • androidx.exifinterface:exifinterface

    • 1.4.0: ??
    • 1.3.7: ✔
    • 1.3.6: ✔
  • androidx.window:window

    • 1.3.0: ✔

      • WindowSizeClass
    • 1.2.0: ✔

    • 1.1.0: ✔

    • 1.0.0: ✔

  • androidx.datastore

    • 1.1.2: ❌
  • Jetpack Compose

    • Compose Compiler Plugin to Kotlin version

    • BOM to library version mapping

    • 2025.02.00, 2025.03.01: ✔(Compose 1.7.8)

    • 2024.12.01: ✔(Compose 1.7.6)

    • 2024.11.00: ✔(Compose 1.7.5)

      • Apply AppCompatDelegate.setDefaultNightMode
      • LocalRippleTheme -> LocalRippleConfiguration
      • windowInsets = -> contentWindowInsets =
      • CoordinatorLayout
    • 2023.06.01: ✔(Compose UI 1.4 + Kotlin 1.8.22 + Compose Compiler Plugin 1.4.8 + accompanist 0.30.1)

  • com.google.android.material:material

    • 1.9.0: ??

      Set the background color:

      1
      2
      3
      4
      5
      <style name="AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
      <item name="elevationOverlayEnabled">false</item>
      <item name="android:colorBackground">#FFF</item>
      <item name="colorSurface">#FFF</item>
      </style>
    • 1.4.0: ✔

  • com.google.android.flexbox:flexbox

    • 3.0.0: ✔
  • com.google.dagger:dagger

    • 2.55: ✔
    • 2.52: ✔
    • 2.51.1: ✔
    • 2.50: ✔(Hilt Kotlin 1.9)
    • 2.47: ✔
    • 2.46.1: ✔
    • 2.45: ✔
    • 2.44.2: ✔
    • 2.41: ✔
    • 2.40.5: ✔
  • androidx.hilt:hilt-navigation-fragment

    • 1.2.0: ✔(Android 1.9)
    • 1.0.0: ✔
  • androidx.hilt:hilt-work

    • 1.2.0: ✔(Android 1.9)
    • 1.0.0: ✔
  • androidx.hilt:hilt-compiler

    • 1.2.0: ✔(Android 1.9)
    • 1.0.0: ✔
  • com.android.billingclient:billing

    • 7.0.0: 🚧(Android 14(34))

      • enablePendingPurchases() => enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
      • BillingClient.queryPurchaseHistoryAsync()
    • 6.2.1: ✔

    • 6.0.1: ✔

    • 4.1.0: ✔

    • 3.0.2: ✔

  • com.google.android.gms:play-services-ads

    • 22.2.0: ✔
    • 21.4.0: ✔
    • 20.6.0: ✔
  • com.google.android.gms:play-services-auth

    • 21.1.1: 🚧

    • 21.0.0: ❗

      • Removed Credentials API. Replaced by Credential Manager.
    • 20.6.0: ✔

    • 20.2.0: ✔

Third-party

Chinese