我了解“如何”使用它们,但想知道“何时”使用它们。
对于在不同环境中使用单独的KEY的情况,我们可以使用上述所有三个。因此,我很想知道为什么有三件事要做同一件事,以及它们是否有不同的用途。谢谢!
最佳答案
使用buildConfigField
将在您应用的生成的BuildConfig
类中生成实际的Java常量。因此,对于您的示例,您将获得以下内容:
public static class BuildConfig {
public static final String BASE_URL = "xxxxxxxxxx";
}
使用
resValue
将生成您在应用程序的res
(资源)目录中指定的类型的资源。因此,对于字符串,您可以使用@string/base_url
或getResources().getString(R.string.base_url)
通过XML引用它。使用
manifestPlaceholders
允许您在AndroidManifest.xml
中添加替换项。因此,例如,GCM要求您具有名称设置为<uses-permission>
的X.permission.C2D_MESSAGE
标记,其中X
是您的应用程序ID。因此,如果您具有使用不同应用程序ID的多个构建版本,则可以使用manifestPlaceholders
标记,然后在AndroidManifest.xml
中使用它,并用正确的值替换它,例如:<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
作为记录,
applicationId
会自动添加为 list 占位符,因此无需自己定义它,但这仅是示例。基本上,这取决于您需要的位置。如果XML资源(布局,菜单等)需要它,则
resValue
是您想要的。如果需要直接从Java代码访问它,buildConfigField
将解决问题。对于 list 中的替换,manifestPlaceholders
是您想要的。关于android - buildConfigField,resValue和manifestPlaceholders有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42725299/