0
我为我的发布版本运行ProGuard,并试图尽可能优化它。目前我唯一添加的自定义规则是序列化和Facebook。我现在正在运行我的发布版本,并且我得到一个堆栈跟踪,并且它映射回来的内容真的让我失望。这里是我的堆栈跟踪:Android - 使用静态字符串的Proguard错误
java.lang.NullPointerException
E/AndroidRuntime(10842): at com.myapp.android.myapp.dh.a(Unknown Source)
E/AndroidRuntime(10842): at android.support.v4.app.Fragment.b(Unknown Source)
E/AndroidRuntime(10842): at android.support.v4.app.w.a(Unknown Source)
E/AndroidRuntime(10842): at android.support.v4.app.p.onCreatePanelMenu(Unknown Source)
E/AndroidRuntime(10842): at android.support.v7.a.g.a(Unknown Source)
E/AndroidRuntime(10842): at android.support.v7.a.m.a(Unknown Source)
E/AndroidRuntime(10842): at android.support.v7.a.g.onCreatePanelMenu(Unknown Source)
在测绘,com.myapp.android.myapp.dh.a是:
com.myapp.android.myapp.LocalFragment -> com.myapp.android.myapp.dh:
java.lang.String USER_ACCOUNT -> a
在我实际的代码是这样的:
public static String USER_ACCOUNT = "com.myapp.android.myapp.LocalFragment.user_account";
现在这个常量用在整个片段的多个位置,但不应该为null。任何人看到过这样的问题? Proguard会用静力学做些奇怪的事情吗?
编辑:这个错误被抛出,应用程序基本崩溃,只要我采取行动,将载入这个片段。
再编辑 经过多一点调查后,我错了什么是错。一个是静态成员,但一个也是一个方法。这是onCreate方法。我也看到这个错误在logcat中的NPE被抛出的onCreate前:
W/SupportMenuInflater(10842): Cannot instantiate class: android.support.v7.widget.SearchView
W/SupportMenuInflater(10842): java.lang.NoSuchMethodException: <init> [class android.content.Context]
W/SupportMenuInflater(10842): at java.lang.Class.getConstructorOrMethod(Class.java:472)
W/SupportMenuInflater(10842): at java.lang.Class.getConstructor(Class.java:446)
W/SupportMenuInflater(10842): at android.support.v7.internal.view.e.a(Unknown Source)
W/SupportMenuInflater(10842): at android.support.v7.internal.view.e.a(Unknown Source)
W/SupportMenuInflater(10842): at android.support.v7.internal.view.c.a(Unknown Source)
W/SupportMenuInflater(10842): at android.support.v7.internal.view.c.inflate(Unknown Source)
W/SupportMenuInflater(10842): at com.myapp.android.myapp.dh.a(Unknown Source)