Android代码混淆后查看日志

Android中可以通过混淆减少apk的大小,提高apk反编译的难度。

但是在混淆过后会遇到一个问题,就是日志,比如说错误日志的函数会变成abcd.

怎么解决这个问题呢

通过mapping文件

mapping文件是混淆后的代码跟正常代码的一个映射文件

通过这个文件可以把混淆后的代码转换成正常的代码展示

mapping文件在minifyEnabled 为false的时候,是不会产生的。当我们设置了minifyEnabled 为true,也就是开启混淆之后,默认是会在app下的build/outpus/mapping文件夹中产生一个mapping.txt文件

在这里插入图片描述

也可以通过在app下的proguard-rules.pro 文件中加入 -printmapping mapping.txt
就会在app下面输出一个mapping.txt文件

可以通过在混淆文件中加入

#保留源文件名称以及行号
-keepattributes SourceFile,LineNumberTable      
#保留自定义异常
-keep public class * extends java.lang.Exception  

来保留文件名跟行号

在这里插入图片描述

接下来就是解决方案

方案1
比如说我们把错误日志上传到了bugly或者firebase这种第三方平台。
我们可以通过上传mapping文件,比如bugly中,
在这里插入图片描述
如果是firebase,在开启混淆后,会报一个错
Execution failed for task ‘:app:uploadCrashlyticsMappingFileDebug’

Connection timed out: connect. If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.

这是因为firebase自动上传mapping的时候,因为国外网络原因,无法自动上传
需要设置

 debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.xxx//指定签名文件签名
            // 设置是否要自动上传
            firebaseCrashlytics {
                mappingFileUploadEnabled true
            }

        }

但是这样的话,就不能上传mapping文件了,这个可能需要解决这个网络问题了

方案二
1.cmd进入sdk/tools/proguard/bin目录

2.将混淆后的日志cache_file_name.txt和上文提到的mapping文件放入此目录中。

3.执行命令:retrace.bat mapping.txt cache_file_name.txt

通过sdk中的工具,用命令的方式输出原日志。cache_file_name.txt这个文件可以自己随意定义,只需要把错误日志复制到里面就行了


方案三

还可以通过gui图形界面的方式输出
还是进入到 sdk/tools/proguard/bin目录

在这里插入图片描述

使用proguard.bat

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值