Android Proguard原理及使用方法

1. Android Proguard原理

引用一下developer.android.com 的原文:

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure names. The result is a smaller sized .apkfile that is more difficult to reverse engineer[1].


1.1 Proguard 的目的

shrinks, optimizes, and obfuscates your code。 压缩,优化,使你的代码混乱。可以使apk很难被反编译,保护源代码。同时能够就减小包大小。


1.2  Proguard的实现方法

a. 删除无用代码

b. 用语义混乱的名字来重命名类,变量和方法,达到看不懂的目的。反编译过代码的都知道,混淆后,代码基本一坨子a,b,c这样的命名组成的。


1.3 Proguard之后的apk

具有两个特点:a.包更小  b.反编译之后,混淆后的代码里边的变量,类名字都是a,b,c神马的,基本看不懂,可以保护源代码。


1.4 Proguard 什么时候使用

基本打release包得时候会用,保护源代码。

debug的时候看个人喜好。


2. Android Proguard使用方法

Manual:http://proguard.sourceforge.net/

我们这里简单说一下keep的使用方法吧。开发中比较实用。


2.1 overview of keep opitons 



2.2 常用的keep 

参见文章:http://blog.youkuaiyun.com/banketree/article/details/41928175

由于转载麻烦,这里加了传送门了。


2.3 proguard 的一些妙用

我们可以利用这一特性解决debug日志的问题,在proguard.cfg中添加

-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

这样,release情况下,就可以通过混淆来干掉日志相关代码,也就不用频繁的改flag变量了。挺实用。


就先写到这里。希望对大家有用。





参考文献:

1. http://developer.android.com/tools/help/proguard.html#decoding

2. http://www.trinea.cn/android/proguard-grammar/

3. http://blog.youkuaiyun.com/banketree/article/details/41928175

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值