2017-10-12 42 views
0

突然,我刚刚从Play商店安装应用程序后开放的应用程序崩溃。 但问题是,当我在调试模式下运行android studio中的代码时,应用程序不会崩溃。通过上传progaurd规则映射文件到谷歌播放控制台Deobfuscate生产android错误

当我在谷歌播放控制台上查找崩溃错误时,我看到一些混淆代码不容易从错误发生的位置猜测出来。

java.lang.NullPointerException: 
    at com.wl.model.a.b (Unknown Source) 
    at com.wl.model.a.a (Unknown Source) 
    at com.wl.model.a$1.a (Unknown Source) 
    at b.w$a.b (Unknown Source) 
    at b.a.b.run (Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:588) 
    at java.lang.Thread.run (Thread.java:818) 

从错误我知道有一些空指针异常,但无法追踪它的起源。

谷歌播放控制台说上传反混淆文件去混淆错误代码。

现在我的问题是,我无法找到我的项目源文件夹中的去混淆文件。

我尝试上传pro-gaurd规则文件,但谷歌播放控制台拒绝它。

请为我提供寻找去混淆文件的路径或位置(它通常出现在这里)。

回答

1

时间后,你组装您发布的apk文件是在这里:

./gradlew clean assembleFLAVORRelease 

app/build/outputs/mapping/FLAVOR/release/mapping.txt 

请记住,你应该检查你的ProGuard规则:

-keepattributes SourceFile,LineNumberTable 

没有此属性,您将无法在播放控制台中看到行和源文件名。

+0

我会试试这个。 – WitVault

1

它在build/outputs/proguard/release/mapping.txt
请确保您的ProGuard的mapping.txt来自您的编译版本的相同版本。的mapping.txt被替换和更改每次您导出APK

+1

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/17603863) –

1

一些详细的解答和说明初学者和我一样 -

映射文件的位置反混淆:

ProGuard的保存在文件中的应用 应用程序/构建/输出/制图/ FLAVOR/release/mapping.txt

感谢@chrjs为answering它。

的一些陷阱:

的mapping.txt文件被覆盖每次创建一个发布版本与ProGuard的时间,因此,创建一个新的版本之前的文件先取备份。 这将有助于从旧版本的应用程序模糊堆栈跟踪。

除此之外,还有两种方法来混淆代码:

1.上传映射。txt文件到Google Play控制台:

在Google Play上发布您的应用时,您可以上传mapping.txt文件。然后,Google Play会将用户报告问题中的传入堆栈跟踪消除混淆,以便您可以在Google Play控制台中查看它们。 (通过改变建立变种释放并运行它),以交叉检查

一些你想运行你的应用程序的发行版次:

2.使用本地SDK工具retrace.sh/retrace.bat并修复错误,使其不会在生产中发生(当发布到游戏店时)。

到模糊堆栈跟踪转换成可读的一个自己,使用回扫脚本retrace.bat在Windows上;在Mac/Linux的retrace.sh)。

它位于<sdk-root>/tools/proguard/bin/目录中。

<sdk-root>是安装了所有android库和sdks的地方。

的脚本采用的mapping.txt文件和你的堆栈跟踪,产生一个新的,可读堆栈跟踪

命令语法:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>] 

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt 

我喜欢混淆的是很方便的预检查生产错误的本地版本。

+0

这应该是被接受的答案。好总结! :) – chrjs

+0

@chrjs你在答案中指出了正确的方向。谢谢 – WitVault

相关问题