我遇到了几个带有以下代码行的 ProGuard 示例:
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已经在我的应用程序中加入和没有加入这行代码(当然,使用我的软件包),但是没有发现任何区别。 我还查看了生成的 ... /BuildConfig.java 文件,也没有任何更改。
我需要在ProGuard中保留我的BuildConfig的目的是什么?
谢谢!
我遇到了几个带有以下代码行的 ProGuard 示例:
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已经在我的应用程序中加入和没有加入这行代码(当然,使用我的软件包),但是没有发现任何区别。 我还查看了生成的 ... /BuildConfig.java 文件,也没有任何更改。
我需要在ProGuard中保留我的BuildConfig的目的是什么?
谢谢!
BuildConfig 包含一些在编译时设置的有用的值。具体来说,这些值包括:
boolean DEBUG – if the build is debuggable.
int VERSION_CODE
String VERSION_NAME
String APPLICATION_ID
String BUILD_TYPE – name of the build type, e.g. "release"
String FLAVOR – name of the flavor, e.g. "paidapp"
您还可以设置自己的配置值,例如针对测试和生产使用不同的URL,并从BuildConfig文件中检索它们,而不是维护自己的Config.java文件。这可以通过将buildConfigFields添加到gradle buildTypes中来完成,如下所示:
buildTypes {
debug {
buildConfigField "boolean", "SOME_VAR", "true"
}
release {
buildConfigField "boolean", "SOME_VAR", "false"
}
}
-keep
命令使ProGuard不会混淆它或将其优化为未使用的状态。BuildConfig
的访问模式是直接的,而不是通过反射间接访问,因此在这些情况下,让ProGuard处理您的BuildConfig
也是可以的。