ProGuard的未正常工作后,Android更新工作室 [英] ProGuard not working as expected after Android Studio update
问题描述
由于我更新的Android Studio中的版本 1.2.1.1
我有以下问题:
每当我建立一个发布版本/构建我的应用程序变种,我得到一个的NoClassDefFoundError
上的调整我已经包含在项目作为库模块库。
该stracktrace:
java.lang.NoClassDefFoundError的:com.adjust.sdk.AdjustConfig
在de.myapp.GlobalApp。prepareAdjust(GlobalApp.java:111)
在de.myapp.GlobalApp.onCreate(GlobalApp.java:71)
在android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999)
在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151)
在android.app.ActivityThread.access $ 1300(ActivityThread.java:130)
在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1255)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:137)
在android.app.ActivityThread.main(ActivityThread.java:4745)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
我的code的相应部分:
AdjustConfig配置=新AdjustConfig(这一点,someString,otherString);
当我关掉ProGuard和 minifyEnabled假;
在我的的build.gradle
,错误已经一去不复返了。
我proguard-rules.pro看起来是这样的:
-keepattributes **
-keep类android.support.v7.internal.view.menu **,**!{*;}
-dont preverify
-dontoptimize
-dontshrink
-dontwarn **
这些规则的Proguard可能看起来有点奇怪,因为他们做的,但一件事:混淆在 android.support.v7.internal.view.menu
包中的类。
这个过程是一个<一个一个解决办法href=\"http://developer.samsung.com/forum/board/thread/view.do?boardName=General&messageId=248142\">a三星设备 Android的支持库的已知问题。
更容易混淆,在的NoClassDefFoundError
只发生仅在运行Android和LT装置; 5.0
。
这是什么原因可能是,或如何解决此问题的任何想法?
该文件说:
如果您正在使用ProGuard,这些行添加到您的Proguard的文件:
块引用>-keep类com.adjust.sdk ** {*。 }
-keep类com.google.android.gms.common ** {*。 }
-keep类com.google.android.gms.ads.identifier ** {*。 }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 mybuild.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?
解决方案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.** { *; }
这篇关于ProGuard的未正常工作后,Android更新工作室的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!