java mapping文件_Android R8 mapping.txt文件解读

mapping.txt文件解读

链接

R8

Android Gradle Plugin 3.4.0之后,默认使用R8替代原来的ProGuard,R8在编译过程中主要执行:

Code shrinking (or tree-shaking): 检测及删除无用代码

Resource shrinking: 检测及删除无用资源,包括 Code shrinking 删除的代码中引用到的资源

Obfuscation: 混淆即使用简单字符替代原来的类名、方法名和变量名,减少(复用)字符串常量

Optimization: 代码优化,例如方法内联等

同时R8编译之后也会压缩LineNumberTable,导致我们读取崩溃栈信息的时候异常头疼,因为代码行数有可能完全对不上。好在R8在混淆的时候会另外输出一个mapping.txt文件,记录混淆的信息(包括代码行数变化信息),因此我们可以通过该文件逆向解析崩溃栈。

mapping文件格式

classline

fieldline * N

methodline * M

复制代码

__mapping.txt__文件的格式如上所示:__classline__是类信息,紧接着是__N__个__fieldline__的变量信息,以及__M__个__methodline__的方法信息。

originalclassname -> obfuscatedclassname:

复制代码

__classline__的格式如上所示:由一个 -> 分隔:前半部分是原始类名,后半部分是混淆之后的类名

originalfieldtype original

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值