aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-02 10:49:33 +0100
committerDanilo M. <danix@danix.xyz>2026-11-02 10:49:33 +0100
commit9eec620a4d95c4e3217f0868af0fc7f7bada5c91 (patch)
tree3ac94b2d9408830caaefdbaa4b71bd40f68cfe8a
parentd4d155d98418bfc6780fc03f8dddabf363144a8f (diff)
downloadHardenedPass-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.kt4
-rw-r--r--build-logic/build.gradle.kts1
-rw-r--r--build-logic/settings.gradle.kts4
-rw-r--r--build-logic/src/main/kotlin/app/passwordstore/gradle/KotlinCommonPlugin.kt2
-rw-r--r--gradle/libs.versions.toml7
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin43583 -> 44309 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties4
-rwxr-xr-xgradlew9
-rw-r--r--gradlew.bat4
-rw-r--r--passgen/diceware/build.gradle.kts2
-rw-r--r--settings.gradle.kts8
-rw-r--r--ui/compose/build.gradle.kts6
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
index a4b76b95..02f06ab2 100644
--- a/gradle/wrapper/gradle-wrapper.jar
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
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
diff --git a/gradlew b/gradlew
index f5feea6d..23d15a93 100755
--- a/gradlew
+++ b/gradlew
@@ -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"
}