ProGuard not working as expected after Android Studio update

假如想象 提交于 2020-01-03 08:20:48

问题


Since I updated Android Studio to version 1.2.1.1 I have the following problem:

Whenever I build a release version / build variant of my app, I get a NoClassDefFoundError on the Adjust library I have included in the project as a library module.

The stracktrace:

   java.lang.NoClassDefFoundError: com.adjust.sdk.AdjustConfig
            at de.myapp.GlobalApp.prepareAdjust(GlobalApp.java:111)
            at de.myapp.GlobalApp.onCreate(GlobalApp.java:71)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151)
            at android.app.ActivityThread.access$1300(ActivityThread.java:130)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Corresponding part of my code:

    AdjustConfig config = new AdjustConfig(this, someString, otherString);

When I turn off Proguard with minifyEnabled false; in my build.gradle, the error is gone.

My proguard-rules.pro looks like this:

-keepattributes **
-keep class !android.support.v7.internal.view.menu.**,** {*;}
-dontpreverify
-dontoptimize
-dontshrink
-dontwarn **

These Proguard rules might look a bit strange because they do but one thing: obfuscate classes in the android.support.v7.internal.view.menu package. This procedure is a workaround for a a known issue of the Android Support library on Samsung devices.

Even more confusingly, the NoClassDefFoundError only occurs only devices running Android < 5.0.

Any ideas on what the reason could be or how to fix this?


回答1:


The documentation says:

If you are using Proguard, add these lines to your Proguard file:

-keep class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.** { *; }
-keep class com.google.android.gms.ads.identifier.** { *; }


来源:https://stackoverflow.com/questions/30575424/proguard-not-working-as-expected-after-android-studio-update

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!