Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions android-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ android {
exclude 'META-INF/LICENSE'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

String url = '\"\"'
Expand Down Expand Up @@ -93,7 +93,7 @@ android {
resultsDir buildDir.absolutePath + '/orchestrator/results'
}
}
lintOptions {
lint {
enable 'UnknownNullness'
checkDependencies = true
abortOnError true
Expand Down
27 changes: 27 additions & 0 deletions android-core/proguard.pro
Original file line number Diff line number Diff line change
Expand Up @@ -219,4 +219,31 @@

-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}

# Firebase and GMS CloudMessaging
-dontwarn com.google.android.gms.cloudmessaging.**
-dontwarn com.google.firebase.messaging.**
-keep class com.google.firebase.messaging.** { *; }

# Java 9+ StringConcatFactory
-dontwarn java.lang.invoke.StringConcatFactory
-keep class java.lang.invoke.StringConcatFactory { *; }

# Keep lambdas
-keepclassmembers class * {
private static synthetic *** lambda$*(...);
}

# Keep any classes referenced but not found during R8 minification
-ignorewarnings
-keep class ** { *; }

# Additional rules to prevent minification errors with Kotlin
-keepattributes *Annotation*, InnerClasses, Signature, EnclosingMethod
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
-keepclassmembers class * {
@kotlin.Metadata <methods>;
}
6 changes: 3 additions & 3 deletions android-kit-base/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ android {
testBuildType 'debug'

defaultConfig {
minSdkVersion 14
minSdk 14
targetSdk 33
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
}
Expand All @@ -36,8 +36,8 @@ android {
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
buildscript {
ext.kotlin_version = '1.9.0'
ext.gradle_version = '7.3.1'
ext.gradle_version = '8.1.0'

repositories {
mavenCentral()
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
android.useAndroidX=true
org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2560m
android.defaults.buildfeatures.buildconfig=true
#-XX:ThreadStackSize=4096 -XX:CompilerThreadStackSize=4096
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Mon Oct 04 12:58:48 PDT 2021
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
8 changes: 4 additions & 4 deletions kit-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ apply from: '../scripts/maven.gradle'
dependencies {
implementation gradleApi()
implementation localGroovy()
compileOnly "com.android.tools.build:gradle:7.3.1"
testImplementation "com.android.tools.build:gradle:4.1.3"
compileOnly "com.android.tools.build:gradle:$gradle_version"
testImplementation "com.android.tools.build:gradle:$gradle_version"
}

compileGroovy {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

dependencies {
Expand Down
38 changes: 28 additions & 10 deletions kit-plugin/src/main/groovy/com/mparticle/kits/KitPlugin.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import org.gradle.api.Project
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.plugins.signing.SigningExtension
import org.gradle.api.JavaVersion

class KitPlugin implements Plugin<Project> {
void apply(Project target) {
Expand Down Expand Up @@ -35,7 +36,14 @@ class KitPlugin implements Plugin<Project> {
androidLib.defaultConfig.buildConfigField("String", "VERSION_CODE", '\"' + dateInt + '\"')
androidLib.buildTypes.release.minifyEnabled false
androidLib.buildTypes.release.consumerProguardFiles 'consumer-proguard.pro'
androidLib.lintOptions.abortOnError true
androidLib.lint.abortOnError true

// Add Java 17 compatibility
androidLib.compileOptions {
sourceCompatibility = 17
targetCompatibility = 17
}

androidLib.testOptions.unitTests.all { jvmArgs += ['--add-opens', 'java.base/java.lang=ALL-UNNAMED']
jvmArgs += ['--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED']
jvmArgs += ['--add-opens', 'java.base/java.util=ALL-UNNAMED']
Expand All @@ -48,6 +56,12 @@ class KitPlugin implements Plugin<Project> {
target.apply(plugin: 'maven-publish')
target.apply(plugin: 'signing')

// Configure publishing for AGP 8.x
androidLib.publishing {
singleVariant("release")
singleVariant("debug")
}

target.afterEvaluate {
PublishingExtension publishing = target.extensions.findByName('publishing')
publishing.publications.create("release", MavenPublication.class) {
Expand Down Expand Up @@ -142,20 +156,24 @@ class KitPlugin implements Plugin<Project> {
def signingKey = System.getenv("mavenSigningKeyId")
def signingPassword = System.getenv("mavenSigningKeyPassword")

if (signingKey != null) {
target.extensions.add('signing.keyId', signingKey)
target.extensions.add('signing.password', signingPassword)
// Updated signing approach for Gradle 8.x
if (signingKey != null && signingPassword != null) {
target.plugins.apply('signing')

SigningExtension signing = new SigningExtension(target)
signing.required = { target.gradle.taskGraph.hasTask("publishReleasePublicationToMavenRepository") }
signing.useInMemoryPgpKeys(signingKey, signingPassword)
signing.sign publishing.publications.findByName("release")
// Configure signing options
target.signing {
def required = target.provider {
target.gradle.taskGraph.hasTask("publishReleasePublicationToMavenRepository")
}
setRequired(required)
useInMemoryPgpKeys(signingKey, signingPassword)
sign publishing.publications.findByName("release")
}
}
}

//Publishing task aliases for simpler local development
target.task("publishLocal") { dependsOn "publishDebugPublicationToMavenLocal" }
target.task("publishReleaseLocal") { dependsOn "publishReleasePublicationToMavenLocal" }
}
}

}
28 changes: 21 additions & 7 deletions scripts/maven.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ allprojects {
ext."signing.password" = System.getenv("mavenSigningKeyPassword")
}

// For AGP 8.x compatibility, configure Android library projects
if (project.plugins.findPlugin("com.android.library")) {
android {
publishing {
// Configure publishing for both variants
singleVariant("release")
singleVariant("debug")
}
}
}

afterEvaluate {
publishing {
publications {
Expand All @@ -15,11 +26,13 @@ afterEvaluate {
artifactId = project.name
version = project.version
if (project.plugins.findPlugin("com.android.library")) {
// For AGP 8.x, reference the component directly
from components.release
} else {
from components.java
}

// Add sources/javadoc artifacts for all project types
if (project.tasks.findByName('generateJavadocsJar')) {
artifact project.tasks.getByName('generateJavadocsJar')
}
Expand Down Expand Up @@ -56,15 +69,16 @@ afterEvaluate {
artifactId = project.name
version = project.version
if (project.plugins.findPlugin("com.android.library")) {
// For AGP 8.x, reference the component directly
from components.debug
} else {
from components.java
}

// Add sources/javadoc artifacts for all project types
if (project.tasks.findByName('generateJavadocsJar')) {
artifact project.tasks.getByName('generateJavadocsJar')
}

if (project.tasks.findByName('generateSourcesJar')) {
artifact project.tasks.getByName('generateSourcesJar')
}
Expand Down Expand Up @@ -96,11 +110,11 @@ afterEvaluate {
}
repositories {
maven {
credentials {
username System.getenv('sonatypeUsername')
password System.getenv('sonatypePassword')
}
url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
credentials {
username System.getenv('sonatypeUsername')
password System.getenv('sonatypePassword')
}
url = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
}
}
}
Expand All @@ -116,4 +130,4 @@ afterEvaluate {

//Publishing task aliases for simpler local development
task publishLocal { dependsOn "publishDebugPublicationToMavenLocal" }
task publishReleaseLocal { dependsOn "publishReleasePublicationToMavenLocal" }
task publishReleaseLocal { dependsOn "publishReleasePublicationToMavenLocal" }
6 changes: 3 additions & 3 deletions tooling/android-plugin/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
apply plugin: 'groovy'
apply plugin: 'kotlin'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17


ext {
Expand All @@ -26,7 +26,7 @@ configurations {

dependencies {
fatJar project(':tooling:common')
compileOnly configurations.fatJar
compileOnly files(configurations.fatJar)
implementation gradleApi()
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation files('libs/java-json.jar')
Expand Down
8 changes: 6 additions & 2 deletions tooling/common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ dependencies {
}

java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}

kotlin {
jvmToolchain(17)
}
19 changes: 11 additions & 8 deletions tooling/custom-lint-rules/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ apply plugin: 'java-library'
apply plugin: 'kotlin'
apply plugin: 'com.android.lint'

sourceCompatibility = 1.8
targetCompatibility = 1.8
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17

kotlin {
jvmToolchain(17)
}

buildscript {
ext {
Expand Down Expand Up @@ -39,7 +43,7 @@ dependencies {
lintBuild files(jar)
lintJar files('libs/mparticle-min.jar')
lintJar project(':tooling:common')
implementation configurations.lintJar
implementation files(configurations.lintJar)
compileOnly "com.android.tools.lint:lint-api:$lintVersion"
compileOnly "com.android.tools.lint:lint-checks:$lintVersion"
compileOnly 'org.codehaus.groovy:groovy-all:3.0.13'
Expand All @@ -51,7 +55,7 @@ dependencies {

jar {
dependsOn(":tooling:common:jar")
archiveName 'lint.jar'
archiveFileName = 'lint.jar'
manifest {
attributes 'Manifest-Version': 1.0
attributes 'Lint-Registry-v2': 'com.mparticle.lints.MParticleIssueRegistry'
Expand All @@ -74,10 +78,9 @@ rootProject.project('android-core').android.buildTypes.all {

task zipSources(type: Jar) {
def fileName = "$project.rootDir/android-core/build/intermediates/javac/${targetBuildType}/classes"
from(fileTree(dir: fileName)) {
destinationDir new File("$project.projectDir/libs")
archiveName "mparticle.jar"
}
from(fileTree(dir: fileName))
destinationDirectory.set(new File("$project.projectDir/libs"))
archiveFileName.set("mparticle.jar")
outputs.upToDateWhen { false }
}

Expand Down