在 Android 中只启用混淆而不启用代码收缩?
Posted
技术标签:
【中文标题】在 Android 中只启用混淆而不启用代码收缩?【英文标题】:Enabling only obfuscation but not code shrinking in Android? 【发布时间】:2019-09-07 07:32:13 【问题描述】:我只想在 ProGuard 中启用混淆功能,但同时禁用代码收缩,所以我设置了
minifyEnabled false
useProguard true
但是,现在发布编译不再生成mapping.txt
,我猜这表明没有进行混淆?我以为minifyEnabled
控制代码收缩和useProguard
控制混淆,但似乎不是这样?
useProguard
标志具体有什么作用,如何达到预期的效果?
【问题讨论】:
【参考方案1】:minifyEnabled true
:它运行 ProGuard
shrinkResources true
:它会删除 ProGuard 标记为未使用的资源。
在从 DEX 中删除不需要的文件的同时,您的 APK 大小也会减小。为了您的目的,您可以将此属性设置为false
。
【讨论】:
【参考方案2】:我认为您需要使用-dontshrink
选项来保留所有未使用的类、方法和资源。
阅读Shrinking options,文档中说
-不要收缩
指定不收缩输入类文件。默认情况下,应用收缩;所有类和类成员都被删除,除了由各种 -keep 选项列出的那些以及它们直接或间接依赖的那些。在每个优化步骤之后还会应用收缩步骤,因为某些优化可能会打开删除更多类和类成员的可能性。
【讨论】:
以上是关于在 Android 中只启用混淆而不启用代码收缩?的主要内容,如果未能解决你的问题,请参考以下文章