forcedotcom / SalesforceMobileSDK-Android

Android SDK for Salesforce
Other
339 stars 384 forks source link

getBuildConfigValue failed app crashes when minifyEnabled and shrinkResources are enabled (R8) #2558

Closed johnjeremih closed 1 month ago

johnjeremih commented 1 month ago

I removed minifyEnabled true shrinkResources true

and it was working fine in the release build. I believe that it is something related to R8. Any Idea?

getBuildConfigValue failed java.lang.ClassNotFoundException: com.native.nativeandroid.BuildConfig at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:454) at java.lang.Class.forName(Class.java:379) at com.salesforce.androidsdk.app.e.F(SourceFile:1) at com.salesforce.androidsdk.app.e.k0(SourceFile:1) at com.salesforce.androidsdk.app.e.l0(SourceFile:1) at com.salesforce.androidsdk.app.e.K0(SourceFile:1) at com.salesforce.androidsdk.app.e.g0(SourceFile:1) at com.salesforce.androidsdk.app.e.f0(SourceFile:1) at com.salesforce.androidsdk.app.e.h0(SourceFile:1) at com.native.nativeandroid.NativeApplication.onCreate(Unknown Source:16) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1277) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.app.ActivityThread.main(ActivityThread.java:7872) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused by: java.lang.ClassNotFoundException: com.native.nativeandroid.BuildConfig

Exception thrown while instantiating class java.lang.InstantiationException: java.lang.Class<m6.a> cannot be instantiated at java.lang.Class.newInstance(Native Method) at com.salesforce.androidsdk.analytics.a.g(SourceFile:1) at com.salesforce.androidsdk.analytics.a.f(SourceFile:1) at com.salesforce.androidsdk.analytics.AnalyticsPublishingWorker.p(SourceFile:1) at androidx.work.Worker$a.run(Unknown Source:2) Work [ id=e5be6a56-030f-406a-90e7-ce8d786a85a7, tags={ com.salesforce.androidsdk.push.PushNotificationsRegistrationChangeWorker } ] failed because it threw an exception/error (Ask Gemini) java.util.concurrent.ExecutionException: java.lang.InstantiationException: java.lang.Class<t6.e> cannot be instantiated at androidx.work.impl.utils.futures.a.i(SourceFile:1) at androidx.work.impl.utils.futures.a.get(SourceFile:1) at androidx.work.impl.K$b.run(Unknown Source:4) at D0.s$a.run(SourceFile:3) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012) Caused by: java.lang.InstantiationException: java.lang.Class<t6.e> cannot be instantiated at java.lang.Class.newInstance(Native Method) at com.salesforce.androidsdk.push.PushNotificationsRegistrationChangeWorker.p(SourceFile:1) at androidx.work.Worker$a.run(Unknown Source:2) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637) at java.lang.Thread.run(Thread.java:1012)

johnjeremih commented 1 month ago

Found the solution in @brandonpage @wmathurin. Starting in grade 8.0.0, the R8 is more aggressive. image