我的应用在调试模式下运行良好。但是,上传到Google Play Store后,我发现应用程序崩溃了。我查找了几个类似的问题,都建议禁用Proguard或检查日志输出。然而,在使用发布版构建变体时,我遇到了以下情况:
1- 在正常情况下,当
minifyEnabled
为true
时,应用程序会崩溃,我无法看到任何日志输出。没有可调试的进程。release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
2- 将 debuggable true
设置为我的应用程序可以正常工作。但是由于应用程序正常工作,我仍然无法看到任何错误日志。
release {
debuggable true
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
3- 当注释掉minifyEnabled true
时,应用程序可以工作。但我会失去代码缩小的好处。
release {
shrinkResources true
//minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
我也尝试在AndroidManifest.XML中硬编码android:debuggable="true"
,但是会出错。
奇怪的是,将debuggable设置为true后,应用程序可以正常工作。我不确定在发布模式下是否应该保留debuggable true
或禁用缩小,或者采取其他解决此问题的方法。
如果有人能分享如何解决这个问题,我将非常感激。
更新:通过运行Android Device Monitor,我找到了问题所在:
01-28 00:28:13.764: E/AndroidRuntime(4806): FATAL EXCEPTION: main
01-28 00:28:13.764: E/AndroidRuntime(4806): Process: com.example.myapp, PID: 4806
01-28 00:28:13.764: E/AndroidRuntime(4806): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
01-28 00:28:13.764: E/AndroidRuntime(4806): at com.example.myapp.MainActivity.onCreateOptionsMenu(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.app.Activity.onCreatePanelMenu(Activity.java:3142)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v4.b.n.onCreatePanelMenu(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v7.view.i.onCreatePanelMenu(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v7.app.h$b.onCreatePanelMenu(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v7.view.i.onCreatePanelMenu(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v7.app.q.j(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.support.v7.app.q$1.run(Unknown Source)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.os.Handler.handleCallback(Handler.java:739)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.os.Handler.dispatchMessage(Handler.java:95)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.os.Looper.loop(Looper.java:148)
01-28 00:28:13.764: E/AndroidRuntime(4806): at android.app.ActivityThread.main(ActivityThread.java:7329)
01-28 00:28:13.764: E/AndroidRuntime(4806): at java.lang.reflect.Method.invoke(Native Method)
01-28 00:28:13.764: E/AndroidRuntime(4806): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
01-28 00:28:13.764: E/AndroidRuntime(4806): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)