diff --git a/baselineprofile/build.gradle.kts b/baselineprofile/build.gradle.kts index 0c68c8cadb..52cc6b0ce1 100644 --- a/baselineprofile/build.gradle.kts +++ b/baselineprofile/build.gradle.kts @@ -1,7 +1,5 @@ @file:Suppress("UnstableApiUsage") -import com.android.build.api.dsl.ManagedVirtualDevice - plugins { alias(libs.plugins.android.test) alias(libs.plugins.kotlin.android) @@ -52,8 +50,8 @@ android { // This code creates the gradle managed device used to generate baseline profiles. // To use GMD please invoke generation through the command line: // ./gradlew :examples:paywall-tester:generateBaselineProfile - testOptions.managedDevices.devices { - create("pixel6Api34") { + testOptions.managedDevices.localDevices { + create("pixel6Api34") { device = "Pixel 6" apiLevel = 34 systemImageSource = "aosp" diff --git a/build-logic/convention/src/main/kotlin/com/revenuecat/purchases/android/buildlogic/convention/ConfigureAndroidLibrary.kt b/build-logic/convention/src/main/kotlin/com/revenuecat/purchases/android/buildlogic/convention/ConfigureAndroidLibrary.kt index e70acbe869..876bdf182c 100644 --- a/build-logic/convention/src/main/kotlin/com/revenuecat/purchases/android/buildlogic/convention/ConfigureAndroidLibrary.kt +++ b/build-logic/convention/src/main/kotlin/com/revenuecat/purchases/android/buildlogic/convention/ConfigureAndroidLibrary.kt @@ -29,18 +29,25 @@ internal fun Project.configureAndroidLibrary() { defaultConfig { minSdk = obtainMinSdkVersion() - targetSdk = targetSdkVersion testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") + // AGP 9 defaults this to compileSdk, tightening the published floor from 1 to 36. + aarMetadata.minCompileSdk = 1 } + // AGP 9 removes targetSdk from a library's defaultConfig. testOptions { + targetSdk = targetSdkVersion unitTests.isIncludeAndroidResources = true unitTests.all { it.maxHeapSize = "1024m" } } + lint { + targetSdk = targetSdkVersion + } + compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 diff --git a/examples/purchase-tester/build.gradle.kts b/examples/purchase-tester/build.gradle.kts index 05d656e62f..3202c5c87c 100644 --- a/examples/purchase-tester/build.gradle.kts +++ b/examples/purchase-tester/build.gradle.kts @@ -55,11 +55,11 @@ android { getByName("release") { isMinifyEnabled = true proguardFiles( - getDefaultProguardFile("proguard-android.txt"), + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) testProguardFiles( - getDefaultProguardFile("proguard-android.txt"), + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-test-rules.pro", ) signingConfig = signingConfigs.getByName("release") diff --git a/integration-tests/build.gradle.kts b/integration-tests/build.gradle.kts index b32d9208a4..f554dada54 100644 --- a/integration-tests/build.gradle.kts +++ b/integration-tests/build.gradle.kts @@ -62,8 +62,8 @@ android { buildTypes { release { isMinifyEnabled = true - proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") - testProguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + testProguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") signingConfig = signingConfigs.getByName("release") } } diff --git a/integration-tests/proguard-rules.pro b/integration-tests/proguard-rules.pro index 57692edc71..f12796fcc8 100644 --- a/integration-tests/proguard-rules.pro +++ b/integration-tests/proguard-rules.pro @@ -24,3 +24,11 @@ # Needed due to robolectric update -dontwarn javax.lang.model.element.Modifier -dontwarn com.google.errorprone.annotations.IncompatibleModifiers + +# The app and androidTest APKs are minified separately but share a single classloader at +# runtime, and the test APK links against the Kotlin runtime and AndroidX test plumbing that +# ship inside the app APK. R8 optimization prunes whatever the app itself stops referencing, +# so the runner dies with NoSuchMethodError/NoClassDefFoundError before any test executes. +# This is an internal test app, so the size cost of keeping them does not matter. +-keep class kotlin.** { *; } +-keep class androidx.tracing.** { *; }