Is the dependency safe to upgrade?
Gradle
| 1 | gradle wrapper --gradle-version= | 
Note, you need to run this command twice to upgrade both Gradle and the Gradle Wrapper itself
- 9.0.0: ??(Java 17, Kotlin 2.2) The whole community isn’t ready yet 
- 8.14.3: ✔ 
- 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
- org.jetbrains.kotlin:kotlin - 2.1.21: ✔ - KSPrequired for- moshi,- room, and- androidx.hilt
 
- 2.0.21: ✔ 
- 2.0.0: ⬆ - Compose Compiler Gradle plugin
- Add the .kotlindirectory to your project’s.gitignorefile.
- enumValues<T>()->- enumEntries<T>()
- Stable AutoCloseableinterface
 
- 1.9.25: ✔ - Enum.values()->- Enum.entries
- data object EndOfFile : ReadResult
- ..<
 
- 1.8.22: ✔ - kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8 -> kotlin-stdlib
- kotlinx-android-extension
 
- 1.7.20: ✔ - T & Any
- min()and- max()throw exceptions if empty
- DeepRecursiveFunction
- sam-with-receiver plugin
 
- 1.6.21: ✔ 
- 1.6.10: ✔ - buildList,- buildSet, and- buildMap
 
- 1.5.31: ✔ 
 
- org.jetbrains.kotlinx:kotlinx-coroutines - 1.10.2: ✔(Kotlin 2.1) 
- 1.9.0: ✔(Kotlin 2.0) 
- 1.8.1: ✔ 
- 1.8.0: ✔(Kotlin 1.9) 
- 1.7.3: ✔ 
- 1.7.1: ✔(Kotlin 1.8) - TestCoroutineScheduler,- runTest, and- TestScopeAPI are promoted to stable
 
- 1.6.4: ✔ 
- 1.5.2: ✔ 
 
- org.jetbrains.kotlinx:kotlinx-collections-immutable - 0.3.8: ✔
- 0.3.7: ✔
- 0.3.5: ✔
 
- 
- 2.1.21-2.0.2: ✔
 
- com.android.tools.build:gradle(& Android Studio) - What's Newin Android Studio has more release notes.- 8.13.0(Narwhal 4 Feature Drop | 2025.1.4, Gradle 8.13): ?? 
- 8.13.0(Narwhal 3 Feature Drop | 2025.1.3, Gradle 8.13): ✔ 
- 8.12.2(Narwhal 2025.1.2, Gradle 8.13): ❌(Mysterious 8.12.3) - Studio Labs
- Gemini in Android Studio’s Agent Mode
- 16 KB page size support
- Partner Device Labs available with Android Device Streaming
- K2 mode by default: ❗ No warnings on deprecated fields
 
- 8.10.1(Meerkat 2024.3.2, Gradle 8.11.1): ✔ 
- 8.8.2(Ladybug 2024.2.2, Gradle 8.10.2): ✔ 
- 8.6.1(Koala 2024.1.2, Gradle 8.7): ✔ Lots of bugs, but at least usable. 
- 8.4.2(JellyFish 2023.3.1, Gradle 8.6): ❌ Broken Logcat and ADB Wifi 
- 8.3.2(Iguana 2023.2.1, Gradle 8.4, JDK 17, Maxium API Level 34): ✔ 
- 8.2.2(Hedgehog 2023.1.1): ✔ 
- 8.1.4(Giraffe): Skipped - ❗ Upgrade all dependencies to the latest first 
- 🤔 Proguard removes empty constructors? - 1 
 2
 3- -keepclassmembers class * extends foo.bar.Class { 
 <init>();
 }
 
- 8.0.2(Flamingo, 2022.2.1): ✔ - 🟠 Retrofit After enable R8 full mode getting ParameterizedType error Gone in retrofit 2.11.0
- 🟠 Proguard Rules (OkHttp 4.7.2) Gone in okhttp 4.12.0
- AGP Upgrade Assistant 👍
- JDK 17 required to run AGP 8.0
 
- 7.4.2: ❌ Broken - New Logcat
 
