diff --git a/Source/Android/app/build.gradle.kts b/Source/Android/app/build.gradle.kts index 54a12a6058..dff980e170 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 754c089876..4f43601e68 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 c52039c5b2..f67a23e2da 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 6fc5adbfa7..9c868eeca9 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 fbc4f1105a..06267c42e5 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 f4e5a5f41f..2c39f29bd2 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.jar b/Source/Android/gradle/wrapper/gradle-wrapper.jar index a4b76b9530..f8e1ee3125 100644 Binary files a/Source/Android/gradle/wrapper/gradle-wrapper.jar and b/Source/Android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Source/Android/gradle/wrapper/gradle-wrapper.properties b/Source/Android/gradle/wrapper/gradle-wrapper.properties index 37f853b1c8..bad7c2462f 100644 --- a/Source/Android/gradle/wrapper/gradle-wrapper.properties +++ b/Source/Android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ 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 diff --git a/Source/Android/gradlew b/Source/Android/gradlew index f5feea6d6b..adff685a03 100755 --- a/Source/Android/gradlew +++ b/Source/Android/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/Source/Android/gradlew.bat b/Source/Android/gradlew.bat index 9b42019c79..e509b2dd8f 100644 --- a/Source/Android/gradlew.bat +++ b/Source/Android/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell