Dev*_*ere 9 java android gradle build.gradle android-gradle-plugin
在Gradle for Android中,我正在尝试生成相应的字符串数组资源...
<resources>
<string-array name="url_array">
<item>http://www.url1.com</item>
<item>http://www.url2.com</item>
<item>http://www.url3.com</item>
</string-array>
</resources>
Run Code Online (Sandbox Code Playgroud)
...在我的应用程序的build.gradle配置文件中.我不想在res/values/arrays.xml中对这些值进行硬编码,因为我希望能够为不同的构建变体(dev与prod)生成不同的数组内容.我知道有解决方法,但如果可能的话,这将是最干净的解决方案.
我已经尝试过类似下面摘录的resValue类型的"string-array"或"array",但是我得到一个错误,说resValue()不存在.当然,resRalue类型的"string"参数适用于单个字符串,但我需要生成一个字符串数组资源.
resValue "string-array", "url_array",
["http://www.url1.com",
"http://www.url2.com",
"http://www.url3.com"]
Run Code Online (Sandbox Code Playgroud)
Gradle for Android文档没有帮助.它列出了这种方法......
void resValue(字符串类型,字符串名称,字符串值)
...但它不表示类型参数的有效值.它只是有一个链接,上面写着" 查看资源类型 ",但它只指向常规的Android资源类型文档,并没有描述如何在Gradle Android DSL中表达它们.
有没有人有任何指导?我在网上看了一遍,但没找到任何东西.
Dev*_*ere 13
在@schwiz的指导下,这是我最接近的.我仍然无法使用resValue找到一种方法,但是可以定义一个可以实现相同目标的buildConfigField:
buildConfigField "String[]", "URL_ARRAY",
"{" +
"\"http://www.url1.com\"," +
"\"http://www.url2.com\"," +
"\"http://www.url3.com\"" +
"}"
Run Code Online (Sandbox Code Playgroud)
这使您可以通过BuildConfig访问数组:
public static final String[] URL_ARRAY = {
"http://www.url1.com",
"http://www.url2.com",
"http://www.url3.com"}; // whitespace added for clarity
Run Code Online (Sandbox Code Playgroud)
然后,您可以覆盖每个buildType的buildConfigField值.因此,除非您特别需要在R.array.*中,否则这将满足您的需求.暂时保持开放以防其他人知道如何使用resValue执行此操作.
| 归档时间: |
|
| 查看次数: |
4012 次 |
| 最近记录: |