android – Proguard导致崩溃

android – Proguard导致崩溃,第1张

概述设置时 minifyEnabled true useProguard true 在我的gradle中,我得到一个像这样的NullPointerException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jafari.farhad.ubazdidcontroller/com.jafari.farh 设置时

MinifyEnabled true

useProguard true

在我的gradle中,我得到一个像这样的NullPointerException:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jafari.farhad.ubazdIDcontroller/com.jafari.farhad.ubazdIDcontroller.LoginActivity}: java.lang.NullPointerException  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2180)  at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)  at androID.app.ActivityThread.access0(ActivityThread.java:141)  at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)  at androID.os.Handler.dispatchMessage(Handler.java:99)  at androID.os.Looper.loop(Looper.java:137)  at androID.app.ActivityThread.main(ActivityThread.java:5041)  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:793)  at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:560)  at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException  at com.jafari.farhad.ubazdIDcontroller.LoginActivity.onCreate(UnkNown Source)  at androID.app.Activity.performCreate(Activity.java:5104)  at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)  at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2144)  at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)   at androID.app.ActivityThread.access0(ActivityThread.java:141)   at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)   at androID.os.Handler.dispatchMessage(Handler.java:99)   at androID.os.Looper.loop(Looper.java:137)   at androID.app.ActivityThread.main(ActivityThread.java:5041)   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:793)   at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:560)   at dalvik.system.NativeStart.main(Native Method) 

Gradle是:

buildTypes {    deBUG {        MinifyEnabled false        proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro'    }    release {        MinifyEnabled true        useProguard true        proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro'    }}

在通过StackOverflow阅读时,我发现了proguard-rules.pro文件的一些设置,如下所示:

    -dontusemixedcaseclassnames    -dontskipnonpubliclibraryclasses    -verbose    -dontoptimize    -dontpreverify    -keepattributes *Annotation*    -keep public class com.Google.vending.licensing.IlicensingService    -keep public class com.androID.vending.licensing.IlicensingService    # For native methods,see http://proguard.sourceforge.net/manual/examples.HTML#native    -keepclasseswithmembernames class * {        native ;    }    # keep setters in VIEws so that animations can still work.    # see http://proguard.sourceforge.net/manual/examples.HTML#beans    -keepclassmembers public class * extends androID.vIEw.VIEw {       voID set*(***);       *** get*();    }    # We want to keep methods in Activity that Could be used in the XML attribute onClick    -keepclassmembers class * extends androID.app.Activity {       public voID *(androID.vIEw.VIEw);    }    # For enumeration classes,see http://proguard.sourceforge.net/manual/examples.HTML#enumerations    -keepclassmembers enum * {        public static **[] values();        public static ** valueOf(java.lang.String);    }    -keepclassmembers class * implements androID.os.Parcelable {      public static final androID.os.Parcelable$Creator CREATOR;    }    -keepclassmembers class **.R$* {        public static ;    }    -dontwarn androID.support.**    # Understand the @Keep support annotation.    -keep class androID.support.annotation.Keep    -keep @androID.support.annotation.Keep class * {*;}    -keepclasseswithmembers class * {        @androID.support.annotation.Keep ;    }    -keepclasseswithmembers class * {        @androID.support.annotation.Keep ;    }    -keepclasseswithmembers class * {        @androID.support.annotation.Keep (...);    }

当我取消MinifyEnabled everthing工作正常.
Thancks

解决方法 你可以在Proguard中使用这段代码

-keep class com.jafari.farhad.ubazdIDcontroller.LoginActivity**

但这会导致Proguard忽略LoginActivity类,并且您的代码不会被混淆.

最好的方法是查看哪个元素已将此创建引入Proguard.

总结

以上是内存溢出为你收集整理的android – Proguard导致崩溃全部内容,希望文章能够帮你解决android – Proguard导致崩溃所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1124032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存