diff --git a/OneSignalSDK/onesignal/core/consumer-rules.pro b/OneSignalSDK/onesignal/core/consumer-rules.pro index d5ba5fee12..ccca563080 100644 --- a/OneSignalSDK/onesignal/core/consumer-rules.pro +++ b/OneSignalSDK/onesignal/core/consumer-rules.pro @@ -14,4 +14,6 @@ -keepclassmembers class com.onesignal.common.** { *; } --keep class ** implements com.onesignal.common.modules.IModule { *; } \ No newline at end of file +-keepclassmembers @com.onesignal.core.internal.minification.KeepStub class * { (...); } + +-keep class ** implements com.onesignal.common.modules.IModule { *; } diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/minification/KeepStub.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/minification/KeepStub.kt new file mode 100644 index 0000000000..cfa8f589a4 --- /dev/null +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/core/internal/minification/KeepStub.kt @@ -0,0 +1,8 @@ +package com.onesignal.core.internal.minification + +/** + * Purpose: Use on stub classes that are expected to always exists when + * aggressive minification is enabled on the app. + * - Such as android.enableR8.fullMode. + */ +annotation class KeepStub diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/internal/MisconfiguredIAMManager.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/internal/MisconfiguredIAMManager.kt index dbb124db43..4a5be6bcc0 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/internal/MisconfiguredIAMManager.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/internal/MisconfiguredIAMManager.kt @@ -1,13 +1,15 @@ package com.onesignal.inAppMessages.internal +import com.onesignal.core.internal.minification.KeepStub import com.onesignal.inAppMessages.IInAppMessageClickListener import com.onesignal.inAppMessages.IInAppMessageLifecycleListener import com.onesignal.inAppMessages.IInAppMessagesManager /** - * The misconfigured IAMManager is an implementation of [IInAppMessagesManager] that warns the user they - * have not included the appropriate IAM module. + * The misconfigured IAMManager is an implementation of [IInAppMessagesManager] + * that warns the dev they have not included the appropriate IAM module. */ +@KeepStub internal class MisconfiguredIAMManager : IInAppMessagesManager { override var paused: Boolean get() = throw EXCEPTION @@ -35,7 +37,7 @@ internal class MisconfiguredIAMManager : IInAppMessagesManager { override fun removeClickListener(listener: IInAppMessageClickListener) = throw EXCEPTION companion object { - private val EXCEPTION: Throwable get() = + private val EXCEPTION get() = Exception( "Must include gradle module com.onesignal:InAppMessages in order to use this functionality!", ) diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/location/internal/MisconfiguredLocationManager.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/location/internal/MisconfiguredLocationManager.kt index 1e950631ef..7b6dc68224 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/location/internal/MisconfiguredLocationManager.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/location/internal/MisconfiguredLocationManager.kt @@ -1,19 +1,21 @@ package com.onesignal.location.internal +import com.onesignal.core.internal.minification.KeepStub import com.onesignal.location.ILocationManager /** - * The misconfigured IAMManager is an implementation of [ILocationManager] that warns the user they + * The misconfigured IAMManager is an implementation of [ILocationManager] that warns the dev they * have not included the appropriate location module. */ +@KeepStub internal class MisconfiguredLocationManager : ILocationManager { override var isShared: Boolean get() = throw EXCEPTION set(value) = throw EXCEPTION - override suspend fun requestPermission(): Boolean = throw EXCEPTION + override suspend fun requestPermission() = throw EXCEPTION companion object { - private val EXCEPTION = Exception("Must include gradle module com.onesignal:Location in order to use this functionality!") + private val EXCEPTION get() = Exception("Must include gradle module com.onesignal:Location in order to use this functionality!") } } diff --git a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/notifications/internal/MisconfiguredNotificationsManager.kt b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/notifications/internal/MisconfiguredNotificationsManager.kt index a82296a432..30d320ff15 100644 --- a/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/notifications/internal/MisconfiguredNotificationsManager.kt +++ b/OneSignalSDK/onesignal/core/src/main/java/com/onesignal/notifications/internal/MisconfiguredNotificationsManager.kt @@ -1,21 +1,24 @@ package com.onesignal.notifications.internal +import com.onesignal.core.internal.minification.KeepStub import com.onesignal.notifications.INotificationClickListener import com.onesignal.notifications.INotificationLifecycleListener import com.onesignal.notifications.INotificationsManager import com.onesignal.notifications.IPermissionObserver /** - * The misconfigured NotificationsManager is an implementation of [INotificationsManager] that warns the user they - * have not included the appropriate notifications module. + * The misconfigured NotificationsManager is an implementation of + * [INotificationsManager] that warns the dev they have not included the + * appropriate notifications module. */ +@KeepStub internal class MisconfiguredNotificationsManager : INotificationsManager { - override val permission: Boolean + override val permission get() = throw EXCEPTION - override val canRequestPermission: Boolean + override val canRequestPermission get() = throw EXCEPTION - override suspend fun requestPermission(fallbackToSettings: Boolean): Boolean = throw EXCEPTION + override suspend fun requestPermission(fallbackToSettings: Boolean) = throw EXCEPTION override fun removeNotification(id: Int) = throw EXCEPTION @@ -36,6 +39,6 @@ internal class MisconfiguredNotificationsManager : INotificationsManager { override fun removeClickListener(listener: INotificationClickListener) = throw EXCEPTION companion object { - private val EXCEPTION = Exception("Must include gradle module com.onesignal:Notification in order to use this functionality!") + private val EXCEPTION get() = Exception("Must include gradle module com.onesignal:Notification in order to use this functionality!") } }