ProGuard的未正常工作后,Android更新工作室 [英] ProGuard not working as expected after Android Studio update

查看:160
本文介绍了ProGuard的未正常工作后,Android更新工作室的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于我更新的Andr​​oid 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 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?

解决方案

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