ProGuard导致NullPointerException [英] ProGuard leads to NullPointerException

查看:150
本文介绍了ProGuard导致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屋!

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