请注意,您每次使用 ProGuard 创建发布构建时都会覆盖mapping.txt文件,因此您每次发布新版本时都必须小心地保存一个副本。通过为每个发布构建保留一个mapping.txt文件副本,您就可以在用户提交的已混淆堆叠追踪来自旧版本应用时对问题进行调试。
在每次添加库的时候,需要及时进行make a release build
DexGuard时Proguard同一个团队开发的软件, 优化代码,分离dex文件从而解决65k方法限制的文件
关于proguard-android.txt文件:
- -dontusemixedcaseclassnames: 表示混淆时不使用大小写混淆类名。
- -dontskipnonpubliclibraryclasses:不跳过library中的非public方法。
- -verbose: 打印混淆的详细信息。
- -dontoptimize: 不进行优化,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行。
- -dontpreverify: 不进行预校验。
- -keepattributes Annotation :对注解参数进行保留。
- -keep public class com.google.vending.licensing.ILicensingService
- -keep public class com.android.vending.licensing.ILicensingService:
表示不混淆上述声明的两个类。
proguard中一共有三组六个keep关键字的含义
- keep 保留类和类中的成员,防止它们被混淆或移除。
- keepnames 保留类和类中的成员,防止它们被混淆,但当成员没有被引用时会被移除。
- keepclassmembers 只保留类中的成员,防止它们被混淆或移除。
- keepclassmembernames 只保留类中的成员,防止它们被混淆,但当成员没有被引用时会被移除。
- keepclasseswithmembers 保留类和类中的成员,防止它们被混淆或移除,前提是指名的类中的成员必须存在,如果不存在则还是会混淆。
- keepclasseswithmembernames 保留类和类中的成员,防止它们被混淆,但当成员没有被引用时会被移除,前提是指名的类中的成员必须存在,如果不存在则还是会混淆。
keepclasseswithmember和keep关键字的区别:
- 如果这个类没有native的方法,那么这个类会被混淆
- -keepclasseswithmember class * {
- native <methods>;
- }
- 不管这个类有没有native的方法,那么这个类不会被混淆
- -keep class * {
- native <methods>;
- }
另外、 你可以使用 APK Analyser 分解你的 APK
Android Studio 提供了一个有用的工具:APK Analyser。APK Analyser 将会拆解你的应用并让你知道 .apk 文件中的那个部分占据了大量空间。让我们看一下 Anti-Theft 在没有经过优化之前的截图。

从 Apk Analyser 的输出来看,应用的原大小是 3.1MB。经过 Play 商店的压缩,大致是 2.5MB。
从截图中可以看出主要有 3 个文件夹占据了应用的大多数空间。
- classes.dex —— 这是 dex 文件,包含了所有会运行在你的 DVM 或 ART 里的字节码文件。
- res —— 这个文件夹包含了所有在 res 文件夹下的文件。大部分情况下它包含所有图片,图标和源文件,菜单文件和布局。

- resources.arsc —— 这个文件包含了所有 value 资源。这个文件包含了你 value 目录下的所有数据。包括 strings、dimensions、styles、intergers、ids 等等。

你有两个默认的混淆文件。
- proguard-android-optimize.txt
- proguard-android.txt
就像文件名写的那样,“proguard-android-optimize.txt”是更积极的混淆选项。我们将这个作为默认的混淆配置。你可以在 /app 目录下的 proguard-rules.pro 里添加自定义的混淆配置。
- release {
- //Enable the proguard
- minifyEnabled true
- proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), "proguard-rules.pro"
- //Other parameters
- debuggable false
- jniDebuggable false
- renderscriptDebuggable false
- signingConfig playStoreConfig //Add your own signing config
- pseudoLocalesEnabled false
- zipAlignEnabled true
通过设置 minifyEnabled 为 true,混淆将会移除所有未使用的方法、指令以减小 classes.dex 文件。
这是启用了 minify 之后的 APK。
八、AndroidStudio使用lint清除无用的资源文件 (编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|