为什么我要将BuildConfig保留在ProGuard中?

时间:2016-04-25 11:46:28

标签: android proguard buildconfig

我用以下几行见过几个例子:

IE9+

我使用和不使用此行运行应用程序(当然,使用我的软件包)并且没有发现任何差异。 我也查看了生成的/.../ BuildConfig.java,也没有任何变化。

如何将BuildConfig保存在ProGuard中?

谢谢!

3 个答案:

答案 0 :(得分:3)

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"
    }
}

所以要回答你的问题,据我所知你不必保留文件,但最好这样做并将其用于配置需求。

答案 1 :(得分:2)

与任何其他课程一样,如果您通过反射间接访问该课程,则需要-keep该课程,因此ProGuard不会对其进行模糊处理或将其作为未使用进行优化。

BuildConfig的访问模式通常都是直接的,没有反射,所以在这些情况下,让ProGuard处理你的BuildConfig也没关系。

答案 2 :(得分:0)

某些ACRA之类的崩溃报告器库确实通过反射来访问BuildConfig,因此,如果您使用一个库并希望在崩溃报告中获取其信息,则应该-keep