Android  的jar混淆踩坑之旅

这篇博客记录了在混淆Android jar包过程中遇到的问题,包括是否需要导入JDK的jar包、确定需要添加到libraryjars的jar、解决Proguard报错、配置文件加载失败、找不到混淆后的jar以及混淆后公开接口丢失的问题。博主提供了问题解决方案和一份参考的Proguard配置文件。
摘要由CSDN通过智能技术生成

最近公司需要将将之前提供个客户的jar进行混淆以保护代码,防止信息泄露。然后在网上搜了一大堆相关的android jar混淆资料,然后实践下来各有各的坑爹!
网上关于android 打jar包,proguard混淆的资料比较多,笔者就赘述了,需要可以的可以google。
本文就记录混淆jar过程中遇到的各种坑及解决办法,希望对遇到同样问题的读者有所帮助。

问题1. 需不需要导入jdk 的jar包?

虽然有些文档提示需要导入jdk的中的rt.jar(正确地址为:/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/jre/lib)
然后实践下来发现不需要。

问题2. 那些jar 需要libraryjars 上面添加

一般情况下最需添加的是android jar包,地址为/Users/wanny/Library/Android/sdk/platforms/android-25/android.jar,另外就是这个jar所依赖的第三方包,例如常见的gson、okhttp、v7等jar包。

问题3. proguard 混淆时报 Can’t read [/Users/wanny/Library/Android/sdk/platforms/android-25/android.jar] (Can’t process class [java/text/CollationElementIterator.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))) 等类似错误

这个问题比较坑爹,错误信息显示我们的jdk版本超过了java 1.7 51.0 版本,等我们去下载jdk 1.7 51.0 版本又是一阵折腾。而且更坑爹的最新的mac 系统不支持jdk 1.7 51.0 这么低的版本,我们都安装不了

出现这个问题的用户很多都是用android SDK toos中自带的proguard,建议到Proguard官网上下载proguard 最新的版本,问题迎刃而解。

问题4. Proguard Load configuration 失败。

当我们将混淆的配置文件写好,load configuration 后,期待着proguard 一次性将我们jar 混淆好,可悲他竟然报错,加载不了我们辛辛苦苦写的配置文件。

一般出现这个问题肯定是我们的proguard 配置文件写的有问题。可能原因
- 地址injars,outjars,libraryjars 等地址有误
- proguard keep 语句写错,注意keep 语句开头一定记得加上-
- 其他注释语句没有用# 注释起来

···

当然类似出现此问题,唯一的解决途径就是仔细再仔细的检查proguard 的配置文件。

问题5,混淆后未找到混淆后jar文件。

这个问题,是用户没有在proguard 配置文件中写上outjars 地址,或者没有在add output 添加导出后地址,记得添加上去就行
另外注意在这个地方proguard 需要你提供一个已经存在的jar包作为混淆后输出的jar包,可以先用用”touch new.jar”新建了一个空白的jar包,然后将地址添加上去。

问题6,混淆后需要对外提供的class也不见了,只剩下寥寥几个class

这个问题是因为我们对外的提供类没有keep 好,被proguard 当成无用的代码直接优化掉。
因此我们需要对外提供接口需要暴露出来,不需要混淆,可在配置文件加上

-keep public class com.cardinfolink.test{
    public <fields>;
    public <methods>;
}

其他的需要对外提供的接口都需要好

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值