如何在发布模式下调试Android应用?

Ali*_*eza 4 android proguard android-studio

当我在发布模式下创建apk时,它在启动时崩溃

当我为proguard启用minifyEnabled时发生了问题,并通过在proguard-rules.pro中添加以下代码解决了该问题

-keep class my.package.name.** {*;}
Run Code Online (Sandbox Code Playgroud)

我认为原因是proguard删除了我的一些代码,但是我不知道哪一部分,因为它使我的代码模糊不清,并且读取logcat毫无用处。反正我能理解logcat消息吗?

java.lang.NullPointerException: throw with null exception
    at e.a.z.a(:176)
    at i.n.run(:71)
Run Code Online (Sandbox Code Playgroud)

eha*_*noc 6

由于这是一个正在运行生产的应用程序,因此如果您只需要了解崩溃报告,就不要破坏混淆(使用keepattributes)。

这在android / google指南中有详细说明。您可以上传由proguard创建的符号映射文件,该文件允许对崩溃报告进行模糊处理。

映射文件通常在此处生成:

build/outputs/mapping/release/mapping.txt
Run Code Online (Sandbox Code Playgroud)

这是在这里解释:https : //developer.android.com/studio/build/shrink-code#decode-stack-trace

Proguard具有此处描述的Retrace API:https//www.guardsquare.com/en/products/proguard/manual/retrace

然后上传到google-play以获得混淆报告:https : //support.google.com/googleplay/android-developer/answer/6295281


Fro*_*oyo 5

您可以配置 proguard 以获取更多信息。

-keepattributes SourceFile,LineNumberTable

这也将保留文件名和行号,因此您的 logcat 中将有更多数据。

此外,minifyEnabled在您的调试版本上使用,以便将 proguard 应用于您的调试版本,您将能够更好地调试它。

找到并解决问题后,您可以将其从 proguard 中删除。