7

请看以下两张来自Android Studio 上的分析 APK的图片。

  • 第一个是minifyEnabled = false, 和
  • 另一个是 with minifyEnabled = true(当然是在用 mapping.txt 解码之后)

在此处输入图像描述
minifyEnabled = false. BuildConfig有没有。

在此处输入图像描述
minifyEnabled = true(使用 mapping.txt 解码)。BuildConfig不在这里。

我可以BuildConfigclasses.dex缩小之前找到,但不能在缩小之后找到。我找不到任何关于此的文档/讨论,但是在使用ProGuardBuildConfig缩小后是否有一些规则可以删除?那样的话,是不是意味着把敏感信息放进去比较安全呢?或者,它可能只是隐藏在其他地方?classes.dexBuildConfig

如果重要的话,我的 ProGuard 版本是 4.7。

4

2 回答 2

15

缩小步骤的另一个特点是常量的内联。这可以解释为什么 BuildConfig 消失了,但值仍然存在于需要的地方。一旦值被内联,就不再有对 BuildConfig 类的引用,并且压缩器可以完全删除它。

于 2019-05-30T01:56:55.700 回答
0

如果你在 BuildConfig 上使用了一些变量,那么 proguard 不会删除它。根据他们的手册

收缩步骤检测并删除未使用的类、字段、方法和属性。优化步骤分析和优化方法的字节码。混淆步骤使用简短无意义的名称重命名剩余的类、字段和方法。

此外,我一直在使用这些选项,并且从未遇到过 proguard 将我的信息剥离到BuildConfig.

shrinkResources true
minifyEnabled true
于 2019-05-27T01:58:52.927 回答