- 7.3.1: ✔ - Since 7.1.3: 
- 7.2.2: ❌ Basically broken 
- 7.1.3: ✔ 
- 7.0.4: ✔ 
 
- 
- 1.7.1: ✔ 
- 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: ✔ 
 
- 
- 1.11.0: ??(Android 16(36)) 
- 1.10.1: ✔(Android 15(35)) - LocalActivity
 
- 1.9.0: ✔ - OnUserLeaveHintProvider
- APIs now warn when calling onBackPressedDispatcher.onBackPressed()
- activity-ktxis 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) 
 
- 
- 1.8.9: ✔ 
- 1.8.8: ✔ 
- 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: ✔ 
 
- 
- 2.9.4: ✔ 
- 2.9.1: ✔ - SavedStateHandle.getMutableStateFlow
- KotlinX Serialization Support
 
- 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.viewModelScopeis 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 theObserverwith a nullable type.
 
- 2.5.1: ✔ 
- 2.4.1: ✔(Android 12(31)) - lifecycle-common-java8
 
- 2.3.1: ✔ 
 
- 
- 1.17.0: ✔ 
- 1.16.0: ✔ - JSpecify nullness annotations
- KTX- Bitmap.createBitmap
- Bitmap.createScaledBitmap
- Color.parseColor
- BitmapDrawable(
- .getPixel
- .childCount
- .edit()
- ColorDrawable
 
 
- 1.15.0: ^(Android 15(35)) 
- 1.13.1: ✔ 
- 1.12.0: ✔(Android 14(34)) - New LocalePreferencesAPIs to help developers to easily access locale data or user’s locale preferences.
- Added LinkMovementMethodCompatthat fixes link touch handling
- Added a SoftwareKeyboardControllerCompatto provide direct methods to show and hide the software keyboard given a View.
 
- New 
- 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: ✔ - SieveCacheis a new allocation-free replacement for- LruCachethat offers better hit ratio characteristics.
 
- 1.4.5: ✔ 
- 1.4.0: ✔ - ScatterMap,- ScatterSet, and- ObjectList.
 
- 1.3.0: ✔ - You can safely drop any dependencies on collection:collection-ktxin favor ofcollection:collectionascollection-ktxis now empty.
- ❗ ArrayMap.isEmpty->ArrayMap.isEmpty()
 
- You can safely drop any dependencies on 
- 1.2.0: ✔ 
 
- com.android.tools:desugar_jdk_libs - 2.1.5: ✔ 
- 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: ✔ - getDisplayNamedoesn’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.ratioonly allowsW: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.9.5: ?? 
- 2.9.4: ?? 
- 2.9.3: ✔ 
- 2.9.1: ✔ 
- 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: ✔ 
 
- 
- 2.8.3: ?? 
- 2.8.1: ✔ 
- 2.7.2: ✔(Kotlin 2.1) 
- 2.6.1: ✔(Android 14(34)) 
- 2.5.2: ✔ 
- 2.4.3: ✔(Kotlin 1.7) 
- 2.4.1: ✔(Android 12(31)) - Auto Migrations👍
 
- 2.3.0: ✔ 
 
- androidx.preference:preference - 1.2.1: ✔
- 1.1.1: ✔
 
- 
- 2.10.3: ❌ 
- 2.10.2: ❌ 
- 2.10.1: ✔(Android 15(35)) 
- 2.9.1: ✔ 
- 2.9.0: ✔(Android 14(34)) - work-runtime-ktxis now empty.
- override val workManagerConfiguration: androidx.work.Configuration
 
- 2.8.1: ✔(Kotlin 1.7.21) 
- 2.7.1: ✔(Android 12(31)) 
- 2.6.0: ✔ 
 
- 
- 1.2.0: ✔
- 1.1.1: ✔
 
- 
- 1.8.0: ✔- ExoPlayer.setScrubbingModeEnabled(boolean)
- DefaultEncoderFactory.setEnableCodecDbLite
- Filling an initial gap (added via addGap()) with silent audio now requires explicitly settingexperimentalSetForceAudioTrack(true)inEditedMediaItemSequence.Builder.
 
- 1.6.1, 1.7.1: ✔
- 1.4.1: ✔
 
- 1.8.0: ✔
- androidx.security:security-crypto - 1.1.0-alpha06: ✔
- 1.1.0-alpha03: ✔
 
- androidx.swiperefreshlayout:swiperefreshlayout - 1.1.0: ✔
 
- androidx.exifinterface:exifinterface - 1.4.1: ✔
- 1.3.7: ✔
- 1.3.6: ✔
 
- 
- 1.4.0: ✔ 
- 1.3.0: ✔ - WindowSizeClass
 
- 1.2.0: ✔ 
- 1.1.0: ✔ 
- 1.0.0: ✔ 
 
- 
- 1.1.7: ??
- 1.1.2: ❌
 
- 
- 2025.10.01: ??(Compose 1.9.4) 
- 2025.10.00: ??(Compose 1.9.3) 
- 2025.09.01: ✔(Compose 1.9.2, Lifecycle 2.9.4) 
- 2025.08.01: ✔(Compose 1.9.0) - ❗ ViewCompat.setOnApplyWindowInsetsListenerdoesn’t work onComposeView
- LocalIndication provides:- IndicationNodeFactory
- Modifier.dropShadow()and- Modifier.innerShadow()
- Modifier.onVisibilityChangedand- Modifier.onFirstVisible
- rememberLazyListState(cacheWindow = LazyLayoutCacheWindow())
- OutputTransformation
- Modifier.scrollable2D
 
- ❗ 
- 2025.06.01, 2025.07.00: ✔(Compsoe 1.8.3) 
- 2025.06.00: ✔(Compose 1.8.2) - Modifier.semantics { contentType = ContentType.Username }
- autoSize = TextAutoSize.StepBased()
- Modifier.onLayoutRectChanged
- LocalOverscrollConfiguration->- LocalOverscrollFactory
- LocalConfiguration.current.screenWidthDp->- LocalWindowInfo.current.containerSize
- ContextualFlowRowand- ContextualFlowColumn
 
- 2025.04.01: ⬆️(Android 15, Compose 1.8) 
- 2025.04.00: ⬆️ 
- 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
 
- Apply 
- 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: ✔
 
- 
- 2.57.1: ??
- 2.56.2: ✔(Kotlin 2.1)
- 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-* - 1.3.0: ✔
- 1.2.0: ✔(Android 1.9)
- 1.0.0: ✔
 
- com.android.billingclient:billing - 7.1.1: ✔(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
- 
- 4.12.0: ✔(Kotlin 1.9) - No more proguard rules
 
- 4.11.0: ✔ 
- 4.10.0: ✔ 
- 4.9.3: ✔ 
 
- com.squareup.retrofit2:retrofit - 3.0.0: ✔ 
- 2.11.0: ✔ - No more proguard rules
 
- 2.9.0: ✔ 
 
- 
- 1.15.2: ✔ 
- 1.15.1: ✔(Kotlin 1.9) 
- 1.15.0: ✔(Kotlin 1.8) 
- 1.14.0: ✔(Kotlin 1.7, Android 13(33)) - No more android.jetifier.ignorelist=moshi-1.13.0
 
- No more 
- 1.13.0: ✔ - Kotlin 1.6.0
- AGP 7.0.x(and 7.1.x?): android.jetifier.ignorelist=moshi-1.13.0ingradle.properties
 
- 1.12.0: ✔ 
 
- 
- 3.15.0: ✔
- 3.10.2: ⬆️(Kotlin 2.1)
- 3.9.1: ✔
- 3.9.0: ✔(Kotlin 1.9)
- 3.3.0: ✔(Kotlin 1.8)
- 3.2.0: ✔
- 2.10.0: ✔
 
- com.squareup.leakcanary:leakcanary-android-startup - 2.14: ✔
- 2.13: ✔
- 2.12: ✔
- 2.10(Android 13(33)): ✔
- 2.9.1: ✔
 
- com.jakewharton.timber:timber - 5.0.1: ✔
 
- 
- 4.16.0: ✔
- 4.15.1: ✔
- 4.14.2: ✔(Android 13(33))
- 4.13.2: ✔
- 4.12.0: ✔
 
- 
- 3.2.0: ✔(Kotlin 2.1)
- 2.7.0: ⬆️(Kotlin 2.0)
- 2.5.0: ⬆️(Kotlin 1.9, Android 14(34))
- 2.4.0: ✔
 
- 
- 6.5.2: 🚧(ImageAssetManager NPE Fixed) 
- 6.1.0+: ❌ ImageAssetManager NPE 
- 6.0.1: ✔ - Allow animations in zip files to contain embedded base64 encoded images
 
- 5.2.0: ✔ 
- 5.0.3: ✔ 
- 4.2.2: ✔ 
 
- com.github.chuckerteam.chucker:library - 4.1.0: ??
- 4.0.0: ✔(Material 1.9.0)
- 3.5.2: ✔
 
- com.evernote:android-job - 1.4.2: ✔(Doesn’t work on Android 12(31))
 
- pub.devrel:easypermissions - 3.0.0: ✔
 
- 
- 5.7.0: ✔(Kotlin 1.7, Android 13(33))
- 5.6.0: ✔(Android 12(31))
- 5.5.1: ✔
 
- 
- 3.3.1: ✔
- 3.2.0: ✔
 
- 
- 2.11.5: ✔
- 2.10.0: ✔(UTF-8 Support)
- 2.9.1: ✔
 
- com.github.kizitonwose:CalendarView - 1.0.4: ✔(java.time)
- 0.3.5: ✔(ThreeTenABP)
 
- com.github.ben-manes:gradle-versions-plugin - 0.52.0: ✔
- 0.51.0: ✔
- 0.50.0: ✔
 
- com.dropbox.dependency-guard:dependency-guard - 0.5.0: ✔
- 0.4.3: ✔
- 0.3.2: ✔
 
- 
- 13.2.0: ! - The client token is now mandatory. SDK initialization will have a check on it and throw out an exception if the client token is not available. 
- 13.1.0: ✔ 
 
- pl.droidsonroids.gif:android-gif-drawable - 1.2.29: ✔(Kotlin 2.0)
- 1.2.28: ✔
- 1.2.25: ✔
 
- 
- 0.1.1: 🚧(Android 15(35))
- 0.1.0: ✔
 
Chinese
- 
- 4.1.9.3: ✔ 
- 4.1.9.2: ✔ 
- 4.0.4: ✔ - Requires setting deviceID,deviceModel,setIsDevelopmentDeviceandcloseNativeReportmanually
 
- Requires setting 
- 3.4.4: ✔ 
 
- 
- 9.8.8: ✔
- 9.8.5: ✔
- 9.8.0: ✔
- 9.7.5: ✔
- 9.6.8: ✔
- 9.5.2: ✔
- 9.4.7: ✔
- 9.4.5, 9.4.6: ❌ broken
- 9.4.4: ✔
 
- com.umeng.umsdk:asms - 1.8.7.2: ✔
- 1.8.6: ✔
- 1.8.3: ✔
- 1.6.3: ✔
- 1.4.1: ✔
 
- com.umeng.umsdk:share - 7.3.7: ✔
- 7.3.5: ✔
- 7.3.4: ✔
- 7.2.0: ✔
- 7.1.7: ✔
 
- com.umeng.umsdk:apm - 2.0.6: ??
- 2.0.4: ✔
 
- com.tencent.mm.opensdk:wechat-sdk-android-without-mta: Deprecated - 6.8.0: ✔
 
- com.tencent.mm.opensdk:wechat-sdk-android - 6.8.34: ✔
 
- 
- 8.9.1: ✔
- 8.8.0: ✔
- 8.7.0: ✔- ❗ android.permission.READ_PHONE_STATE
 
- ❗ 
- 8.5.2: ✔
- 8.4.4: ✔
- 8.0.3: ✔(APK bloats afterwards)
 
- com.github.Meituan-Dianping.walle:library - 1.1.7: ✔
- 1.1.6: ✔
 
- com.alipay.sdk:alipaysdk-android - 15.8.35: ✔
- 15.8.33: ✔
- 15.8.17: ✔
- 15.8.16: ✔
- 15.8.14: ✔
- 15.8.11: ✔
 
- QQ、穿山甲需要手动添加