1

在我的 gradle 中设置时,我在启动我的应用程序时 minifyEnabled true收到NullPointerException :

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文件的一些设置:

######### KEEP ANDROID SUPPORT V7 AND DESIGN
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

这并没有真正解决这个问题(但以前的 NullPointerException)。

最后是我毕业的重要部分:

buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.config
    }
}

当我解除minifyEnabled一切正常工作时。

谢谢你的帮助!

4

5 回答 5

9

It's likely that this happens, when serializing objects and the fields are not annotated by @SerializedName("param") (or similar) and therefor can not be found.

For debugging it also helps to temporarily set -keepnames class ** so that the class names are not obfuscated.

于 2017-11-06T00:42:15.207 回答
6

对我来说,添加行(你可能有你放置 POJO 文件的包的其他名称):

-keep class [mypackagename].model.** { *; }
-keep class [mypackagename].datamodel.** { *; }

完美地proguard.rules工作,然后选择:

android
{
    ...

    buildTypes {

        release {

            minifyEnabled true 
            shrinkResources true

        }
    }
}

设置在build.gradle(模块:app)

于 2019-06-18T07:49:53.097 回答
5

我们的想法是保留项目中包含的库提供的文件。我正在分享我的一个,proguard-rules.pro它可能会帮助你理解。

-keep class com.google.** { *; }
-keep class com.github.** { *; }
-keep class org.apache.** { *; }
-keep class com.android.** { *; }
-keep class junit.** { *; }
-keep class android.support.v7.widget.SearchView { *; }
-keep class com.myproject.model.** { *; }

希望有帮助!

于 2017-01-02T17:15:41.140 回答
2

大多数时候错误是由于android libs,试试这个

-keep interface android.support.** { *; }
-keep class android.support.** { *; }
于 2017-09-29T22:59:43.240 回答
-1

我解决了这个问题:

在 Android Studio 中运行后,我收到一个关于找不到Clean Project的名为resource-release-stripped.ap_的文件的错误。通过 Google 进行的一些搜索显示我需要shrinkResources在 gradle 文件中禁用,因为它与 Jack 不兼容。

于 2017-01-02T20:19:35.627 回答