Android修炼之混淆

本文详细介绍了Android中的混淆技术,包括基本概念、ProGuard的工作原理、混淆语法和自定义混淆模板。混淆可以压缩、优化和混淆代码,但可能导致一些问题,如在集成SDK时遇到的Banner图无法显示和换肤功能失效等。解决这些问题通常需要通过分析mapping.txt文件和制定合适的混淆规则。混淆虽重要,但也需谨慎对待。
摘要由CSDN通过智能技术生成

自嘲时刻

作为Java和Android开发者,大家应该都对混淆很熟悉了。网上也有各路大神提供的混淆模板,基本上直接拿来用就好。但我还是想捋一捋,因为工作中被混淆这家伙“玩弄”了好几次,必须把它记在小本本上。

介绍

基本概念

混淆,字面上来说就是把项目中的包名、类名、方法名和变量名等进行更改,用以迷惑别人。但混淆其实包含了代码压缩、优化、校验等过程,把混淆称作ProGuard更合适。

ProGuard

ProGuard就是Java对Class文件进行“混淆”的工具。直接贴图吧:

(看到这个图,大家有没有想到什么?——设计模式中的责任链模式。)

1.shrink(压缩):ProGuard会递归地确定哪些类和类成员被使用,而其他的则被丢弃。
2.optimize(优化):ProGuard会进一步分析和优化方法。比如一些无用的参数会被丢弃,一些方法会做内联。
3.obfuscate(混淆):这个过程就是进行重命名了,把原来包含注释意义的类名、方法名等进行无意义重命名。
4.preverify(预校验):这个步骤是将预校验信息添加到类中。

这四个步骤其实都是可选的。当然,Android中一般情况下我们都会保留前三个步骤,而忽略preverify过程,这样可以加快混淆速度。

Android中的ProGuard

Android中默认集成了ProGuard工具,在sdk目录的/tools/proguard中。混淆开启方法:

android {...// AS自动生成buildTypes {release {// 混淆开关minifyEnabled true// 移除无用的resource文件shrinkResources true// proguard-android.txt表示默认的混淆规则// proguard-rules.pro表示自定义的混淆规则(文件名和后缀可以修改)proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
} 

默认的proguard-android.txt文件在sdk目录/tools/proguard中。该目录下还有个proguard-android-optimiz

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值