gpt4 book ai didi

android - 如何使用 R8 将原始行号保留在堆栈跟踪中?

转载 作者:行者123 更新时间:2023-12-04 12:16:09 26 4
gpt4 key购买 nike

我试图弄清楚如何使用 R8 保留原始行号。
用当前的 AndroidStudio 做一个应用程序并用 R8 混淆它,甚至上传 mapping.txt文件到 Google Play 控制台,用户的堆栈跟踪在某些情况下是无用的,因为崩溃的行与真正的非混淆文件中的行不同。
这是一个示例,我的类(class)没有 3000 行,但是在第 3052 行( com.mypackage.activities.ManagerActivity.onCreate (ManagerActivity.java:3052) )中报告了错误:

Caused by: java.lang.NullPointerException: 
at com.mypackage.activities.ManagerActivity.onCreate (ManagerActivity.java:3052)
at android.app.Activity.performCreate (Activity.java:7136)
at android.app.Activity.performCreate (Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2990)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3148)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1861)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:193)
at android.app.ActivityThread.main (ActivityThread.java:6819)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:912)
有没有办法用 R8 和 AndroidStudio 获取错误的真实行号? 请记住,此代码已使用 mapping.txt 文件 进行了反混淆处理。

最佳答案

为了正确追溯混淆的堆栈跟踪,需要在配置文件中包含以下内容

 -keepattributes LineNumberTable,SourceFile
https://developer.android.com/studio/build/shrink-code#decode-stack-trace教育部信息。

关于android - 如何使用 R8 将原始行号保留在堆栈跟踪中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385769/

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