From 220315737f688206c3d62a90a201bdcb1687b110 Mon Sep 17 00:00:00 2001 From: Simonx22 Date: Tue, 11 Nov 2025 16:48:12 -0500 Subject: [PATCH] Android: Update dependencies Note: This also updates Kotlin to 2.2.21 which requires small adjustments in our Kotlin code. --- Source/Android/app/build.gradle.kts | 33 ++++++++++--------- .../dolphinemu/adapters/GameRowPresenter.kt | 2 +- .../adapters/SettingsRowPresenter.kt | 2 +- .../viewholders/TvGameViewHolder.kt | 2 +- Source/Android/benchmark/build.gradle.kts | 6 ++-- Source/Android/build.gradle.kts | 8 ++--- .../gradle/wrapper/gradle-wrapper.properties | 3 +- 7 files changed, 29 insertions(+), 27 deletions(-) diff --git a/Source/Android/app/build.gradle.kts b/Source/Android/app/build.gradle.kts index 54a12a6058c..dff980e170d 100644 --- a/Source/Android/app/build.gradle.kts +++ b/Source/Android/app/build.gradle.kts @@ -122,35 +122,36 @@ android { dependencies { baselineProfile(project(":benchmark")) - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") - implementation("androidx.core:core-ktx:1.13.0") - implementation("androidx.appcompat:appcompat:1.6.1") + implementation("androidx.core:core-ktx:1.17.0") + implementation("androidx.appcompat:appcompat:1.7.1") implementation("androidx.cardview:cardview:1.0.0") - implementation("androidx.recyclerview:recyclerview:1.3.2") - implementation("androidx.constraintlayout:constraintlayout:2.1.4") - implementation("androidx.fragment:fragment-ktx:1.6.2") + implementation("androidx.recyclerview:recyclerview:1.4.0") + implementation("androidx.constraintlayout:constraintlayout:2.2.1") + implementation("androidx.fragment:fragment-ktx:1.8.9") implementation("androidx.slidingpanelayout:slidingpanelayout:1.2.0") - implementation("com.google.android.material:material:1.11.0") - implementation("androidx.core:core-splashscreen:1.0.1") + implementation("com.google.android.material:material:1.13.0") + implementation("androidx.core:core-splashscreen:1.2.0") implementation("androidx.preference:preference-ktx:1.2.1") - implementation("androidx.profileinstaller:profileinstaller:1.3.1") + implementation("androidx.profileinstaller:profileinstaller:1.4.1") // Kotlin extensions for lifecycle components - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") + implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.4") // Android TV UI libraries. - implementation("androidx.leanback:leanback:1.0.0") - implementation("androidx.tvprovider:tvprovider:1.0.0") + implementation("androidx.leanback:leanback:1.2.0") + implementation("androidx.tvprovider:tvprovider:1.1.0") + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") // For loading game covers from disk and GameTDB - implementation("io.coil-kt:coil:2.6.0") + implementation("io.coil-kt:coil:2.7.0") // For loading custom GPU drivers - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2") implementation("com.nononsenseapps:filepicker:4.2.1") } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt index 754c0898769..4f43601e685 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.kt @@ -41,7 +41,7 @@ class GameRowPresenter : Presenter() { return TvGameViewHolder(gameCard) } - override fun onBindViewHolder(viewHolder: ViewHolder, item: Any) { + override fun onBindViewHolder(viewHolder: ViewHolder, item: Any?) { val holder = viewHolder as TvGameViewHolder val context = holder.cardParent.context val gameFile = item as GameFile diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/SettingsRowPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/SettingsRowPresenter.kt index c52039c5b26..f67a23e2da0 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/SettingsRowPresenter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/SettingsRowPresenter.kt @@ -25,7 +25,7 @@ class SettingsRowPresenter : Presenter() { return TvSettingsViewHolder(settingsCard) } - override fun onBindViewHolder(viewHolder: ViewHolder, item: Any) { + override fun onBindViewHolder(viewHolder: ViewHolder, item: Any?) { val holder = viewHolder as TvSettingsViewHolder val context = holder.cardParent.context val settingsItem = item as TvSettingsItem diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/TvGameViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/TvGameViewHolder.kt index 6fc5adbfa75..9c868eeca9e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/TvGameViewHolder.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/viewholders/TvGameViewHolder.kt @@ -22,6 +22,6 @@ class TvGameViewHolder(itemView: View) : Presenter.ViewHolder(itemView) { init { itemView.tag = this cardParent = itemView as ImageCardView - imageScreenshot = cardParent.mainImageView + imageScreenshot = cardParent.mainImageView!! } } diff --git a/Source/Android/benchmark/build.gradle.kts b/Source/Android/benchmark/build.gradle.kts index fbc4f1105a5..06267c42e56 100644 --- a/Source/Android/benchmark/build.gradle.kts +++ b/Source/Android/benchmark/build.gradle.kts @@ -45,8 +45,8 @@ baselineProfile { } dependencies { - implementation("androidx.test.ext:junit:1.1.5") - implementation("androidx.test.espresso:espresso-core:3.5.1") + implementation("androidx.test.ext:junit:1.3.0") + implementation("androidx.test.espresso:espresso-core:3.7.0") implementation("androidx.test.uiautomator:uiautomator:2.3.0") - implementation("androidx.benchmark:benchmark-macro-junit4:1.2.4") + implementation("androidx.benchmark:benchmark-macro-junit4:1.4.1") } diff --git a/Source/Android/build.gradle.kts b/Source/Android/build.gradle.kts index f4e5a5f41fd..2c39f29bd21 100644 --- a/Source/Android/build.gradle.kts +++ b/Source/Android/build.gradle.kts @@ -1,9 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.13.0" apply false - id("com.android.library") version "8.13.0" apply false - id("org.jetbrains.kotlin.android") version "1.8.21" apply false - id("com.android.test") version "8.13.0" apply false + id("com.android.application") version "8.13.1" apply false + id("com.android.library") version "8.13.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.21" apply false + id("com.android.test") version "8.13.1" apply false id("androidx.baselineprofile") version "1.3.3" apply false } diff --git a/Source/Android/gradle/wrapper/gradle-wrapper.properties b/Source/Android/gradle/wrapper/gradle-wrapper.properties index 37f853b1c84..f186804f35b 100644 --- a/Source/Android/gradle/wrapper/gradle-wrapper.properties +++ b/Source/Android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ +#Tue Nov 11 16:01:52 EST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME