为什么我应该将 BuildConfig 保留在 ProGuard 中?
Why should I keep BuildConfig in ProGuard?
我遇到过几个使用这些行的混淆示例:
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已经 运行 应用程序有和没有这条线(当然,我的包)并没有发现任何差异。
我也查看了 generated/.../BuildConfig.java 也没有变化。
为什么我需要将我的 BuildConfig 保留在 ProGuard 中?
谢谢!
BuildConfig 包含一些在编译时设置的 useful values。具体是这些:
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"
}
}
所以回答你的问题,据我所知,你不必保留该文件,但最好这样做并将其用于你的配置需要。
与任何其他 class 一样,如果您通过反射间接访问它,则需要 -keep
class,这样 ProGuard 就不会对其进行混淆或优化,因为未使用。
大多数情况下,BuildConfig
的访问模式是直接的,没有反射,因此在这些情况下,让 ProGuard 处理您的 BuildConfig
也很好。
像 ACRA 这样的一些崩溃报告程序库确实通过反射访问 BuildConfig
,所以如果你使用一个并且想在你的崩溃报告中得到它的信息,你应该 -keep
它.
我遇到过几个使用这些行的混淆示例:
# Keep the BuildConfig
-keep class com.example.BuildConfig { *; }
我已经 运行 应用程序有和没有这条线(当然,我的包)并没有发现任何差异。 我也查看了 generated/.../BuildConfig.java 也没有变化。
为什么我需要将我的 BuildConfig 保留在 ProGuard 中?
谢谢!
BuildConfig 包含一些在编译时设置的 useful values。具体是这些:
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"
}
}
所以回答你的问题,据我所知,你不必保留该文件,但最好这样做并将其用于你的配置需要。
与任何其他 class 一样,如果您通过反射间接访问它,则需要 -keep
class,这样 ProGuard 就不会对其进行混淆或优化,因为未使用。
大多数情况下,BuildConfig
的访问模式是直接的,没有反射,因此在这些情况下,让 ProGuard 处理您的 BuildConfig
也很好。
像 ACRA 这样的一些崩溃报告程序库确实通过反射访问 BuildConfig
,所以如果你使用一个并且想在你的崩溃报告中得到它的信息,你应该 -keep
它.