From d700b61c13e7a5a19425ad819be4d230c2852548 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 16:53:53 -0500 Subject: [PATCH 1/6] Upgrade to AGP 8.8.2 and Gradle 8.10.2 Commit just contains the upgrades themselves, a follow up commit will includes changes required to address their build requirements. --- Examples/OneSignalDemo/build.gradle | 2 +- Examples/OneSignalDemo/gradle/wrapper/gradle-wrapper.properties | 2 +- OneSignalSDK/build.gradle | 2 +- OneSignalSDK/gradle/wrapper/gradle-wrapper.properties | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Examples/OneSignalDemo/build.gradle b/Examples/OneSignalDemo/build.gradle index 4ec0efa17f..7c7fe6b087 100644 --- a/Examples/OneSignalDemo/build.gradle +++ b/Examples/OneSignalDemo/build.gradle @@ -12,7 +12,7 @@ buildscript { maven { url 'https://developer.huawei.com/repo/' } } dependencies { - classpath 'com.android.tools.build:gradle:7.2.2' + classpath 'com.android.tools.build:gradle:8.8.2' classpath 'com.google.gms:google-services:4.3.10' classpath 'com.huawei.agconnect:agcp:1.6.2.300' diff --git a/Examples/OneSignalDemo/gradle/wrapper/gradle-wrapper.properties b/Examples/OneSignalDemo/gradle/wrapper/gradle-wrapper.properties index 669386b870..18330fcba8 100644 --- a/Examples/OneSignalDemo/gradle/wrapper/gradle-wrapper.properties +++ b/Examples/OneSignalDemo/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/OneSignalSDK/build.gradle b/OneSignalSDK/build.gradle index 6ce6d76119..41e70e69ac 100644 --- a/OneSignalSDK/build.gradle +++ b/OneSignalSDK/build.gradle @@ -8,7 +8,7 @@ buildscript { targetSdkVersion: 34, minSdkVersion: 21 ] - androidGradlePluginVersion = '7.2.0' + androidGradlePluginVersion = '8.8.2' googleServicesGradlePluginVersion = '4.3.10' huaweiAgconnectVersion = '1.6.2.300' huaweiHMSPushVersion = '6.3.0.304' diff --git a/OneSignalSDK/gradle/wrapper/gradle-wrapper.properties b/OneSignalSDK/gradle/wrapper/gradle-wrapper.properties index 669386b870..18330fcba8 100644 --- a/OneSignalSDK/gradle/wrapper/gradle-wrapper.properties +++ b/OneSignalSDK/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 4d60062c11cc8bedf2467c5a11e73f6e3f41342b Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 19:14:21 -0500 Subject: [PATCH 2/6] Java compile errors from Gradle / AGP 8 upgrade --- .../com/onesignal/sdktest/application/MainApplication.java | 6 ++---- .../internal/display/impl/NotificationDisplayBuilder.kt | 5 ++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java index 06d70bfe09..75baf6720e 100644 --- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java +++ b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java @@ -21,7 +21,6 @@ import com.onesignal.notifications.IDisplayableNotification; import com.onesignal.notifications.INotificationLifecycleListener; import com.onesignal.notifications.INotificationWillDisplayEvent; -import com.onesignal.sdktest.BuildConfig; import com.onesignal.sdktest.R; import com.onesignal.sdktest.constant.Tag; import com.onesignal.sdktest.constant.Text; @@ -39,9 +38,8 @@ public class MainApplication extends MultiDexApplication { private static final int SLEEP_TIME_TO_MIMIC_ASYNC_OPERATION = 2000; public MainApplication() { - // run strict mode default in debug mode to surface any potential issues easier - if(BuildConfig.DEBUG) - StrictMode.enableDefaults(); + // run strict mode to surface any potential issues easier + StrictMode.enableDefaults(); } @SuppressLint("NewApi") diff --git a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/display/impl/NotificationDisplayBuilder.kt b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/display/impl/NotificationDisplayBuilder.kt index 2029c91084..6bcb1e8af4 100644 --- a/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/display/impl/NotificationDisplayBuilder.kt +++ b/OneSignalSDK/onesignal/notifications/src/main/java/com/onesignal/notifications/internal/display/impl/NotificationDisplayBuilder.kt @@ -12,7 +12,6 @@ import android.net.Uri import android.os.Build import androidx.core.app.NotificationCompat import com.onesignal.common.AndroidUtils -import com.onesignal.core.R import com.onesignal.core.internal.application.IApplicationService import com.onesignal.debug.internal.logging.Logging import com.onesignal.notifications.internal.bundle.impl.NotificationBundleProcessor @@ -231,9 +230,9 @@ internal class NotificationDisplayBuilder( if (bitmap == null) return null try { val systemLargeIconHeight = - contextResources!!.getDimension(R.dimen.notification_large_icon_height).toInt() + contextResources!!.getDimension(android.R.dimen.notification_large_icon_height).toInt() val systemLargeIconWidth = - contextResources!!.getDimension(R.dimen.notification_large_icon_width).toInt() + contextResources!!.getDimension(android.R.dimen.notification_large_icon_width).toInt() val bitmapHeight = bitmap.height val bitmapWidth = bitmap.width if (bitmapWidth > systemLargeIconWidth || bitmapHeight > systemLargeIconHeight) { From cb5bf6478ee5f27c632c8a299a260453fc7fff98 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 19:17:58 -0500 Subject: [PATCH 3/6] Gradle config changes required for Gradle / AGP 8 * namespace is now always required * Some gradle.properties values were completely dropped in APG 8 * Publish release access changed to avoid build error, more changes are need to actually publish. --- Examples/OneSignalDemo/app/build.gradle | 1 + Examples/OneSignalDemo/app/src/main/AndroidManifest.xml | 3 +-- OneSignalSDK/gradle.properties | 4 +--- OneSignalSDK/onesignal/maven-push.gradle | 4 +++- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Examples/OneSignalDemo/app/build.gradle b/Examples/OneSignalDemo/app/build.gradle index bef6ab719f..0357e3c8da 100644 --- a/Examples/OneSignalDemo/app/build.gradle +++ b/Examples/OneSignalDemo/app/build.gradle @@ -3,6 +3,7 @@ plugins { } android { + namespace 'com.onesignal.sdktest' compileSdkVersion 34 defaultConfig { minSdkVersion 21 diff --git a/Examples/OneSignalDemo/app/src/main/AndroidManifest.xml b/Examples/OneSignalDemo/app/src/main/AndroidManifest.xml index 14d81d3f3d..c35bc26d81 100644 --- a/Examples/OneSignalDemo/app/src/main/AndroidManifest.xml +++ b/Examples/OneSignalDemo/app/src/main/AndroidManifest.xml @@ -1,8 +1,7 @@ + xmlns:amazon="http://schemas.amazon.com/apk/res/android"> diff --git a/OneSignalSDK/gradle.properties b/OneSignalSDK/gradle.properties index 4a6e6ce6c0..b45ca2bbe2 100644 --- a/OneSignalSDK/gradle.properties +++ b/OneSignalSDK/gradle.properties @@ -23,9 +23,7 @@ # Remove when creating an .aar build. #android.enableAapt2=false -android.databinding.incremental = false -kapt.incremental.apt = false -android.testConfig.useRelativePath = false +org.gradle.jvmargs=-Xmx1536m # Enables D8 for all modules. android.enableD8 = true diff --git a/OneSignalSDK/onesignal/maven-push.gradle b/OneSignalSDK/onesignal/maven-push.gradle index ea2e91a46b..299c9fca8a 100644 --- a/OneSignalSDK/onesignal/maven-push.gradle +++ b/OneSignalSDK/onesignal/maven-push.gradle @@ -66,7 +66,9 @@ afterEvaluate { publications { release(MavenPublication) { - from components.release + afterEvaluate { + from components.findByName('release') + } pom { name = projectName From a3acd6addf9290c829d06cf0a31d54cccd547acc Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 19:21:36 -0500 Subject: [PATCH 4/6] Correctly omit Huawei from example when not used Since Gradle / AGP 8 upgrade the example doesn't work for Huawei builds, however this uncovered we were not correctly omitting it for all tasks. We will fix Huawei in the example project not building in follow up commit. --- Examples/OneSignalDemo/app/build.gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Examples/OneSignalDemo/app/build.gradle b/Examples/OneSignalDemo/app/build.gradle index 0357e3c8da..9b1ca75176 100644 --- a/Examples/OneSignalDemo/app/build.gradle +++ b/Examples/OneSignalDemo/app/build.gradle @@ -62,10 +62,11 @@ android { } task flavorSelection() { - if (getGradle().getStartParameter().getTaskRequests().toString().contains("Gms")) { + def tasksList = gradle.startParameter.taskRequests.toString() + if (tasksList.contains('Gms')) { apply plugin: 'com.google.gms.google-services' googleServices { disableVersionCheck = true } - } else { + } else if (tasksList.contains('Huawei')) { apply plugin: 'com.huawei.agconnect' } } From 637e9df06f07e7d6278a7bcfd216bab99a609607 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 20:39:27 -0500 Subject: [PATCH 5/6] Gradle 8 / AGP 8 requires Java / Kotlin module The top level gradle project needs a Java / Kotlin module, otherwise it skipped publishing an .aar file. While there is no code, projects consuming this SDK look for it. * Maybe we can omit the .aar on in the future for this top level project but keeping it working the same for now. Built SDK with Java 17 and tested publishing with a staging build with: * Java 11 * Gradle 7.3.3 * APG 7.2.2 * Android 5 & 14 Emulator WARNING: It is still recommended building with Java 17 instead of 21 when publishing, as those on older version of R8 will get this build error: * Cannot invoke "String.length()" because "" is null * See https://stackoverflow.com/q/77788162 --- OneSignalSDK/onesignal/build.gradle | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OneSignalSDK/onesignal/build.gradle b/OneSignalSDK/onesignal/build.gradle index 123970d38a..952c3dc5e9 100644 --- a/OneSignalSDK/onesignal/build.gradle +++ b/OneSignalSDK/onesignal/build.gradle @@ -1,5 +1,9 @@ plugins { id 'com.android.library' + // There isn't Kotlin or Java code in this top-level project, + // however consumers look for an .aar file, which this causes it + // to be created. + id 'kotlin-android' } android { @@ -25,6 +29,8 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } namespace 'com.onesignal' + + kotlinOptions.freeCompilerArgs += ['-module-name', namespace] } ext { From 78b24bc04cecbb88aa59aaa7e4f233b9c4080547 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Mon, 3 Mar 2025 21:25:58 -0500 Subject: [PATCH 6/6] Fix example app build for HMS for Gradle / AGP 8 --- Examples/OneSignalDemo/build.gradle | 2 +- OneSignalSDK/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Examples/OneSignalDemo/build.gradle b/Examples/OneSignalDemo/build.gradle index 7c7fe6b087..2f8ab94ba0 100644 --- a/Examples/OneSignalDemo/build.gradle +++ b/Examples/OneSignalDemo/build.gradle @@ -14,7 +14,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.8.2' classpath 'com.google.gms:google-services:4.3.10' - classpath 'com.huawei.agconnect:agcp:1.6.2.300' + classpath 'com.huawei.agconnect:agcp:1.9.1.304' // TODO: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/OneSignalSDK/build.gradle b/OneSignalSDK/build.gradle index 41e70e69ac..dd2638f8a8 100644 --- a/OneSignalSDK/build.gradle +++ b/OneSignalSDK/build.gradle @@ -10,7 +10,7 @@ buildscript { ] androidGradlePluginVersion = '8.8.2' googleServicesGradlePluginVersion = '4.3.10' - huaweiAgconnectVersion = '1.6.2.300' + huaweiAgconnectVersion = '1.9.1.304' huaweiHMSPushVersion = '6.3.0.304' huaweiHMSLocationVersion = '4.0.0.300' kotlinVersion = '1.7.10'