您的位置:首页 > 移动开发 > Android开发

Android Proguard原理及使用方法

2015-10-12 15:57 423 查看
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 
.apk
file 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.csdn.net/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.csdn.net/banketree/article/details/41928175
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android proguard