gpt4 book ai didi

java - minifyEnabled 导致应用程序在 Release模式下崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:19:01 74 4
gpt4 key购买 nike

我的应用程序在 Debug模式下运行良好。不幸的是,在上传到 Google Play 商店后,我发现该应用程序崩溃了。我搜索了几个类似的问题,所有这些问题都建议禁用 Proguard 或检查日志输出。但是,在使用 release Build Variant 时,我遇到了以下情况:

1- 在正常情况下,当 minifyEnabledtrue 时,应用程序崩溃并且我看不到任何日志输出。没有没有可调试的进程

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,应用程序可以正常工作。我不确定是否应该在 Release模式下保持 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)

最佳答案

看起来 Proguard 无法正确处理 SearchView 小部件。我将以下行添加到位于 app 文件夹内的 proguard-rules.pro 文件中,问题消失了:

-keep class android.support.v7.widget.SearchView { *; }

现在我不需要将 minifyEnabled 设置为 false。

更新:

对于仍然无法在 android studio 中查看错误日志或在发布版本中重现崩溃的用户,他们可以使用在线崩溃报告工具。

关于java - minifyEnabled 导致应用程序在 Release模式下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900434/

74 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com