行业知识
Android Proguard混淆
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。
目录
- 一、导读
- 二、概览
- 三、语法规则
- 3.1 输入/输出选项
- 3.2 保留选项
- 3.3 缩小选项
- 3.4 优化选项
- 3.5 混淆选项
- 3.6 预验证选项
- 3.7 常规选项
- 四、过滤器
- 4.1 增量混淆
- 4.2 寻找未使用的代码及方法等(废弃代码)
- 五、混淆基本原则
- 5.1 系统相关类不要混淆
- 5.2 部分项目相关类不要混淆
- 5.3、添加混淆字典
- 5.4 r8 & proguard
- 六、 推荐阅读
一、导读
我们继续总结学习基础知识,温故知新。
本文讲述Android Proguard 相关知识。
二、概览
Proguard 四部曲:
shrink(删减):删减无用代码,包括类、变量、方法和属性,缩减了APK包的大小
optimize(优化):优化方法字节码,并移除无用的构造方法
obfuscate(混淆):混淆现有代码,将有意义的命名替换为无意义的命名
preverify(预校验):给类添加预校验信息,这是J2ME和Java 6及以上要求的
proguard 文档
三、语法规则
3.1 输入/输出选项
@ filename
“文件名”的缩写 ‘-include filename’.
-include filename
从给定文件filename递归读取配置选项
-basedirectory directoryname
指定这些配置参数或此配置文件中所有后续相对文件名的基目录
-injars class_path
指定要处理的应用程序的输入 jar(或 apks、aabs、aars、wars、ears、jmods、zip 或目录)。
可以使用多个-injars选项指定类路径条目。
-outjars class_path
指定输出 jar 的名称(或 apks、aabs、aars、wars、ears、jmods、zips 或目录)。
为了更好的可读性,可以使用多个-outjars选项指定类路径条目。如果没有任何-outjars选项,则不会编写任何 jars
-libraryjars class_path
指定要处理的应用程序的库 jar(或 apks、aabs、aars、wars、ears、jmods、zips、目录)
-skipnonpubliclibraryclasses
指定在读取库 jar 时跳过非公共类,以加快处理速度并减少 ProGuard 的内存使用量
-dontskipnonpubliclibraryclasses
指定不忽略非公共库类。从版本 4.5 开始,这是默认设置
-dontskipnonpubliclibraryclassmembers
指定不忽略包可见的库类成员(字段和方法)
-keepdirectories [directory_filter]
指定要保留在输出 jar 中的目录(或 apks、aabs、aars、wars、ears、jmods、zips 或目录)
-target version
已弃用:此选项仅适用于 Java 类文件版本
上一篇:宝塔面板怎么设置商城?
下一篇:git怎么挂服务器?