我理解它们是如何使用的,但是想知道它们何时被使用.
对于在不同环境中使用单独的KEY的情况,我们可以使用上面提到的所有三个.所以,我很想知道为什么有三件事要做同样的事情,如果它们是针对不同的用法.谢谢!
对于在不同环境中使用单独的KEY的情况,我们可以使用上面提到的所有三个.所以,我很想知道为什么有三件事要做同样的事情,如果它们是针对不同的用法.谢谢!
解决方法
使用buildConfigField将在应用程序生成的BuildConfig类中生成实际的Java常量.所以对于你的例子,你会有这样的东西:
public static class BuildConfig { public static final String BASE_URL = "xxxxxxxxxx"; }
使用resValue将生成您在应用程序的res(resources)目录中指定的类型的资源.因此,对于字符串,您可以使用@ 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会自动添加为清单占位符,因此不需要自己定义,但这只是一个示例.
基本上,它取决于您需要它的位置.如果需要XML资源(布局,菜单等),resValue就是您想要的.如果需要直接从Java代码访问它,buildConfigField就可以了.对于清单中的替换,manifestPlaceholders是您想要的.