先上一遍混淆说明文章,里面对混淆的方法说的很详细了(点我戳我),本遍思路来源于这遍文章的最底部@Keep,
所以这里不吹详细理论,只讲操作,也当是自己的笔记吧。(本次操作于Android studio)
如何快速keep住不想被混淆的部分?
首先得创建一个Annotation 文件 如:
package com.demo.annotation;
//@Target(ElementType.METHOD)
public @interface Keep {
}
有些朋友可能遇到在 Android studio 里面创建 Annotation 类型文件时提示 "cannot create class",没关系,你看上面的结构是
不是很像接口,你可以直接创建一个接口文件,然后在interface前面加 @ 就可以了。
这里说一下 @Target(ElementType.METHOD) 这个注解,这是一个控制可用范围的注解,ElementType泛型里面有多个元素
可选,如设置了ElementType.METHOD,那就只能在方法的前面设置这个注解,在不属于方法的前面设置注解就会提示异常,
这是注解的其中一小小部分知识,有兴趣可以去了解注解。当然,也可以不写@Target(),那样就可以在任何地方设置这个注解了。
使用如下:
package com.demo;
@Keep
public class Demo {
@Keep
private String abc = "abc";
@Keep
public static void onResume() {
}
public static void onPause() {
}
}
最后配置混淆文件,按照前面简书来配置的:
-keep,allowobfuscation @interface com.demo.annotation.Keep
-keep @com.demo.annotation.Keep class *
-keepclassmembers class * {
@com.demo.annotation.Keep *;
}
配置好后,以后哪些不想被混淆,直接在前面加@keep就可以了,多方便快捷啊
介绍一个Android-sdk里面自动的混淆tools, 路径android-sdk\tools\proguard\bin -->proguardgui.bat ,查看使用教程(戳我)