Android Gradle混淆打包

1.使用混淆build.gradle

buildTypes {
    release {
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

2.配置规则proguard-rules.pro

-keep class com.alibaba.fastjson.**{*; } #不混淆类
-dontwarn com.alibaba.fastjson.** #编译时不警告
-ignorewarnings  #忽略所有警告

3.外部第三方jar,不配置规则默认是混淆

a)配置规则

-libraryjars src/main/lib/xxx.jar #已去除,和build.gradle里引入包的规则重复。保留会报以下错误
The same input jar [/xx/xxx.jar] is specified twice.

和以下引入冲突build.gradle

dependencies {
compile files('src/main/lib/xxx.jar')
}

b)去掉混淆的类,可以点击xxx.jar查看里面的包,然后添加类似以下规则

-dontwarn org.apache.log4j.**

-keep class org.apache.log4j.** { *; }


编译:gradle assemblerelease


4.查看使用混淆编译出错的堆栈

混淆编译后会生成mapping.txt文件,使用<sdk_root>/tools/proguard/的retrace脚本(window下时retrace.bat,linux和mac是retrace.sh):

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
例如:
retrace.bat -verbose mapping.txt obfuscated_trace.txt

实际使用体验,对必现问题还是编译debug非混淆的查看



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值