diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-02 10:49:33 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-02 10:49:33 +0100 |
| commit | 9eec620a4d95c4e3217f0868af0fc7f7bada5c91 (patch) | |
| tree | 3ac94b2d9408830caaefdbaa4b71bd40f68cfe8a | |
| parent | d4d155d98418bfc6780fc03f8dddabf363144a8f (diff) | |
| download | HardenedPass-9eec620a4d95c4e3217f0868af0fc7f7bada5c91.tar.gz HardenedPass-9eec620a4d95c4e3217f0868af0fc7f7bada5c91.zip | |
build: update to Gradle 8.14.6, AGP 8.13.2, Kotlin 2.1.21, Hilt 2.58
Newest releases that still fit together on the Gradle 8 / AGP 8 line:
- Kotlin stops at 2.1, the newest metadata Gradle 8's embedded Kotlin
2.0 compiler can read when compiling build-logic.
- Hilt stops at 2.58; 2.59 and later require AGP 9. Hilt 2.52's
annotation processor could not read Kotlin 2.1 metadata.
Drop the languageVersion = 1.9 pin so code compiles with the K2
frontend; Kotlin 2.4 no longer accepts 1.9. Drop the R8 8.5.35 pin and
its repository, which is older than the R8 AGP 8.13 bundles. Move the
deprecated buildFeatures.androidResources flag to
androidResources.enable, and replace Uri.parse with toUri for the new
UseKtx lint check.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| -rw-r--r-- | app/src/main/java/app/passwordstore/ui/settings/AutofillSettings.kt | 4 | ||||
| -rw-r--r-- | build-logic/build.gradle.kts | 1 | ||||
| -rw-r--r-- | build-logic/settings.gradle.kts | 4 | ||||
| -rw-r--r-- | build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt | 2 | ||||
| -rw-r--r-- | gradle/libs.versions.toml | 7 | ||||
| -rw-r--r-- | gradle/wrapper/gradle-wrapper.jar | bin | 43583 -> 44309 bytes | |||
| -rw-r--r-- | gradle/wrapper/gradle-wrapper.properties | 4 | ||||
| -rwxr-xr-x | gradlew | 9 | ||||
| -rw-r--r-- | gradlew.bat | 4 | ||||
| -rw-r--r-- | passgen/diceware/build.gradle.kts | 2 | ||||
| -rw-r--r-- | settings.gradle.kts | 8 | ||||
| -rw-r--r-- | ui/compose/build.gradle.kts | 6 |
12 files changed, 16 insertions, 35 deletions
diff --git a/app/src/main/java/app/passwordstore/ui/settings/AutofillSettings.kt b/app/src/main/java/app/passwordstore/ui/settings/AutofillSettings.kt index ae00e1d1..afb2a691 100644 --- a/app/src/main/java/app/passwordstore/ui/settings/AutofillSettings.kt +++ b/app/src/main/java/app/passwordstore/ui/settings/AutofillSettings.kt @@ -7,9 +7,9 @@ package app.passwordstore.ui.settings import android.annotation.SuppressLint import android.content.Intent -import android.net.Uri import android.provider.Settings import androidx.appcompat.widget.AppCompatTextView +import androidx.core.net.toUri import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver @@ -73,7 +73,7 @@ class AutofillSettings(private val activity: FragmentActivity) : SettingsProvide setPositiveButton(R.string.dialog_ok) { _, _ -> val intent = Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE).apply { - data = Uri.parse("package:${BuildConfig.APPLICATION_ID}") + data = "package:${BuildConfig.APPLICATION_ID}".toUri() } activity.startActivity(intent) } diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index 4be841d2..2bb5b6ea 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -80,7 +80,6 @@ dependencies { implementation(libs.build.moshi) implementation(libs.build.moshi.kotlin) implementation(libs.build.okhttp) - implementation(libs.build.r8) implementation(libs.build.semver) implementation(libs.build.sentry) implementation(libs.build.spotless) diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts index 5a6bcc14..1488630b 100644 --- a/build-logic/settings.gradle.kts +++ b/build-logic/settings.gradle.kts @@ -24,10 +24,6 @@ dependencyResolutionManagement { includeModule("me.tylerbwong.gradle.metalava", "plugin") } } - exclusiveContent { - forRepository { maven("https://storage.googleapis.com/r8-releases/raw") } - filter { includeModule("com.android.tools", "r8") } - } mavenCentral { mavenContent { releasesOnly() } } } versionCatalogs { diff --git a/build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt b/build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt index 2e22781b..f84edcb2 100644 --- a/build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt +++ b/build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt @@ -13,7 +13,6 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent import org.gradle.jvm.toolchain.JavaLanguageVersion import org.gradle.jvm.toolchain.JavaToolchainSpec import org.gradle.kotlin.dsl.withType -import org.jetbrains.kotlin.gradle.dsl.KotlinVersion import org.jetbrains.kotlin.gradle.tasks.KotlinCompile @Suppress("Unused") @@ -25,7 +24,6 @@ class KotlinCommonPlugin : Plugin<Project> { withType<KotlinCompile>().configureEach task@{ compilerOptions { allWarningsAsErrors.set(project.providers.environmentVariable("CI").isPresent) - languageVersion.set(KotlinVersion.KOTLIN_1_9) freeCompilerArgs.addAll(ADDITIONAL_COMPILER_ARGS) if (!this@task.name.contains("test", ignoreCase = true) && !isAppModule) { freeCompilerArgs.add("-Xexplicit-api=strict") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6150bb65..8cc0acf2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,11 +1,11 @@ [versions] -agp = "8.7.0" +agp = "8.13.2" androidxActivity = "1.9.2" bouncycastle = "1.86" coroutines = "1.9.0" flowbinding = "1.2.0" -hilt = "2.52" -kotlin = "2.0.21" +hilt = "2.58" +kotlin = "2.1.21" kotlinResult = "2.0.0" lifecycle = "2.8.6" moshi = "1.15.1" @@ -44,7 +44,6 @@ build-metalava = "me.tylerbwong.gradle.metalava:plugin:0.3.5" build-moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" } build-moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } build-okhttp = "com.squareup.okhttp3:okhttp:5.0.0-alpha.14" -build-r8 = "com.android.tools:r8:8.5.35" build-semver = "com.github.zafarkhaja:java-semver:0.10.2" build-sentry = "io.sentry.android.gradle:io.sentry.android.gradle.gradle.plugin:4.11.0" build-spotless = "com.diffplug.spotless:spotless-plugin-gradle:7.0.0.BETA2" diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar Binary files differindex a4b76b95..02f06ab2 100644 --- a/gradle/wrapper/gradle-wrapper.jar +++ b/gradle/wrapper/gradle-wrapper.jar diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index fb602ee2..f900c206 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=31c55713e40233a8303827ceb42ca48a47267a0ad4bab9177123121e71524c26 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip +distributionSha256Sum=7988ed071b2a07900e2ec715fca15c6ab72bce6db433af301fa7fa7e9407bd24 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME @@ -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,7 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +CLASSPATH="\\\"\\\"" # Determine the Java command to use to start the JVM. @@ -206,7 +205,7 @@ 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. @@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 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/gradlew.bat b/gradlew.bat index 9b42019c..5eed7ee8 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,11 @@ goto fail :execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@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%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/passgen/diceware/build.gradle.kts b/passgen/diceware/build.gradle.kts index 88116958..413d9a0d 100644 --- a/passgen/diceware/build.gradle.kts +++ b/passgen/diceware/build.gradle.kts @@ -9,7 +9,7 @@ plugins { android { namespace = "app.passwordstore.passgen.diceware" - buildFeatures { androidResources = true } + androidResources.enable = true sourceSets { getByName("test") { resources.srcDir("src/main/res/raw") } } } diff --git a/settings.gradle.kts b/settings.gradle.kts index 5e8a83ec..04160f17 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,10 +28,6 @@ pluginManagement { includeModule("org.gradle.toolchains", "foojay-resolver") } } - exclusiveContent { - forRepository { maven("https://storage.googleapis.com/r8-releases/raw") } - filter { includeModule("com.android.tools", "r8") } - } mavenCentral { mavenContent { releasesOnly() } } } } @@ -49,10 +45,6 @@ dependencyResolutionManagement { includeModule("com.google.android.material", "material") } } - exclusiveContent { - forRepository { maven("https://storage.googleapis.com/r8-releases/raw") } - filter { includeModule("com.android.tools", "r8") } - } maven("https://androidx.dev/storage/compose-compiler/repository") { name = "Compose Compiler Snapshots" content { includeGroup("androidx.compose.compiler") } diff --git a/ui/compose/build.gradle.kts b/ui/compose/build.gradle.kts index 624f3b3b..b4f195cf 100644 --- a/ui/compose/build.gradle.kts +++ b/ui/compose/build.gradle.kts @@ -9,10 +9,8 @@ plugins { } android { - buildFeatures { - compose = true - androidResources = true - } + buildFeatures { compose = true } + androidResources.enable = true namespace = "app.passwordstore.ui.compose" } |
