From 572c11ee6d7bbe10e745fc2a49c76e57d07a6a33 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 3 Mar 2026 16:27:45 -0500 Subject: [PATCH] Update to AGP 9.1.1 --- app/build.gradle.kts | 227 +- app/proguard/proguard-dnsjava.pro | 4 + .../state/WebRtcServiceStateBuilder.java | 1 - baseline-profile/build.gradle.kts | 13 +- benchmark/build.gradle.kts | 14 +- build-logic/gradle.properties | 2 + .../src/main/java/signal-library.gradle.kts | 16 +- .../main/java/signal-sample-app.gradle.kts | 16 +- .../signal/buildtools/SmartlingClientTest.kt | 2 - build.gradle.kts | 12 +- core/ui/build.gradle.kts | 10 +- demo/camera/build.gradle.kts | 6 +- demo/registration/build.gradle.kts | 1 + demo/video/build.gradle.kts | 8 +- gradle.properties | 15 +- gradle/benchmark-libs.versions.toml | 2 +- gradle/libs.versions.toml | 104 +- gradle/lint-libs.versions.toml | 2 +- gradle/verification-metadata.xml | 13383 ++++++++++++++++ gradle/wrapper/gradle-wrapper.properties | 3 +- microbenchmark/build.gradle.kts | 16 +- reproducible-builds/Dockerfile | 2 +- wire-handler/lib/build.gradle.kts | 2 +- .../main/kotlin/org/signal/wire/Factory.kt | 8 +- wire-handler/wire-handler-1.0.0.jar | Bin 5851 -> 5531 bytes 25 files changed, 13656 insertions(+), 213 deletions(-) create mode 100644 app/proguard/proguard-dnsjava.pro create mode 100644 build-logic/gradle.properties diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 652e80e574..f6a3000f97 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,10 @@ @file:Suppress("UnstableApiUsage") -import com.android.build.api.dsl.ManagedVirtualDevice +import com.android.build.api.artifact.ArtifactTransformationRequest +import com.android.build.api.artifact.SingleArtifact import org.gradle.api.tasks.testing.logging.TestExceptionFormat +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension import java.time.Instant import java.time.ZoneOffset import java.time.format.DateTimeFormatter @@ -10,7 +13,6 @@ import java.util.Properties plugins { alias(libs.plugins.android.application) - alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.ktlint) alias(libs.plugins.compose.compiler) alias(libs.plugins.kotlinx.serialization) @@ -32,11 +34,11 @@ val maxHotfixVersions = 100 // We don't want versions to ever end in 0 so that they don't conflict with nightly versions val possibleHotfixVersions = (0 until maxHotfixVersions).toList().filter { it % 10 != 0 } -val debugKeystorePropertiesProvider = providers.of(PropertiesFileValueSource::class.java) { +val debugKeystorePropertiesProvider: Provider = providers.of(PropertiesFileValueSource::class.java) { parameters.file.set(rootProject.layout.projectDirectory.file("keystore.debug.properties")) } -val languagesProvider = providers.of(LanguageListValueSource::class.java) { +val languagesProvider: Provider> = providers.of(LanguageListValueSource::class.java) { parameters.resDir.set(layout.projectDirectory.dir("src/main/res")) } @@ -81,6 +83,21 @@ val selectableVariants = listOf( "githubProdRelease" ) +// Wire 5.x iterates Android source sets and expects matching Kotlin source sets. +// AGP 9.0's built-in Kotlin doesn't create all source sets automatically. +val kotlinExt = extensions.getByName("kotlin") as KotlinAndroidProjectExtension +android.sourceSets.all { + kotlinExt.sourceSets.findByName(name) ?: kotlinExt.sourceSets.create(name) +} +// AGP 9.0's built-in Kotlin doesn't pick up extra java.srcDir entries from Android +// source sets, so add the testShared dir directly to test/androidTest Kotlin +// compile tasks. +tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class.java).configureEach { + if (name.contains("UnitTest") || name.contains("AndroidTest")) { + source("$projectDir/src/testShared") + } +} + wire { kotlin { javaInterop = true @@ -94,8 +111,6 @@ wire { srcDir("${project.rootDir}/lib/libsignal-service/src/main/protowire") srcDir("${project.rootDir}/lib/archive/src/main/protowire") } - // Handled by libsignal - prune("signalservice.DecryptionErrorMessage") } ktlint { @@ -106,7 +121,7 @@ android { namespace = "org.thoughtcrime.securesms" buildToolsVersion = libs.versions.buildTools.get() - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) ndkVersion = libs.versions.ndk.get() flavorDimensions += listOf("distribution", "environment") @@ -114,13 +129,7 @@ android { android.bundle.language.enableSplit = false - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - freeCompilerArgs = listOf("-Xjvm-default=all") - suppressWarnings = true - } - - debugKeystorePropertiesProvider.orNull?.let { properties -> + debugKeystorePropertiesProvider.get().takeIf { it.isNotEmpty() }?.let { properties -> signingConfigs.getByName("debug").apply { storeFile = file("${project.rootDir}/${properties.getProperty("storeFile")}") storePassword = properties.getProperty("storePassword") @@ -137,8 +146,8 @@ android { } managedDevices { - devices { - create("pixel3api30") { + localDevices { + create("pixel3api30") { device = "Pixel 3" apiLevel = 30 systemImageSource = "google-atd" @@ -195,10 +204,6 @@ android { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.4" - } - defaultConfig { if (currentHotfixVersion >= maxHotfixVersions) { throw AssertionError("Hotfix version offset is too large!") @@ -291,7 +296,7 @@ android { isDefault = true isMinifyEnabled = false proguardFiles( - getDefaultProguardFile("proguard-android.txt"), + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard/proguard-firebase-messaging.pro", "proguard/proguard-google-play-services.pro", "proguard/proguard-jackson.pro", @@ -308,6 +313,7 @@ android { "proguard/proguard-retrolambda.pro", "proguard/proguard-okhttp.pro", "proguard/proguard-ez-vcard.pro", + "proguard/proguard-dnsjava.pro", "proguard/proguard.cfg" ) testProguardFiles( @@ -480,70 +486,6 @@ android { lintConfig = rootProject.file("lint.xml") } - androidComponents { - beforeVariants { variant -> - variant.enable = variant.name in selectableVariants - } - onVariants(selector().all()) { variant: com.android.build.api.variant.ApplicationVariant -> - // Include the test-only library on debug builds. - if (variant.buildType != "instrumentation") { - variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so") - } - - // Starting with minSdk 23, Android leaves native libraries uncompressed, which is fine for the Play Store, but not for our self-distributed APKs. - // This reverts it to the legacy behavior, compressing the native libraries, and drastically reducing the APK file size. - if (variant.name.contains("website", ignoreCase = true) || variant.name.contains("github", ignoreCase = true)) { - variant.packaging.jniLibs.useLegacyPackaging.set(true) - } - - // Version overrides - if (variant.name.contains("nightly", ignoreCase = true)) { - var tag = getNightlyTagForCurrentCommit() - if (!tag.isNullOrEmpty()) { - if (tag.startsWith("v")) { - tag = tag.substring(1) - } - - // We add a multiple of maxHotfixVersions to nightlies to ensure we're always at least that many versions ahead - val nightlyBuffer = (5 * maxHotfixVersions) - val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer - - variant.outputs.forEach { output -> - output.versionName.set("$tag | ${getLastCommitDateTimeUtc()}") - output.versionCode.set(nightlyVersionCode) - } - } - } - } - - onVariants(selector().withBuildType("quickstart")) { variant -> - val environment = variant.flavorName?.let { name -> - when { - name.contains("staging", ignoreCase = true) -> "staging" - name.contains("prod", ignoreCase = true) -> "prod" - else -> "prod" - } - } ?: "prod" - - val taskProvider = tasks.register("copyQuickstartCredentials${variant.name.capitalize()}") { - if (quickstartCredentialsDir != null) { - inputDir.set(File(quickstartCredentialsDir)) - } - filePrefix.set("${environment}_") - } - variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir } - } - - onVariants(selector().withBuildType("benchmark")) { variant -> - val taskProvider = tasks.register("copyBenchmarkBackup${variant.name.capitalize()}") { - if (benchmarkBackupFile != null) { - inputFile.set(File(benchmarkBackupFile)) - } - } - variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir } - } - } - val releaseDir = "$projectDir/src/release/java" val debugDir = "$projectDir/src/debug/java" @@ -565,15 +507,79 @@ android { manifest.srcFile("$projectDir/src/benchmarkShared/AndroidManifest.xml") } } +} - applicationVariants.configureEach { - outputs.configureEach { - if (this is com.android.build.gradle.internal.api.BaseVariantOutputImpl) { - val fileVersionName = versionName.substringBefore(" |") - outputFileName = outputFileName.replace(".apk", "-$fileVersionName.apk") +androidComponents { + beforeVariants { variant -> + variant.enable = variant.name in selectableVariants + } + onVariants(selector().all()) { variant: com.android.build.api.variant.ApplicationVariant -> + // Rename APK to include version name + val renameTask = tasks.register("renameApk${variant.name.replaceFirstChar { it.uppercase() }}") + val renameRequest = variant.artifacts.use(renameTask) + .wiredWithDirectories(RenameApkTask::apkFolder, RenameApkTask::outFolder) + .toTransformMany(SingleArtifact.APK) + renameTask.configure { + transformationRequest.set(renameRequest) + } + + // Include the test-only library on debug builds. + if (variant.buildType != "instrumentation") { + variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so") + } + + // Starting with minSdk 23, Android leaves native libraries uncompressed, which is fine for the Play Store, but not for our self-distributed APKs. + // This reverts it to the legacy behavior, compressing the native libraries, and drastically reducing the APK file size. + if (variant.name.contains("website", ignoreCase = true) || variant.name.contains("github", ignoreCase = true)) { + variant.packaging.jniLibs.useLegacyPackaging.set(true) + } + + // Version overrides + if (variant.name.contains("nightly", ignoreCase = true)) { + var tag = getNightlyTagForCurrentCommit() + if (!tag.isNullOrEmpty()) { + if (tag.startsWith("v")) { + tag = tag.substring(1) + } + + // We add a multiple of maxHotfixVersions to nightlies to ensure we're always at least that many versions ahead + val nightlyBuffer = (5 * maxHotfixVersions) + val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer + + variant.outputs.forEach { output -> + output.versionName.set("$tag | ${getLastCommitDateTimeUtc()}") + output.versionCode.set(nightlyVersionCode) + } } } } + + onVariants(selector().withBuildType("quickstart")) { variant -> + val environment = variant.flavorName?.let { name -> + when { + name.contains("staging", ignoreCase = true) -> "staging" + name.contains("prod", ignoreCase = true) -> "prod" + else -> "prod" + } + } ?: "prod" + + val taskProvider = tasks.register("copyQuickstartCredentials${variant.name.capitalize()}") { + if (quickstartCredentialsDir != null) { + inputDir.set(File(quickstartCredentialsDir)) + } + filePrefix.set("${environment}_") + } + variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir } + } + + onVariants(selector().withBuildType("benchmark")) { variant -> + val taskProvider = tasks.register("copyBenchmarkBackup${variant.name.capitalize()}") { + if (benchmarkBackupFile != null) { + inputFile.set(File(benchmarkBackupFile)) + } + } + variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir } + } } baselineProfile { @@ -590,6 +596,14 @@ baselineProfile { dexLayoutOptimization = false } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + freeCompilerArgs.addAll("-Xjvm-default=all") + suppressWarnings = true + } +} + dependencies { lintChecks(project(":lintchecks")) ktlintRuleset(libs.ktlint.twitter.compose) @@ -854,7 +868,7 @@ abstract class LanguageListValueSource : ValueSource, LanguageListV } } -abstract class PropertiesFileValueSource : ValueSource { +abstract class PropertiesFileValueSource : ValueSource { interface Params : ValueSourceParameters { @get:InputFile @get:Optional @@ -862,9 +876,9 @@ abstract class PropertiesFileValueSource : ValueSource> + + @TaskAction + fun rename() { + transformationRequest.get().submit(this) { artifact -> + val originalFile = File(artifact.outputFile) + val versionName = artifact.versionName?.substringBefore(" |") + val newName = if (!versionName.isNullOrEmpty()) { + originalFile.name.replace(".apk", "-$versionName.apk") + } else { + originalFile.name + } + val newFile = File(outFolder.get().asFile, newName) + originalFile.copyTo(newFile, overwrite = true) + newFile + } + } +} diff --git a/app/proguard/proguard-dnsjava.pro b/app/proguard/proguard-dnsjava.pro new file mode 100644 index 0000000000..210ae444b7 --- /dev/null +++ b/app/proguard/proguard-dnsjava.pro @@ -0,0 +1,4 @@ +# dnsjava references desktop/server-only classes that are absent on Android. +-dontwarn com.sun.jna.** +-dontwarn javax.naming.** +-dontwarn lombok.Generated diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/state/WebRtcServiceStateBuilder.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/state/WebRtcServiceStateBuilder.java index b0ab00c481..16e6196896 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/state/WebRtcServiceStateBuilder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/state/WebRtcServiceStateBuilder.java @@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.service.webrtc.state; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import org.checkerframework.checker.units.qual.N; import org.signal.ringrtc.CallId; import org.signal.ringrtc.CallManager; import org.signal.ringrtc.GroupCall; diff --git a/baseline-profile/build.gradle.kts b/baseline-profile/build.gradle.kts index b391aa174f..ef458ae350 100644 --- a/baseline-profile/build.gradle.kts +++ b/baseline-profile/build.gradle.kts @@ -1,6 +1,7 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + plugins { id("com.android.test") - alias(libs.plugins.jetbrains.kotlin.android) alias(benchmarkLibs.plugins.baselineprofile) } @@ -15,10 +16,6 @@ android { targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - } - defaultConfig { minSdk = 28 targetSdk = 36 @@ -55,6 +52,12 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + } +} + baselineProfile { managedDevices += "api31" useConnectedDevices = false diff --git a/benchmark/build.gradle.kts b/benchmark/build.gradle.kts index 59d3745477..d97222d619 100644 --- a/benchmark/build.gradle.kts +++ b/benchmark/build.gradle.kts @@ -3,27 +3,23 @@ import com.android.build.api.dsl.ManagedVirtualDevice import org.gradle.api.JavaVersion import org.gradle.kotlin.dsl.extra +import org.jetbrains.kotlin.gradle.dsl.JvmTarget val benchmarkLibs = the() plugins { id("com.android.test") - id("org.jetbrains.kotlin.android") } android { namespace = "org.signal.benchmark" - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) compileOptions { sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - } - defaultConfig { minSdk = 23 targetSdk = libs.versions.targetSdk.get().toInt() @@ -63,6 +59,12 @@ android { } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + } +} + dependencies { implementation(benchmarkLibs.androidx.test.ext.junit) implementation(benchmarkLibs.espresso.core) diff --git a/build-logic/gradle.properties b/build-logic/gradle.properties new file mode 100644 index 0000000000..8ff4c60ca7 --- /dev/null +++ b/build-logic/gradle.properties @@ -0,0 +1,2 @@ +android.builtInKotlin=true +android.newDsl=true diff --git a/build-logic/plugins/src/main/java/signal-library.gradle.kts b/build-logic/plugins/src/main/java/signal-library.gradle.kts index ba04071de8..caaefb4e49 100644 --- a/build-logic/plugins/src/main/java/signal-library.gradle.kts +++ b/build-logic/plugins/src/main/java/signal-library.gradle.kts @@ -3,6 +3,7 @@ import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForTestLibs import org.gradle.api.JavaVersion +import org.jetbrains.kotlin.gradle.dsl.JvmTarget val libs = the() val testLibs = the() @@ -11,13 +12,12 @@ plugins { // We cannot use the version catalog in the plugins block in convention plugins (it's not supported). // Instead, plugin versions are controlled through the dependencies block in the build.gradle.kts. id("com.android.library") - id("kotlin-android") id("ktlint") } android { buildToolsVersion = libs.versions.buildTools.get() - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) defaultConfig { minSdk = libs.versions.minSdk.get().toInt() @@ -30,17 +30,19 @@ android { targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - suppressWarnings = true - } - lint { disable += "InvalidVectorPath" lintConfig = rootProject.file("lint.xml") } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + suppressWarnings = true + } +} + dependencies { lintChecks(project(":lintchecks")) diff --git a/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts b/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts index 740b08c3ee..ead37f3319 100644 --- a/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts +++ b/build-logic/plugins/src/main/java/signal-sample-app.gradle.kts @@ -4,6 +4,7 @@ import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForTestLibs import org.gradle.api.JavaVersion import org.gradle.kotlin.dsl.the +import org.jetbrains.kotlin.gradle.dsl.JvmTarget val libs = the() val testLibs = the() @@ -12,13 +13,12 @@ plugins { // We cannot use the version catalog in the plugins block in convention plugins (it's not supported). // Instead, plugin versions are controlled through the dependencies block in the build.gradle.kts. id("com.android.application") - id("kotlin-android") id("ktlint") } android { buildToolsVersion = libs.versions.buildTools.get() - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) defaultConfig { versionCode = 1 @@ -34,18 +34,16 @@ android { targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - suppressWarnings = true - } - buildFeatures { buildConfig = true compose = true } +} - composeOptions { - kotlinCompilerExtensionVersion = "1.5.4" +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + suppressWarnings = true } } diff --git a/build-logic/tools/src/test/java/org/signal/buildtools/SmartlingClientTest.kt b/build-logic/tools/src/test/java/org/signal/buildtools/SmartlingClientTest.kt index a28c8680a4..3f374ffc61 100644 --- a/build-logic/tools/src/test/java/org/signal/buildtools/SmartlingClientTest.kt +++ b/build-logic/tools/src/test/java/org/signal/buildtools/SmartlingClientTest.kt @@ -2,7 +2,6 @@ package org.signal.buildtools import mockwebserver3.MockResponse import mockwebserver3.MockWebServer -import okhttp3.ExperimentalOkHttpApi import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue @@ -10,7 +9,6 @@ import org.junit.Before import org.junit.Test import java.io.File -@OptIn(ExperimentalOkHttpApi::class) class SmartlingClientTest { private lateinit var server: MockWebServer diff --git a/build.gradle.kts b/build.gradle.kts index 6aa0a2a491..d97289b11a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -30,7 +30,7 @@ buildscript { classpath(libs.gradle) classpath(libs.androidx.navigation.safe.args.gradle.plugin) classpath(libs.protobuf.gradle.plugin) - classpath("com.squareup.wire:wire-gradle-plugin:4.4.3") { + classpath("com.squareup.wire:wire-gradle-plugin:6.0.0-alpha02") { exclude(group = "com.squareup.wire", module = "wire-swift-generator") exclude(group = "com.squareup.wire", module = "wire-grpc-client") exclude(group = "com.squareup.wire", module = "wire-grpc-jvm") @@ -120,9 +120,13 @@ gradle.projectsEvaluated { // If you let all of these things run in parallel, gradle will likely OOM. // To avoid this, we put non-app tests and lints behind the much heavier app tests and lints. subprojects.filter { it.name != "Signal-Android" }.forEach { subproject -> - subproject.tasks.findByName("testDebugUnitTest")?.mustRunAfter(appTestTask) - subproject.tasks.findByName("test")?.mustRunAfter(appTestTask) - subproject.tasks.findByName("lintDebug")?.mustRunAfter(appLintTask) + appTestTask?.let { task -> + subproject.tasks.findByName("testDebugUnitTest")?.mustRunAfter(task) + subproject.tasks.findByName("test")?.mustRunAfter(task) + } + appLintTask?.let { task -> + subproject.tasks.findByName("lintDebug")?.mustRunAfter(task) + } } } diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index 31f8142030..7a59f981ae 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -11,10 +11,6 @@ android { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.4" - } - testFixtures { enable = true } @@ -25,10 +21,8 @@ dependencies { api(project(":core:util")) - platform(libs.androidx.compose.bom).let { composeBom -> - api(composeBom) - androidTestApi(composeBom) - } + api(platform(libs.androidx.compose.bom)) + androidTestImplementation(platform(libs.androidx.compose.bom)) api(libs.androidx.compose.material3) api(libs.androidx.compose.material3.adaptive) diff --git a/demo/camera/build.gradle.kts b/demo/camera/build.gradle.kts index 633c30ac27..3f989b1131 100644 --- a/demo/camera/build.gradle.kts +++ b/demo/camera/build.gradle.kts @@ -6,7 +6,7 @@ plugins { android { namespace = "org.signal.camera.demo" - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) defaultConfig { applicationId = "org.signal.camera.demo" @@ -33,10 +33,6 @@ android { targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - } - buildFeatures { compose = true } diff --git a/demo/registration/build.gradle.kts b/demo/registration/build.gradle.kts index 4be392c5f2..36520d5e25 100644 --- a/demo/registration/build.gradle.kts +++ b/demo/registration/build.gradle.kts @@ -70,6 +70,7 @@ dependencies { // AndroidX implementation(libs.androidx.activity.compose) implementation(libs.androidx.core.ktx) + implementation(libs.androidx.documentfile) implementation(libs.androidx.sqlite) implementation(libs.androidx.sqlite.framework) diff --git a/demo/video/build.gradle.kts b/demo/video/build.gradle.kts index af38c2c925..44859a6702 100644 --- a/demo/video/build.gradle.kts +++ b/demo/video/build.gradle.kts @@ -19,7 +19,7 @@ val localProperties: Properties? = if (localPropertiesFile.exists()) { android { namespace = "org.thoughtcrime.video.app" - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) defaultConfig { applicationId = "org.thoughtcrime.video.app" @@ -49,15 +49,9 @@ android { sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - } buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = "1.5.4" - } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" diff --git a/gradle.properties b/gradle.properties index 8075cf68b5..228fe188d2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,6 +3,7 @@ android.useAndroidX=true android.experimental.androidTest.numManagedDeviceShards=1 org.gradle.configuration-cache=true org.gradle.configuration-cache.problems=fail +android.generateSyncIssueWhenLibraryConstraintsAreEnabled=false # We never want to use auto-provisioning, as it breaks reproducible builds. # This should not be a problem, because we never configure a "javaRepositories" # item to tell Gradle where to auto-provision the toolchain from, but adding @@ -15,7 +16,19 @@ android.lint.useK2Uast=false # Test fixtures support for Android modules android.experimental.enableTestFixturesKotlinSupport=true +android.defaults.buildfeatures.resvalues=true +android.sdk.defaultTargetSdkToCompileSdkIfUnset=false +android.enableAppCompileTimeRClass=false +android.onlyEnableUnitTestForTheTestedBuildType=false +android.usesSdkInManifest.disallowed=false +android.uniquePackageNames=false +android.dependency.useConstraints=true +android.r8.strictFullModeForKeepRules=false +android.r8.optimizedResourceShrinking=false +android.builtInKotlin=true +android.newDsl=true +android.disallowKotlinSourceSets=false # Uncomment these to build libsignal from source. # libsignalClientPath=../libsignal -# org.gradle.dependency.verification=lenient \ No newline at end of file +# org.gradle.dependency.verification=lenient diff --git a/gradle/benchmark-libs.versions.toml b/gradle/benchmark-libs.versions.toml index 5a802faea9..233d1a66c8 100644 --- a/gradle/benchmark-libs.versions.toml +++ b/gradle/benchmark-libs.versions.toml @@ -3,7 +3,7 @@ [versions] androidx-test-ext-junit = "1.3.0" -baselineprofile = "1.4.1" +baselineprofile = "1.5.0-alpha03" [plugins] baselineprofile = { id = "androidx.baselineprofile", version.ref = "baselineprofile" } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9a2f0652a8..8a6073f8b6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,26 +3,26 @@ [versions] # SDK & Build Versions -buildTools = "35.0.0" +buildTools = "36.0.0" compileSdk = "android-36" targetSdk = "35" minSdk = "23" ndk = "28.0.13004108" javaVersion = "17" kotlinJvmTarget = "17" -gradle = "8.13.2" +gradle = "9.1.1" kotlin = "2.2.20" -android-gradle-plugin = "8.13.2" +android-gradle-plugin = "9.1.1" # Other versions -androidx-appcompat = "1.7.0" -androidx-activity = "1.12.0" +androidx-appcompat = "1.7.1" +androidx-activity = "1.13.0" androidx-camera = "1.5.2" -androidx-fragment = "1.8.5" -androidx-lifecycle = "2.8.7" +androidx-fragment = "1.8.9" +androidx-lifecycle = "2.10.0" androidx-lifecycle-navigation3 = "2.10.0" androidx-media3 = "1.9.1" -androidx-navigation = "2.8.5" +androidx-navigation = "2.9.8" androidx-navigation3-core = "1.0.0" androidx-core-telecom = "1.1.0-alpha04" androidx-window = "1.3.0" @@ -31,10 +31,10 @@ libsignal-client = "0.93.1" mp4parser = "1.9.39" accompanist = "0.28.0" nanohttpd = "2.3.1" -navigation-safe-args-gradle-plugin = "2.8.5" -protobuf-gradle-plugin = "0.9.0" -ktlint = "14.0.1" -ui-test-junit4 = "1.9.4" +navigation-safe-args-gradle-plugin = "2.9.8" +protobuf-gradle-plugin = "0.10.0" +ktlint = "14.2.0" +ui-test-junit4 = "1.11.0" [plugins] android-application = { id = "com.android.application", version.ref = "android-gradle-plugin" } @@ -51,7 +51,7 @@ kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", vers gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" } android-library = { module = "com.android.library:com.android.library.gradle.plugin", version.ref = "android-gradle-plugin" } android-application = { module = "com.android.application:com.android.application.gradle.plugin", version.ref = "android-gradle-plugin" } -androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.3.3" +androidx-benchmark-gradle-plugin = "androidx.benchmark:benchmark-gradle-plugin:1.4.1" # Compose androidx-compose-bom = "androidx.compose:compose-bom:2026.04.01" @@ -69,19 +69,19 @@ androidx-compose-rxjava3 = "androidx.compose.runtime:runtime-rxjava3:1.11.0" # Accompanist accompanist-permissions = { module = "com.google.accompanist:accompanist-permissions", version.ref = "accompanist" } -accompanist-drawablepainter = "com.google.accompanist:accompanist-drawablepainter:0.36.0" +accompanist-drawablepainter = "com.google.accompanist:accompanist-drawablepainter:0.37.3" # Desugaring -android-tools-desugar = "com.android.tools:desugar_jdk_libs:2.1.3" +android-tools-desugar = "com.android.tools:desugar_jdk_libs:2.1.5" # Kotlin kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlin" } kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } -kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0" -kotlinx-coroutines-core-jvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.9.0" -kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.9.0" -kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.9.0" +kotlinx-coroutines-core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2" +kotlinx-coroutines-core-jvm = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.10.2" +kotlinx-coroutines-play-services = "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.10.2" +kotlinx-coroutines-rx3 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.10.2" kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version = "1.9.0" } ktlint = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlint" } ktlint-twitter-compose = "com.twitter.compose.rules:ktlint:0.0.26" @@ -89,20 +89,20 @@ ktlint-twitter-compose = "com.twitter.compose.rules:ktlint:0.0.26" # Android X androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } -androidx-core-ktx = "androidx.core:core-ktx:1.15.0" +androidx-core-ktx = "androidx.core:core-ktx:1.18.0" androidx-fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "androidx-fragment" } androidx-fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "androidx-fragment" } androidx-fragment-compose = { module = "androidx.fragment:fragment-compose", version.ref = "androidx-fragment" } -androidx-annotation = "androidx.annotation:annotation:1.9.1" -androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.0" +androidx-annotation = "androidx.annotation:annotation:1.10.0" +androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.1" androidx-window-window = { module = "androidx.window:window", version.ref = "androidx-window" } androidx-window-java = { module = "androidx.window:window-java", version.ref = "androidx-window" } androidx-recyclerview = "androidx.recyclerview:recyclerview:1.4.0" androidx-legacy-support = "androidx.legacy:legacy-support-v13:1.0.0" androidx-legacy-preference = "androidx.legacy:legacy-preference-v14:1.0.0" androidx-preference = "androidx.preference:preference:1.2.1" -androidx-gridlayout = "androidx.gridlayout:gridlayout:1.0.0" -androidx-exifinterface = "androidx.exifinterface:exifinterface:1.3.7" +androidx-gridlayout = "androidx.gridlayout:gridlayout:1.1.0" +androidx-exifinterface = "androidx.exifinterface:exifinterface:1.4.2" androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "androidx-media3" } androidx-media3-session = { module = "androidx.media3:media3-session", version.ref = "androidx-media3" } androidx-media3-ui = { module = "androidx.media3:media3-ui", version.ref = "androidx-media3" } @@ -129,42 +129,42 @@ androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", versi androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidx-camera" } androidx-camera-video = { module = "androidx.camera:camera-video", version.ref = "androidx-camera" } androidx-camera-compose = { module = "androidx.camera:camera-compose", version.ref = "androidx-camera" } -androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.2.0" -androidx-autofill = "androidx.autofill:autofill:1.1.0" +androidx-concurrent-futures = "androidx.concurrent:concurrent-futures:1.3.0" +androidx-autofill = "androidx.autofill:autofill:1.3.0" androidx-biometric = "androidx.biometric:biometric:1.1.0" androidx-sharetarget = "androidx.sharetarget:sharetarget:1.2.0" androidx-sqlite = "androidx.sqlite:sqlite:2.6.2" androidx-sqlite-framework = "androidx.sqlite:sqlite-framework:2.6.2" androidx-profileinstaller = "androidx.profileinstaller:profileinstaller:1.4.1" -androidx-asynclayoutinflater = "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01" -androidx-asynclayoutinflater-appcompat = "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0-alpha01" -androidx-emoji2 = "androidx.emoji2:emoji2:1.5.0" +androidx-asynclayoutinflater = "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0" +androidx-asynclayoutinflater-appcompat = "androidx.asynclayoutinflater:asynclayoutinflater-appcompat:1.1.0" +androidx-emoji2 = "androidx.emoji2:emoji2:1.6.0" androidx-core-telecom = { module = "androidx.core:core-telecom", version.ref = "androidx-core-telecom" } androidx-documentfile = "androidx.documentfile:documentfile:1.0.1" -androidx-credentials = "androidx.credentials:credentials:1.5.0" -androidx-credentials-compat = "androidx.credentials:credentials-play-services-auth:1.5.0" -android-billing = "com.android.billingclient:billing-ktx:7.1.1" +androidx-credentials = "androidx.credentials:credentials:1.6.0" +androidx-credentials-compat = "androidx.credentials:credentials-play-services-auth:1.6.0" +android-billing = "com.android.billingclient:billing-ktx:8.3.0" # Billing material-material = "com.google.android.material:material:1.12.0" # Google -google-libphonenumber = "com.googlecode.libphonenumber:libphonenumber:8.13.50" -google-play-services-base = "com.google.android.gms:play-services-base:18.5.0" -google-play-services-maps = "com.google.android.gms:play-services-maps:19.0.0" -google-play-services-auth = "com.google.android.gms:play-services-auth:21.3.0" +google-libphonenumber = "com.googlecode.libphonenumber:libphonenumber:9.0.29" +google-play-services-base = "com.google.android.gms:play-services-base:18.10.0" +google-play-services-maps = "com.google.android.gms:play-services-maps:20.0.0" +google-play-services-auth = "com.google.android.gms:play-services-auth:21.5.1" google-play-services-wallet = "com.google.android.gms:play-services-wallet:19.4.0" -google-signin = "com.google.android.libraries.identity.googleid:googleid:1.1.1" +google-signin = "com.google.android.libraries.identity.googleid:googleid:1.2.0" google-zxing-android-integration = "com.google.zxing:android-integration:3.3.0" -google-zxing-core = "com.google.zxing:core:3.4.1" +google-zxing-core = "com.google.zxing:core:3.5.4" google-ez-vcard = "com.googlecode.ez-vcard:ez-vcard:0.9.11" google-jsr305 = "com.google.code.findbugs:jsr305:3.0.2" -google-guava-android = "com.google.guava:guava:33.3.1-android" +google-guava-android = "com.google.guava:guava:33.6.0-android" google-flexbox = "com.google.android.flexbox:flexbox:3.0.0" -com-google-devtools-ksp-gradle-plugin = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.2.20-2.0.2" +com-google-devtools-ksp-gradle-plugin = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:2.3.2" # Firebase -firebase-messaging = "com.google.firebase:firebase-messaging:24.1.0" +firebase-messaging = "com.google.firebase:firebase-messaging:25.0.1" # 1st Party libsignal-client = { module = "org.signal:libsignal-client", version.ref = "libsignal-client" } @@ -178,27 +178,27 @@ signal-android-database-sqlcipher = "net.zetetic:sqlcipher-android:4.14.0" greenrobot-eventbus = "org.greenrobot:eventbus:3.0.0" jackson-core = "com.fasterxml.jackson.core:jackson-databind:2.12.0" jackson-module-kotlin = "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.0" -square-okhttp3 = "com.squareup.okhttp3:okhttp:5.0.0-alpha.16" -square-okio = "com.squareup.okio:okio:3.12.0" -square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.7" -rxjava3-rxjava = "io.reactivex.rxjava3:rxjava:3.0.13" -rxjava3-rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.0" +square-okhttp3 = "com.squareup.okhttp3:okhttp:5.3.2" +square-okio = "com.squareup.okio:okio:3.17.0" +square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.14" +rxjava3-rxjava = "io.reactivex.rxjava3:rxjava:3.1.12" +rxjava3-rxandroid = "io.reactivex.rxjava3:rxandroid:3.0.2" rxjava3-rxkotlin = "io.reactivex.rxjava3:rxkotlin:3.0.1" -rxdogtag = "com.uber.rxdogtag2:rxdogtag:2.0.1" +rxdogtag = "com.uber.rxdogtag2:rxdogtag:2.0.2" conscrypt-android = "org.conscrypt:conscrypt-android:2.5.3" mobilecoin = "com.mobilecoin:android-sdk:6.1.2" leolin-shortcutbadger = "me.leolin:ShortcutBadger:1.1.22" glide-glide = { module = "com.github.bumptech.glide:glide", version.ref = "glide" } glide-ksp = { module = "com.github.bumptech.glide:ksp", version.ref = "glide" } -roundedimageview = "com.makeramen:roundedimageview:2.1.0" +roundedimageview = "com.makeramen:roundedimageview:2.3.0" materialish-progress = "com.pnikosis:materialish-progress:1.7" subsampling-scale-image-view = "com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0" -lottie = "com.airbnb.android:lottie:6.4.0" -lottie-compose = "com.airbnb.android:lottie-compose:6.4.0" -dnsjava = "dnsjava:dnsjava:2.1.9" +lottie = "com.airbnb.android:lottie:6.7.1" +lottie-compose = "com.airbnb.android:lottie-compose:6.7.1" +dnsjava = "dnsjava:dnsjava:3.6.4" nanohttpd-webserver = { module = "org.nanohttpd:nanohttpd-webserver", version.ref = "nanohttpd" } nanohttpd-websocket = { module = "org.nanohttpd:nanohttpd-websocket", version.ref = "nanohttpd" } -kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.3.5" +kotlinx-collections-immutable = "org.jetbrains.kotlinx:kotlinx-collections-immutable:0.4.0" # Can't use the newest version because it hits some weird NoClassDefFoundException jknack-handlebars = "com.github.jknack:handlebars:4.0.7" diff --git a/gradle/lint-libs.versions.toml b/gradle/lint-libs.versions.toml index ca7e653ec6..653d0f6c32 100644 --- a/gradle/lint-libs.versions.toml +++ b/gradle/lint-libs.versions.toml @@ -2,7 +2,7 @@ # ./gradlew --write-verification-metadata sha256 qa --rerun-tasks [versions] -lint = "31.13.2" +lint = "32.1.1" [libraries] lint-api = { module = "com.android.tools.lint:lint-api", version.ref = "lint" } diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d8c16270fd..edc7d2e18a 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -25,17 +25,39 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + @@ -46,90 +68,250 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138,9 +320,16 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + @@ -148,14 +337,28 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + @@ -164,9 +367,13 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -177,36 +384,86 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -217,104 +474,192 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -323,6 +668,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -332,7 +709,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + @@ -344,6 +728,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -352,6 +756,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + @@ -360,6 +776,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + @@ -386,12 +814,28 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -400,6 +844,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -408,6 +868,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -416,6 +896,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -424,6 +924,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -432,6 +952,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -440,6 +980,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -448,6 +1008,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -456,6 +1024,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -464,6 +1040,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -472,8 +1064,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + @@ -484,74 +1086,129 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -562,14 +1219,50 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581,6 +1274,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589,11 +1330,52 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -605,6 +1387,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -613,6 +1435,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -621,6 +1475,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -631,14 +1517,58 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647,6 +1577,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -655,6 +1625,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -665,14 +1675,50 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -684,6 +1730,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -692,6 +1778,89 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -748,6 +1917,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -756,6 +1957,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -764,102 +1997,326 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -868,8 +2325,15 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + @@ -878,6 +2342,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -886,6 +2398,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -894,6 +2446,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -902,6 +2494,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -910,6 +2542,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -918,6 +2582,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -926,6 +2622,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -958,6 +2694,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -974,6 +2750,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + @@ -984,6 +2772,8 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + @@ -992,6 +2782,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1000,6 +2838,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1008,11 +2886,53 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1021,21 +2941,70 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1047,6 +3016,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1055,11 +3072,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1071,6 +3132,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1079,6 +3180,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1087,11 +3228,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1103,6 +3288,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1111,6 +3336,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1119,6 +3376,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1127,10 +3416,47 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1140,6 +3466,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1148,10 +3514,47 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1161,10 +3564,47 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1174,6 +3614,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -1182,6 +3630,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -1190,11 +3646,56 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1203,11 +3704,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1219,6 +3764,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1227,6 +3812,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1235,6 +3852,43 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1243,6 +3897,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1251,6 +3945,43 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1259,6 +3990,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1267,6 +4038,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1275,6 +4078,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1283,10 +4118,47 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1296,6 +4168,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1304,6 +4216,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1312,11 +4264,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1328,6 +4324,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1336,6 +4372,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1344,11 +4420,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1360,6 +4480,46 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1368,22 +4528,70 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1400,27 +4608,75 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1428,11 +4684,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + @@ -1443,22 +4720,40 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + @@ -1468,44 +4763,103 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1519,61 +4873,165 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1582,118 +5040,349 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1705,202 +5394,429 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1908,72 +5824,126 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1987,83 +5957,163 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2076,59 +6126,133 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2141,12 +6265,44 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2159,25 +6315,63 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2186,67 +6380,151 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2254,50 +6532,106 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2306,9 +6640,13 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -2321,10 +6659,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + @@ -2333,72 +6693,186 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2406,12 +6880,60 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2420,24 +6942,76 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2451,68 +7025,166 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2520,61 +7192,146 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2586,6 +7343,26 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + @@ -2594,69 +7371,165 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2670,9 +7543,13 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -2686,49 +7563,110 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2736,9 +7674,13 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -2750,34 +7692,82 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2786,6 +7776,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -2794,6 +7800,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2802,6 +7816,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2810,6 +7832,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2818,6 +7848,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2826,6 +7864,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2834,6 +7880,30 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + @@ -2842,6 +7912,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + @@ -2852,113 +7930,319 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2967,22 +8251,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2991,130 +8307,304 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3128,24 +8618,37 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -3157,14 +8660,38 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + @@ -3178,18 +8705,39 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + @@ -3204,14 +8752,40 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3225,14 +8799,42 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3241,6 +8843,34 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3251,14 +8881,23 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + @@ -3275,30 +8914,66 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3315,6 +8990,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + @@ -3340,38 +9027,69 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3382,16 +9100,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -3402,9 +9136,25 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -3412,11 +9162,15 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -3432,11 +9186,15 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -3447,16 +9205,29 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + @@ -3465,8 +9236,15 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + @@ -3477,11 +9255,20 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + @@ -3492,9 +9279,18 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + @@ -3505,49 +9301,92 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3574,9 +9413,13 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + @@ -3590,55 +9433,79 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + @@ -3650,11 +9517,35 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + @@ -3663,11 +9554,35 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + @@ -3679,19 +9594,55 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3703,132 +9654,715 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3840,6 +10374,56 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3848,6 +10432,64 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3856,16 +10498,116 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3874,6 +10616,52 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3882,6 +10670,64 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3890,11 +10736,79 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3903,6 +10817,52 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3911,6 +10871,40 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3919,6 +10913,34 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3927,6 +10949,52 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3935,92 +11003,538 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4029,11 +11543,111 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4042,11 +11656,48 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4055,11 +11706,74 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4068,11 +11782,74 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4081,11 +11858,74 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4094,11 +11934,69 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4107,11 +12005,74 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4120,11 +12081,92 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4133,369 +12175,862 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4504,295 +13039,639 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4803,16 +13682,32 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + @@ -4823,286 +13718,960 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5114,67 +14683,179 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5185,25 +14866,80 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5212,43 +14948,114 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5260,11 +15067,23 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + @@ -5276,670 +15095,1289 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5948,93 +16386,490 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6043,22 +16878,54 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6066,44 +16933,79 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6112,72 +17014,510 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6186,36 +17526,145 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6223,39 +17672,134 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6263,19 +17807,50 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6284,24 +17859,88 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6313,17 +17952,65 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6332,24 +18019,75 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6358,109 +18096,304 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6469,123 +18402,364 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6594,14 +18768,23 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + @@ -6616,74 +18799,176 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6694,6 +18979,8 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + @@ -6702,158 +18989,402 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6862,368 +19393,740 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7234,6 +20137,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + @@ -7241,6 +20149,8 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + @@ -7249,239 +20159,665 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7509,33 +20845,74 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7546,16 +20923,22 @@ https://docs.gradle.org/current/userguide/dependency_verification.html + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 68aa9d48b5..0c65c65438 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=fba8464465835e74f7270bbf43d6d8a8d7709ab0a43ce1aa3323f73e9aa0c612 -distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/microbenchmark/build.gradle.kts b/microbenchmark/build.gradle.kts index 9a9475dcca..16630360b6 100644 --- a/microbenchmark/build.gradle.kts +++ b/microbenchmark/build.gradle.kts @@ -1,15 +1,17 @@ @file:Suppress("UnstableApiUsage") +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + + plugins { id("com.android.library") id("androidx.benchmark") - id("org.jetbrains.kotlin.android") id("ktlint") } android { namespace = "org.signal.microbenchmark" - compileSdkVersion = libs.versions.compileSdk.get() + compileSdkVersion(libs.versions.compileSdk.get()) compileOptions { isCoreLibraryDesugaringEnabled = true @@ -17,10 +19,6 @@ android { targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get()) } - kotlinOptions { - jvmTarget = libs.versions.kotlinJvmTarget.get() - } - defaultConfig { minSdk = libs.versions.minSdk.get().toInt() @@ -43,6 +41,12 @@ android { } } +kotlin { + compilerOptions { + jvmTarget = JvmTarget.fromTarget(libs.versions.kotlinJvmTarget.get()) + } +} + dependencies { coreLibraryDesugaring(libs.android.tools.desugar) lintChecks(project(":lintchecks")) diff --git a/reproducible-builds/Dockerfile b/reproducible-builds/Dockerfile index 05f2e6efbc..48fb46188f 100644 --- a/reproducible-builds/Dockerfile +++ b/reproducible-builds/Dockerfile @@ -16,7 +16,7 @@ RUN apt install -y git openjdk-17-jdk unzip wget ENV ANDROID_COMMAND_LINE_TOOLS_FILENAME commandlinetools-linux-10406996_latest.zip ENV ANDROID_API_LEVELS android-36 -ENV ANDROID_BUILD_TOOLS_VERSION 35.0.0 +ENV ANDROID_BUILD_TOOLS_VERSION 36.0.0 ENV ANDROID_HOME /usr/local/android-sdk-linux ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/cmdline-tools/bin diff --git a/wire-handler/lib/build.gradle.kts b/wire-handler/lib/build.gradle.kts index 1e93b467e1..091a41d7ee 100644 --- a/wire-handler/lib/build.gradle.kts +++ b/wire-handler/lib/build.gradle.kts @@ -13,5 +13,5 @@ repositories { } dependencies { - implementation("com.squareup.wire:wire-schema:4.4.3") + implementation("com.squareup.wire:wire-schema:6.0.0-alpha02") } diff --git a/wire-handler/lib/src/main/kotlin/org/signal/wire/Factory.kt b/wire-handler/lib/src/main/kotlin/org/signal/wire/Factory.kt index 75ac4eca30..42566ca286 100644 --- a/wire-handler/lib/src/main/kotlin/org/signal/wire/Factory.kt +++ b/wire-handler/lib/src/main/kotlin/org/signal/wire/Factory.kt @@ -3,7 +3,13 @@ package org.signal.wire import com.squareup.wire.schema.SchemaHandler class Factory : SchemaHandler.Factory { - override fun create(): SchemaHandler { + override fun create( + includes: List, + excludes: List, + exclusive: Boolean, + outDirectory: String, + options: Map + ): SchemaHandler { return Handler() } } diff --git a/wire-handler/wire-handler-1.0.0.jar b/wire-handler/wire-handler-1.0.0.jar index 0ca4ba830e0a2d1b40c584032695cac74b688400..e36dd90c29b64562b1ad494f9fb7ea4c8aa8bc8f 100644 GIT binary patch literal 5531 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 F{s&acG-3b% literal 5851 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