使用 ProGuard 缩小代码后,我可以在 APK 分析器中的何处找到我的 BuildConfig?
Where can I find my BuildConfig in the APK analyzer after minifying the code with ProGuard?
请查看以下两张来自 Analyze APK 的 Android Studio 图像。
- 第一个是
minifyEnabled = false
,还有
- 另一个是
minifyEnabled = true
(当然是用mapping.txt解码后)
minifyEnabled = false
。 BuildConfig
在。
minifyEnabled = true
(用mapping.txt解码)。 BuildConfig
不存在。
我在缩小之前可以在 classes.dex
中找到 BuildConfig
,但缩小之后就找不到了。我找不到关于此的任何 document/discussion,但是在使用 ProGuard 缩小后,是否有一些规则可以从 classes.dex
中删除 BuildConfig
?那么,是不是说敏感信息放在BuildConfig
就相对安全了呢?或者,它可能只是隐藏在其他地方?
如果重要的话,我的 ProGuard 版本是 4.7。
如果您在 BuildConfig 上使用了一些变量,proguard 将不会删除它。根据他们的 manual:
The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names.
此外,我一直在使用这些选项,而且我从未遇到过混淆器剥离我在 BuildConfig
上的信息。
shrinkResources true
minifyEnabled true
缩小步骤的另一个特点是常量的内联。这可以解释为什么 BuildConfig 消失了,但值仍然存在于需要的地方。一旦值被内联,就不再有对 BuildConfig 的引用 class 并且 minifier 可以完全删除它。
请查看以下两张来自 Analyze APK 的 Android Studio 图像。
- 第一个是
minifyEnabled = false
,还有 - 另一个是
minifyEnabled = true
(当然是用mapping.txt解码后)
minifyEnabled = false
。 BuildConfig
在。
minifyEnabled = true
(用mapping.txt解码)。 BuildConfig
不存在。
我在缩小之前可以在 classes.dex
中找到 BuildConfig
,但缩小之后就找不到了。我找不到关于此的任何 document/discussion,但是在使用 ProGuard 缩小后,是否有一些规则可以从 classes.dex
中删除 BuildConfig
?那么,是不是说敏感信息放在BuildConfig
就相对安全了呢?或者,它可能只是隐藏在其他地方?
如果重要的话,我的 ProGuard 版本是 4.7。
如果您在 BuildConfig 上使用了一些变量,proguard 将不会删除它。根据他们的 manual:
The shrinking step detects and removes unused classes, fields, methods, and attributes. The optimization step analyzes and optimizes the bytecode of the methods. The obfuscation step renames the remaining classes, fields, and methods using short meaningless names.
此外,我一直在使用这些选项,而且我从未遇到过混淆器剥离我在 BuildConfig
上的信息。
shrinkResources true
minifyEnabled true
缩小步骤的另一个特点是常量的内联。这可以解释为什么 BuildConfig 消失了,但值仍然存在于需要的地方。一旦值被内联,就不再有对 BuildConfig 的引用 class 并且 minifier 可以完全删除它。