Proguard 声称混淆了 .apk,但并没有

Proguard claims to obfuscate the .apk, but does not

我正在从 Eclipse 中导出一个 Android 应用程序。 Proguard 认为它根据控制台 dump.txt、mapping.txt、seeds.txt 和 usage.txt 输出混淆了 .apk,但是当我反编译 .apk 本身时,它并没有被混淆. 类 的名称和字段是完整的。我尝试了各种不同的 Proguard 配置,但就配置而言似乎没有任何问题。我确保清理项目,这样 classes.dex 文件就不会过时。

这在 Eclipse Neon 中对我有用:

  1. 右键单击项目并添加Gradle性质

  2. 文件 -> 导出 -> Android -> 生成 Gradle 构建文件

  3. 在你项目的根目录下,创建一个local.properties文件并设置sdk.dir。参见:Where does local.properties go for android project?

  4. 右键单击项目 -> Gradle -> 刷新 Gradle 项目

  5. 在 build.gradle 中启用代码收缩。参见:https://developer.android.com/studio/build/shrink-code.html

  6. 将您的 Proguard 配置放在 proguard-rules.pro 中(或者如果您在 build.gradle 中相应地设置了 proguardFiles 属性,则放在不同的文件中)

  7. 打开 Gradle 任务视图和 运行 assembleRelease 任务。检查控制台以查看它是否 运行 成功。如果一切顺利,请刷新您的项目目录,.apk 文件将位于 build/outputs/apk 子目录中。