minifyEnabled 导致应用程序在发布模式下崩溃

2023-12-25

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

1-正常情况下当minifyEnabled is true应用程序崩溃,我看不到任何日志输出。有没有可调试的进程.

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

2- Making 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
        }

也尝试过硬编码android:debuggable="true"在 AndroidManifest.XML 中给出错误。

奇怪的是,通过将 debuggable 设置为 true,应用程序可以正常工作。我不确定我是否应该保留debuggable true在发布模式下或禁用缩小,或解决此问题的任何其他解决方法。

如果有人能分享如何解决这个问题,我将非常感激。

UPDATE:通过跑步安卓设备监控器我能够找到问题所在:

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 小部件。我添加了以下行proguard-rules.pro文件位于里面app文件夹,问题消失了:

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

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

UPDATE:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

minifyEnabled 导致应用程序在发布模式下崩溃 的相关文章

随机推荐