Android jar包的混淆

本文介绍了Android项目中jar包的混淆配置和注意事项,包括混淆的目的、如何开启混淆、哪些不应混淆的元素(如反射、GSON序列化、枚举、四大组件和注解)以及如何处理混淆后的stacktrace。提供了混淆配置示例,如-keep和-dontwarn的使用,强调混淆可能带来的调试困难和处理方法。
摘要由CSDN通过智能技术生成

本文章的前提条件是,读者已经掌握了正确导出jar包的技能。

1、拷贝Android项目中“proguard.cfg”文件到你指定的位置,并改名为“proguard.pro”,此步是为proguardgui应用做前期的配置。

 

2、在android开发sdk相应的目录下找到proguardgui启动入口,mac os上的路径如下

“/Users/jayhomzhou/IDE/Android/adt-bundle-mac/sdk/tools/proguard/bin”

通过"终端"启动proguardgui

 

3、加载“1”中的"proguard.pro"配置文件

 

4、配置需要混淆的jar包,需要注意的是上部分是可以把多个jar包混淆输出成一个jar包,下半部分为混淆时所需的依赖jar包。

 

5、配置那些内容在混淆时忽略的,这里我选择了“Library”和“Enumeration”。

 

6、需要特别注意红框的选项,勾选后混淆出来的jar包有时导致在主项目中使用时报错:“conversion to dalvik format failedwith error 1”。

 

7、Optimization界面

 

8、红框1,正确选择target下拉框对应的jdk版本,否则可能出现异常错误。红框2,编译时如果遇到未找到定义的警告,那么在这里添加需要忽略的内容,详细看后面的步骤。

 

9、点击红框的按钮后,界面出现对上面一系列配置进行的汇总,此时最好进行保存(红框版本的按钮)。保存后的文件为.pro后缀,可以使用编辑软件进行对其作修改(必须按照proguard规范进行),再按照上述步骤进行重新加载。到这里一起工作已经就绪,那么点击“Process”开始混淆吧!(遇到警告或错误停止混淆,请使用“-dontwarn”进行屏蔽处理)。祝你好运,一切顺利,哈哈。

 


Android开发工作中,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆的操作。

本文为本人的一些实践总结,介绍一些混淆的知识和注意事项。希望可以帮助大家更好的学习和使用代码混淆。

什么是混淆

关于混淆维基百科上该词条的解释为

代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。

代码混淆影响到的元素有

  • 类名
  • 变量名
  • 方法名
  • 包名
  • 其他元素

混淆的目的

混淆的目的是为了加大反编译的成本,但是并不能彻底防止反编译.

如何开启混淆

  • 通常我们需要找到项目路径下app目录下的build.gradle文件
  • 找到minifyEnabled这个配置,然后设置为true即可.

一个简单的示例如下

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

proguard是什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值