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

2023-12-09

我正在尝试找出如何使用 R8 保留原始行号。

使用当前的AndroidStudio制作应用程序并使用R8对其进行混淆,甚至上传mapping.txt将文件上传到 Google Play Console 后,用户的堆栈跟踪在某些情况下是无用的,因为崩溃的行与真实的非混淆文件中的行不同。

这是一个示例,我的类没有 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

See https://developer.android.com/studio/build/shrink-code#decode-stack-trace获取教育部信息。

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

如何使用 R8 在堆栈跟踪中保留原始行号? 的相关文章

  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 与 Admob 广告单元 ID 混淆

    我跟着tutorial https developers google com admob android quick start在我的应用程序中创建广告横幅 到目前为止 这有效 我可以看到测试广告 但是 本教程指示我在两个不同的位置使用两
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在 Android 中使用 DataOutputStream 在 POST 正文中发送特殊字符 (ë ä ï)

    我目前正在开发一个具有大量服务器端通信的 Android 应用程序 昨天 我收到一份错误报告 称用户无法发送 简单 特殊字符 例如 我搜索过但没有找到任何有用的东西 可能重复 没有答案 https stackoverflow com que
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • Android 启动器快捷方式

    我制作了一个简单的打卡 打卡时钟应用程序 我想向用户添加在主屏幕上创建快捷方式的选项 该快捷方式将切换应用程序的状态 超时 超时 但我根本不希望此快捷方式在屏幕上打开应用程序 这是我的 setupShortcut private void
  • Android相机意图:如何获取全尺寸照片?

    我正在使用意图来启动相机 Intent cameraIntent new Intent android provider MediaStore ACTION IMAGE CAPTURE getParent startActivityForR
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android Webview 图像未加载

    我制作了一个简单的应用程序WebView 但有些图片无法加载 正确 在我的电脑上 错误 在模拟器中 Correct 错误 没有横幅 于是我用Chrome debug进行调试 发现我的代码被改变了 我不添加像noscript or style
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • SharedFlow 和 StateFlow 的主要区别

    两者有什么区别共享流 and 状态流 以及如何使用这些MVI建筑学 使用简单更好吗Flow或者这些作为状态和事件 Flow 是冷的 意味着它仅在收集数据时才发出数据 另外Flow不能保存数据 可以把它看成是水在里面流动的管道 Flow中的数
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想

