Android性能优化:混淆

2019-02-11  本文已影响0人  tianyl

索引

在网络世界中,加密和破解也算是一个老生常谈的话题了,Android中也不例外,对于Android应用的加密,最首先也是最基础的就是代码混淆了

1 Proguard

1.1 Proguard介绍

对于,Google官方有一段话的解释
ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中的未使用项。ProGuard 还可优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码可令您的 APK 难以被逆向工程
简单来说,ProGuard对Java代码有压缩、优化、混淆,和预校验这四个方面的作用

1.2 Proguard常用配置

//保护类名不被混淆
-keep class com.tianyl.DemoActivity

//保护public static void无参的函数不被混淆
-keep class com.tianyl.DemoActivity{
    public static void *(); 
}

//保护所有
-keep class com.tianyl.DemoActivity{    *;
}

-keepclassmembers class com.tianyl.DemoActivity
//保护类名,但是没指定成员,所以函数名被混淆
-keepclasseswithmembers class com.tianyl.DemoActivity

//全被混淆了,如果不存在native函数,则这条语句等于无效
-keepclasseswithmembers class com.tianyl.DemoActivity{      native <methods>;}

当然Proguard常用的配置还有很多,具体的可以根据官方文档(https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions)或者在需要时使用搜索引擎查找

1.3 Proguard使用时的一些注意事项

因为Proguard会混淆类名,所以如果我们在使用三方库的时候,需要特别注意是否能够被混淆,而且由于Proguard还会移除没有用到的类(如果开启了此功能),所以对于那些没有直接使用到的类,例如通过反射使用时,特别要注意不要在编译时被Proguard删除,不然的话在应用运行时就会发生异常甚至崩溃

上一篇 下一篇

猜你喜欢

热点阅读