gpt4 book ai didi

java - 是否可以在 Gradle 中定义 Android 字符串数组资源?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:37 24 4
gpt4 key购买 nike

在 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>

...在我的应用程序的 build.gradle 配置文件中。我不想在 res/values/arrays.xml 中对这些值进行硬编码,因为我希望能够为不同的构建变体(开发与生产)生成不同的数组内容。我知道有解决方法,但如果可能的话,这将是最干净的解决方案。

我已经尝试过像下面的摘录那样使用“字符串数组”或“数组”的 resValue 类型的东西,但我收到一条错误消息,指出 resValue() 不存在。当然,“string”的 resValue 类型参数适用于单个字符串,但我需要生成一个字符串数组资源。

resValue "string-array", "url_array",
["http://www.url1.com",
"http://www.url2.com",
"http://www.url3.com"]

Gradle for Android 文档没有帮助。它列出了这个方法...

void resValue(String type, String name, String value)

...但它不表示类型参数的有效值。它只有一个链接,上面写着“See Resource Types”,但它只是指向资源类型的常规 Android 文档,并没有描述如何在 Gradle Android DSL 中表达它们。

有人指导吗?我在网上找遍了,什么也没找到。

最佳答案

这是我得到的最接近的,指导来自 @schwiz .我仍然找不到使用 resValue 执行此操作的方法,但可以定义一个可以实现相同目标的 buildConfigField:

buildConfigField "String[]", "URL_ARRAY",
"{" +
"\"http://www.url1.com\"," +
"\"http://www.url2.com\"," +
"\"http://www.url3.com\"" +
"}"

这使您可以通过 BuildConfig 访问数组:

public static final String[] URL_ARRAY = {
"http://www.url1.com",
"http://www.url2.com",
"http://www.url3.com"}; // whitespace added for clarity

然后您可以覆盖每个 buildType 的 buildConfigField 值。所以,除非你特别需要它在 R.array.* 中,否则这将满足你的需要。暂时将其打开,以防其他人知道如何使用 resValue 执行此操作。

关于java - 是否可以在 Gradle 中定义 Android 字符串数组资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com