首页 > 编程知识 正文

Android注解,安卓哪些不能混淆

时间:2023-05-04 08:05:28 阅读:111666 作者:4770

1 .混淆的基本原理

安卓平台的混淆原理简单来说就是,即使将代码中原本具有具体意义的包名、类名、变量名、方法名等名称全部按照毫无意义的字母a、b、c……的顺序替换,也可以实现此外,即使代码被反编译,他人也很难理解代码的结构和具体含义。

2 .混淆步骤

模糊处理:

压缩(Shrink ) :会检测并从代码中移除不需要的类、字段、方法和特性(Attribute )。

优化(OPtimize )优化:字节码,消除无用的指令。

模糊处理(Obfuscate ) :使用短而无意义的名称a、b、c和d来重命名类、字段和方法。

预检(Preveirfy ) :预检在java平台上处理的代码,并验证加载的class文件是否可执行。

a .打开

禁用为true

buildTypes {

释放{

最小化真

proguardfilesgetdefaultproguardfile (proguard-Android.txt (),(proguard-rules.pro ) '。

}

}

b .安卓studio自定义文件

在sdk中,tool中有proguard-android.txt

在文件项目\app\proguard-rules.pro中进行自定义。

不混淆在ScrollView类中定制的public print函数

- keepclassmembersclasscom.example.zcx.democoderjoy.scrollviewacti {

公共*;

}

效果:添加前反编译:

家后效应:

添加了print函数,发现没有混淆。

一般参数:

-keep指定不要混淆类和类成员(变量和方法)。

-keepclassmembers指定的类成员不会混淆。 -这是-keep的缩小版。 类名没有关系。

-keepclasseswithmembers只要指定的类成员存在,指定的类和类成员就不会混淆

-keep

- keep public class * extends Android.support.v4.* *

-keepclassmembers

- keepclassmembersclass * extends Android.app.activity {

Ublicvoid*(Android.view.view );

}

每次构建时,ProGuard都会输出以下文件:

dump.txt描述了APK中所有类文件的内部结构。 mapping.txt会转换原始类、方法和字段名。 seeds.txt列出了未模糊化的类和成员。 usage.txt列出了从APK中删除的代码。

这些文件存储在/build/outputs/mapping/release /中

3 .混淆优缺点

混淆的优点主要有两个。 1 .优化删除无用代码,减少apk体积。 2 .混淆代码反编译后,无法理解具体内容。

缺点:调试不方便(可以使用mapping.txt ),测试不充分可能会导致某些功能无法使用。

4 .一般情况下,使用以下通配符进行匹配:

1 )匹配所有原始类型,如布尔、整型等,但void除外;

2 )?匹配不含句点的任何字符;

3 ) * :匹配任意字符,不含句点;

4 ) ** :匹配任何包含句点的字符;

*** :匹配任何类型,包括原类型和非原类型、数组类型和非数组类型

6 )…:使所有类型的参数任意数量一致。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。