在 Android 中仅启用混淆而不启用代码压缩?
Enabling only obfuscation but not code shrinking in Android?
我想在 ProGuard 中只启用混淆功能,但同时禁用代码收缩,所以我设置
minifyEnabled false
useProguard true
然而,现在发布编译不再生成mapping.txt
,我猜这表明没有进行混淆?我认为 minifyEnabled
控制代码收缩和 useProguard
控制混淆,但事实并非如此?
useProguard
标志的具体作用是什么,我该如何获得预期的结果?
minifyEnabled true
:它运行 ProGuard
shrinkResources true
:它删除 ProGuard 标记为未使用的资源。
从 DEX 中删除不需要的文件的同时,您的 APK 大小也会减小。为了您的目的,您可以将此属性设置为 false
.
我认为您需要使用 -dontshrink
选项来保留所有未使用的 classes、方法和资源。
阅读 Shrinking options,其中文档说
-dontshrink
指定不收缩输入 class 文件。默认情况下,应用收缩;所有 classes 和 class 成员都被删除,除了各种 -keep 选项列出的成员,以及它们直接或间接依赖的成员。在每个优化步骤之后也会应用收缩步骤,因为某些优化可能会打开删除更多 classes 和 class 成员的可能性。
我想在 ProGuard 中只启用混淆功能,但同时禁用代码收缩,所以我设置
minifyEnabled false
useProguard true
然而,现在发布编译不再生成mapping.txt
,我猜这表明没有进行混淆?我认为 minifyEnabled
控制代码收缩和 useProguard
控制混淆,但事实并非如此?
useProguard
标志的具体作用是什么,我该如何获得预期的结果?
minifyEnabled true
:它运行 ProGuard
shrinkResources true
:它删除 ProGuard 标记为未使用的资源。
从 DEX 中删除不需要的文件的同时,您的 APK 大小也会减小。为了您的目的,您可以将此属性设置为 false
.
我认为您需要使用 -dontshrink
选项来保留所有未使用的 classes、方法和资源。
阅读 Shrinking options,其中文档说
-dontshrink
指定不收缩输入 class 文件。默认情况下,应用收缩;所有 classes 和 class 成员都被删除,除了各种 -keep 选项列出的成员,以及它们直接或间接依赖的成员。在每个优化步骤之后也会应用收缩步骤,因为某些优化可能会打开删除更多 classes 和 class 成员的可能性。