Android代码混淆时报错"transformClassesAndResourcesWithProguardForRelease"的解决方案

一、 问题日志

  • Run tasks中:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':xxxx:transformClassesAndResourcesWithProguardForRelease'.
  • Java compiler中:
Warning: there were 4 instances of library classes depending on program classes.

二、 原因分析

gradle依赖的库和引用这个库的代码,其中一个被混淆一个没有被混淆,导致引用时不一致。


三、 解决方案

网上一些解决方案是忽略该warning,这种方法肯定是存在隐患的,并不能真正解决问题,既然一个混淆,一个没混淆,那么这里给出两种思路,要么都混淆,要么都保留:

1. 不混淆报错的二者

-dontwarn xxx.**
-keep class xxx.**{*;}  // 表示保留该类及其所有方法
  • 如果是要保留通过gradle依赖的开源库或者从外部导入的jar,在"proguard-rules.pro"文件中保留:
-keep class com.example.demo.**{*;}  // com.example.demo为xxxx.jar中的包名,这里表示保留它下面所有的内容

2. 混淆依赖的库

  • 如果是通过gradle依赖的开源库需要被混淆,在"build.gradle"文件中混淆该库:
dependencies {
    compile "com.org.example:demo:1.0.0"
    proguard "com.org.example:demo:1.0.0"
}
  • 如果是从外部导入的jar包,由于很多jar包已经混淆过,所以二次混淆很可能会出问题

四、 参考文献

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值