请查看以下来自Android Studio中的分析APK 的以下图像。
minifyEnabled = false
和minifyEnabled = true
一起使用(当然是在使用mapping.txt解码之后)
minifyEnabled = false
。 BuildConfig
在这里。
minifyEnabled = true
(使用mapping.txt解码)。 BuildConfig
不存在。
我可以在缩小之前在BuildConfig
中找到classes.dex
,但在缩小之后找不到。我找不到与此有关的任何文档/讨论,但是在使用 ProGuard 缩小后,有没有从BuildConfig
剥离classes.dex
的规则?在那种情况下,这是否意味着将敏感信息放入BuildConfig
相对安全?或者,它可能只是藏在其他地方?
如果这很重要,我的ProGuard版本是4.7。
答案 0 :(得分:3)
缩小步骤的另一个功能是常量的内联。这可以解释为什么BuildConfig消失了,而值仍然存在于需要的地方。一旦值被内联,就不再有对BuildConfig类的引用,并且压缩程序可以将其完全删除。
答案 1 :(得分:0)
如果您在BuildConfig上使用某些变量,则proguard不会将其删除。根据他们的manual:
收缩步骤检测并删除未使用的类,字段,方法和属性。优化步骤分析并优化了方法的字节码。混淆步骤使用简短的无意义名称重命名其余的类,字段和方法。
此外,我一直在使用这些选项,而且从未遇到过proguard在BuildConfig
上剥离我的信息的情况。
shrinkResources true
minifyEnabled true