Skip to content

Commit b499d84

Browse files
committed
feat: Migrate to AGP 8.1.0
1 parent aa389c0 commit b499d84

File tree

12 files changed

+109
-42
lines changed

12 files changed

+109
-42
lines changed

android-core/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ android {
1313
exclude 'META-INF/LICENSE'
1414
}
1515
compileOptions {
16-
sourceCompatibility JavaVersion.VERSION_1_8
17-
targetCompatibility JavaVersion.VERSION_1_8
16+
sourceCompatibility JavaVersion.VERSION_17
17+
targetCompatibility JavaVersion.VERSION_17
1818
}
1919

2020
String url = '\"\"'
@@ -93,7 +93,7 @@ android {
9393
resultsDir buildDir.absolutePath + '/orchestrator/results'
9494
}
9595
}
96-
lintOptions {
96+
lint {
9797
enable 'UnknownNullness'
9898
checkDependencies = true
9999
abortOnError true

android-core/proguard.pro

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,31 @@
219219

220220
-keepnames class * implements android.os.Parcelable {
221221
public static final ** CREATOR;
222+
}
223+
224+
# Firebase and GMS CloudMessaging
225+
-dontwarn com.google.android.gms.cloudmessaging.**
226+
-dontwarn com.google.firebase.messaging.**
227+
-keep class com.google.firebase.messaging.** { *; }
228+
229+
# Java 9+ StringConcatFactory
230+
-dontwarn java.lang.invoke.StringConcatFactory
231+
-keep class java.lang.invoke.StringConcatFactory { *; }
232+
233+
# Keep lambdas
234+
-keepclassmembers class * {
235+
private static synthetic *** lambda$*(...);
236+
}
237+
238+
# Keep any classes referenced but not found during R8 minification
239+
-ignorewarnings
240+
-keep class ** { *; }
241+
242+
# Additional rules to prevent minification errors with Kotlin
243+
-keepattributes *Annotation*, InnerClasses, Signature, EnclosingMethod
244+
-keepclassmembers class kotlin.Metadata {
245+
public <methods>;
246+
}
247+
-keepclassmembers class * {
248+
@kotlin.Metadata <methods>;
222249
}

android-kit-base/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ android {
1414
testBuildType 'debug'
1515

1616
defaultConfig {
17-
minSdkVersion 14
17+
minSdk 14
1818
targetSdk 33
1919
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
2020
}
@@ -36,8 +36,8 @@ android {
3636
}
3737

3838
compileOptions {
39-
sourceCompatibility JavaVersion.VERSION_1_8
40-
targetCompatibility JavaVersion.VERSION_1_8
39+
sourceCompatibility JavaVersion.VERSION_17
40+
targetCompatibility JavaVersion.VERSION_17
4141
}
4242
}
4343

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
buildscript {
22
ext.kotlin_version = '1.9.0'
3-
ext.gradle_version = '7.3.1'
3+
ext.gradle_version = '8.1.0'
44

55
repositories {
66
mavenCentral()

gradle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
android.useAndroidX=true
33
org.gradle.daemon=true
44
org.gradle.jvmargs=-Xmx2560m
5+
android.defaults.buildfeatures.buildconfig=true
56
#-XX:ThreadStackSize=4096 -XX:CompilerThreadStackSize=4096
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#Mon Oct 04 12:58:48 PDT 2021
22
distributionBase=GRADLE_USER_HOME
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
44
distributionPath=wrapper/dists
55
zipStorePath=wrapper/dists
66
zipStoreBase=GRADLE_USER_HOME

kit-plugin/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ apply from: '../scripts/maven.gradle'
99
dependencies {
1010
implementation gradleApi()
1111
implementation localGroovy()
12-
compileOnly "com.android.tools.build:gradle:7.3.1"
13-
testImplementation "com.android.tools.build:gradle:4.1.3"
12+
compileOnly "com.android.tools.build:gradle:$gradle_version"
13+
testImplementation "com.android.tools.build:gradle:$gradle_version"
1414
}
1515

1616
compileGroovy {
17-
sourceCompatibility = JavaVersion.VERSION_1_8
18-
targetCompatibility = JavaVersion.VERSION_1_8
17+
sourceCompatibility = JavaVersion.VERSION_17
18+
targetCompatibility = JavaVersion.VERSION_17
1919
}
2020

2121
dependencies {

kit-plugin/src/main/groovy/com/mparticle/kits/KitPlugin.groovy

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import org.gradle.api.Project
66
import org.gradle.api.publish.PublishingExtension
77
import org.gradle.api.publish.maven.MavenPublication
88
import org.gradle.plugins.signing.SigningExtension
9+
import org.gradle.api.JavaVersion
910

1011
class KitPlugin implements Plugin<Project> {
1112
void apply(Project target) {
@@ -35,7 +36,14 @@ class KitPlugin implements Plugin<Project> {
3536
androidLib.defaultConfig.buildConfigField("String", "VERSION_CODE", '\"' + dateInt + '\"')
3637
androidLib.buildTypes.release.minifyEnabled false
3738
androidLib.buildTypes.release.consumerProguardFiles 'consumer-proguard.pro'
38-
androidLib.lintOptions.abortOnError true
39+
androidLib.lint.abortOnError true
40+
41+
// Add Java 17 compatibility
42+
androidLib.compileOptions {
43+
sourceCompatibility = 17
44+
targetCompatibility = 17
45+
}
46+
3947
androidLib.testOptions.unitTests.all { jvmArgs += ['--add-opens', 'java.base/java.lang=ALL-UNNAMED']
4048
jvmArgs += ['--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED']
4149
jvmArgs += ['--add-opens', 'java.base/java.util=ALL-UNNAMED']
@@ -48,6 +56,12 @@ class KitPlugin implements Plugin<Project> {
4856
target.apply(plugin: 'maven-publish')
4957
target.apply(plugin: 'signing')
5058

59+
// Configure publishing for AGP 8.x
60+
androidLib.publishing {
61+
singleVariant("release")
62+
singleVariant("debug")
63+
}
64+
5165
target.afterEvaluate {
5266
PublishingExtension publishing = target.extensions.findByName('publishing')
5367
publishing.publications.create("release", MavenPublication.class) {
@@ -142,20 +156,24 @@ class KitPlugin implements Plugin<Project> {
142156
def signingKey = System.getenv("mavenSigningKeyId")
143157
def signingPassword = System.getenv("mavenSigningKeyPassword")
144158

145-
if (signingKey != null) {
146-
target.extensions.add('signing.keyId', signingKey)
147-
target.extensions.add('signing.password', signingPassword)
159+
// Updated signing approach for Gradle 8.x
160+
if (signingKey != null && signingPassword != null) {
161+
target.plugins.apply('signing')
148162

149-
SigningExtension signing = new SigningExtension(target)
150-
signing.required = { target.gradle.taskGraph.hasTask("publishReleasePublicationToMavenRepository") }
151-
signing.useInMemoryPgpKeys(signingKey, signingPassword)
152-
signing.sign publishing.publications.findByName("release")
163+
// Configure signing options
164+
target.signing {
165+
def required = target.provider {
166+
target.gradle.taskGraph.hasTask("publishReleasePublicationToMavenRepository")
167+
}
168+
setRequired(required)
169+
useInMemoryPgpKeys(signingKey, signingPassword)
170+
sign publishing.publications.findByName("release")
171+
}
153172
}
154173
}
155174

156175
//Publishing task aliases for simpler local development
157176
target.task("publishLocal") { dependsOn "publishDebugPublicationToMavenLocal" }
158177
target.task("publishReleaseLocal") { dependsOn "publishReleasePublicationToMavenLocal" }
159178
}
160-
}
161-
179+
}

scripts/maven.gradle

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,17 @@ allprojects {
77
ext."signing.password" = System.getenv("mavenSigningKeyPassword")
88
}
99

10+
// For AGP 8.x compatibility, configure Android library projects
11+
if (project.plugins.findPlugin("com.android.library")) {
12+
android {
13+
publishing {
14+
// Configure publishing for both variants
15+
singleVariant("release")
16+
singleVariant("debug")
17+
}
18+
}
19+
}
20+
1021
afterEvaluate {
1122
publishing {
1223
publications {
@@ -15,11 +26,13 @@ afterEvaluate {
1526
artifactId = project.name
1627
version = project.version
1728
if (project.plugins.findPlugin("com.android.library")) {
29+
// For AGP 8.x, reference the component directly
1830
from components.release
1931
} else {
2032
from components.java
2133
}
2234

35+
// Add sources/javadoc artifacts for all project types
2336
if (project.tasks.findByName('generateJavadocsJar')) {
2437
artifact project.tasks.getByName('generateJavadocsJar')
2538
}
@@ -56,15 +69,16 @@ afterEvaluate {
5669
artifactId = project.name
5770
version = project.version
5871
if (project.plugins.findPlugin("com.android.library")) {
72+
// For AGP 8.x, reference the component directly
5973
from components.debug
6074
} else {
6175
from components.java
6276
}
6377

78+
// Add sources/javadoc artifacts for all project types
6479
if (project.tasks.findByName('generateJavadocsJar')) {
6580
artifact project.tasks.getByName('generateJavadocsJar')
6681
}
67-
6882
if (project.tasks.findByName('generateSourcesJar')) {
6983
artifact project.tasks.getByName('generateSourcesJar')
7084
}
@@ -96,11 +110,11 @@ afterEvaluate {
96110
}
97111
repositories {
98112
maven {
99-
credentials {
100-
username System.getenv('sonatypeUsername')
101-
password System.getenv('sonatypePassword')
102-
}
103-
url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
113+
credentials {
114+
username System.getenv('sonatypeUsername')
115+
password System.getenv('sonatypePassword')
116+
}
117+
url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
104118
}
105119
}
106120
}
@@ -116,4 +130,4 @@ afterEvaluate {
116130

117131
//Publishing task aliases for simpler local development
118132
task publishLocal { dependsOn "publishDebugPublicationToMavenLocal" }
119-
task publishReleaseLocal { dependsOn "publishReleasePublicationToMavenLocal" }
133+
task publishReleaseLocal { dependsOn "publishReleasePublicationToMavenLocal" }

tooling/android-plugin/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
apply plugin: 'groovy'
22
apply plugin: 'kotlin'
33

4-
sourceCompatibility = JavaVersion.VERSION_1_8
5-
targetCompatibility = JavaVersion.VERSION_1_8
4+
sourceCompatibility = JavaVersion.VERSION_17
5+
targetCompatibility = JavaVersion.VERSION_17
66

77

88
ext {
@@ -26,7 +26,7 @@ configurations {
2626

2727
dependencies {
2828
fatJar project(':tooling:common')
29-
compileOnly configurations.fatJar
29+
compileOnly files(configurations.fatJar)
3030
implementation gradleApi()
3131
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
3232
implementation files('libs/java-json.jar')

0 commit comments

Comments
 (0)