在 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 成员的可能性。