ProGuard导致NullPointerException [英] ProGuard leads to NullPointerException
问题描述
在我的gradle中设置minifyEnabled true
时,启动我的应用程序时出现 NullPointerException :
When setting minifyEnabled true
in my gradle I get a NullPointerException when starting my app:
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.ae.formulaecalendar/de.ae.formulaecalendar.view.calendar.CalendarActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2444)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1367)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at de.ae.formulaecalendar.view.calendar.CalendarActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2504)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1367)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
在阅读StackOverflow时,我发现了 proguard-rules.pro 文件的一些设置:
While reading through StackOverflow I found some settings for the proguard-rules.pro file:
######### KEEP ANDROID SUPPORT V7 AND DESIGN
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
并不能真正解决这个问题(只是以前的NullPointerException).
which didn't really solve this problem (but a previous NullPointerException).
最后,我的gradle的重要部分:
Finally the important part of my gradle:
buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
当我不屑一顾时minifyEnabled
一切正常.
When I disbale minifyEnabled
everthing works fine.
感谢您的帮助!
推荐答案
我解决了这个问题:
在Android Studio中运行Clean Project
后,我遇到一个找不到名为 resource-release-stripped.ap _ 的文件的错误.通过Google进行的一些搜索显示,我需要在gradle文件中禁用shrinkResources
,因为它与Jack不兼容.
After running Clean Project
in Android Studio I got an error about a file called resource-release-stripped.ap_ that cannot be found. Some searching via Google showed up that I need to disable shrinkResources
in the gradle file because it is not compatible with Jack.
这篇关于ProGuard导致NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!