随机推荐

  • 电子表格中特定工作表的 onEdit 触发器?

    我无法找到有关如何设置 onEdit 触发器的良好资源 我有一个只想在编辑特定工作表时运行的函数 例如说我有 Sheet1 Sheet2 Sheet3 Sheet4 Sheet5 我的脚本从工作表 2 3 4 中提取数据并填充工作表 1 我
  • 将automatic_scaling max_idle_instances 设置为零(0)有什么作用?

    将automatic scaling max idle instances 设置为零 0 有什么作用 automatic scaling max idle instances 0 min idle instances 0 它是否会导致活动实
  • 在 Mac 启动时运行 python 脚本

    我正在尝试让 python 脚本在启动时运行 我有以下文件 com test service plist
  • 刷新 JLabel 图标图像

    我使用 JLabel 在 JFrame 中显示图像并设置它的图标 它第一次工作 但是每当我去更改图像时 它仍然保持我第一次设置的内容 所以我尝试过这个 但结果仍然相同 contentPane remove lblPlaceholder lb
  • Google Apps 脚本:“错误 401:deleted_client OAuth 客户端已删除”突然?

    我目前在 Google Sheets 上使用 Google App Scripts 作为我的预算电子表格 本质上 我的设置方式是 Buy item 将费用输入 Google 表单 输入电子表格 使用 Apps 脚本将时间戳转换为 yyyy
  • 我如何有条件地要求使用 AngularJS 进行表单输入?

    假设我们正在使用 AngularJS 构建一个地址簿应用程序 人为的示例 我们有一个联系人表单 其中包含电子邮件和电话号码的输入 我们希望要求非此即彼 but not both 我们只想要email如果需要输入phone输入为空或无效 反之
  • d3:当鼠标悬停事件时,多系列折线图每行的工具提示

    我正在 Angular 2 应用程序中使用 d3 绘制图表 现在我有一个多系列折线图 因此我尝试在将鼠标悬停在其垂直位置时在每条线上添加工具提示 export class LineGraphDirective private host pr
  • 如何使用 HttpClient.PostAsync 发送大数据文件? [复制]

    这个问题在这里已经有答案了 我的功能如下 对于 25MB 左右的任何内容 它都可以很好地工作 但大于该值 它就会停止工作 当我说停止工作时 它不会抛出任何异常并且失败noserver函数底部的结果选项 我似乎找不到任何涉及任何其他缓冲区大小
  • 如何在 Spring Boot 中使用 Spring Web Services 动态 WSDL 生成?

    我跟着Spring Web 服务入门教程我已经整理了一个示例 Web 应用程序 可以在以下位置动态生成 W SDL ws holiday wsdl端点为请求提供服务 ws holidayService 到目前为止 一切都很好 现在我正在将该
  • 计算两条路径的交叉面积

    只有一个Raphael pathIntersection path1 path2 效用于Rapha l库 而这个方法只能获取交叉点这 2 条路径中 我需要的是交叉区域 如下图所示 该方法仅得到2分 用红色圆圈标记 我希望同时有另外 2 个点
  • 绝对路径和相对路径

    使用任何 Web 服务器或 Tomcat 时 绝对路径和相对路径有什么区别 绝对路径以 开头 指的是从当前站点 或虚拟主机 的根目录开始的位置 相对路径不以 开头 而是引用所引用文档的实际位置中的位置 示例 假设根是http foo com
  • 添加小数点时,ios 在字典上使用双引号

    我正在与 JSON 交互 对于 get 它工作正常 但是对于 post 我有一个错误 因为字典对象用双引号 引起来 对于网络服务 我收到双引号错误 问题是 如果我使用点来表示小数点 则会出现双引号 NSMutableDictionary d
  • 如何在 IPython 笔记本中隐藏 [重复]

    这个问题在这里已经有答案了 我正在绘制一个 NumPy 值数组 I 使用 IPython 笔记本 matplotlib使用绘图命令的内联模式plt plot I o 结果输出是
  • 使用生成的主键插入 Derby 表时,Eclipselink JPA 出现错误

    当使用生成的主键持久保存到表中时 EclipseLink 似乎错误地将空主键值传递给 Derby 德比返回错误尝试修改标识列在这种情况下 Derby 需要一条排除 id 值的 SQL 语句 我的问题是如何强制 EclipseLink 发送正
  • JavaScript 中处理大数 (BigNum) 的标准解决方案是什么?

    JavaScript 或浏览器中是否内置了 bignum 另一种方法是加载外部库 例如 但这似乎很慢并且可能会触发安全警告 我考虑过自己的基础http github com silentmatt javascript biginteger
  • 忽略基类 使用 Dokka 查看子类文档中的公共函数

    我使用 Dokka 为 View 子类生成了文档 效果很好 但文档包含基本 View 类的数百个公共函数 有没有办法只记录我的子类公共函数 我尝试将这些选项添加到 Gradle 任务中 但我不认为这就是它的用途 dokkaHtml dokk
  • 使用 EF Core Linq2Sql 进行聚合的聚合

    我有一个带有 EF Core 2 2 Code First DB 的 ASP NET Core 2 2 项目 我有以下实体 建筑物 基本上是一个带有一些其他重要数据的地址 Floor 包含楼层号 一栋建筑物可以有多层 一个楼层必须恰好有一个
  • 如何解释await/async同步上下文切换行为

    关于以下代码的行为 有几件事 但有一件主要的事情 我不明白 有人可以帮忙解释一下吗 它实际上是非常简单的代码 只是一个调用异步方法的常规方法 在异步方法中 我使用 using 块来尝试临时更改 SynchronizationContext
  • 从 JSP 返回 JSONP 而不是 JSON

    I found 这个问题从jsp将响应类型设置为json 但我需要将响应类型设置为jsonp以进行跨域访问 还会是这样吗 response setContentType application javascript 并将来自jsp的响应包装
  • 如何使用 R8 在堆栈跟踪中保留原始行号?

    我正在尝试找出如何使用 R8 保留原始行号 使用当前的AndroidStudio制作应用程序并使用R8对其进行混淆 甚至上传mapping txt将文件上传到 Google Play Console 后 用户的堆栈跟踪在某些情况下是无用的