当前位置: 首页 > 知识库问答 >
问题:

如何在 android 清单中连接字符串资源和构建变量

郎宣
2023-03-14

先驱:我想本地化应用程序名称(使用字符串资源)
并同时从gradle文件中添加构建类型后缀(“DEBUG”)。

在这里,我试图连接字符串资源“app_name”和gradle变量“AppNameSuffix”

预期的应用程序名称:
产品风味“all”-“My Application DEBUG”
产品风味“china”-“My Chinese Application DEBUG”
以及后缀为“RELEASE”和“CANARY”的后续构建类型

buildTypes {
    debug {
        manifestPlaceholders = [AppNameSuffix: "DEBUG"]
        ...
    }
    release{
        manifestPlaceholders = [AppNameSuffix: "RELEASE"]
        ...
    }
    canary{
        manifestPlaceholders = [AppNameSuffix: "CANARY"]
    }
}
productFlavors {
    china {
        applicationId "com.myapplication.china"
    }
    all {
        //default
        applicationId "com.myapplication.all"
    }
}
<application
    ...
    android:label="@{@string/app_name(${AppNameSuffix})}">
    ...
</application>

评估gradle变量时出现“$”符号错误

<string name="app_name">My application %s</string>
<string name="app_name">My Chinese application %s</string>

参考资料:

  • https://stackoverflow.com/a/51640344/2584794
  • https://stackoverflow.com/a/37431393/2584794

共有1个答案

陆涵畅
2023-03-14

gradle 文件中,使用小写字母,以使资源名称有效:

buildTypes {
    debug {
        manifestPlaceholders = [AppNameSuffix: "_debug"]
        ...
    }
    release{
        manifestPlaceholders = [AppNameSuffix: "_release"]
        ...
    }
    canary{
        manifestPlaceholders = [AppNameSuffix: "_canary"]
    }
}

修改您的清单:有括号要删除,也许还有工具:替换添加(如果还没有):

<application
    ...
    android:label="@string/app_name${AppNameSuffix}"
    tools:replace="android:label"
    ...
</application>

然后您需要添加与您的后缀匹配的字符串资源:

<string name="app_name">My application</string>
<string name="app_name_debug">My application DEBUG</string>
<string name="app_name_release">My application RELEASE</string>
<string name="app_name_canary">My application CANARY</string>

您还可以玩口味,并将特定的strings.xml文件夹中匹配您的口味。

 类似资料:
  • 假设我有以下片段: 我希望这段代码能够显示: 这使我认为运算符不适合连接字符串和变量。 您应该如何使用PowerShell来实现这一点?

  • 问题内容: 是否可以将变量放入字符串资源中?如果是的话-我该如何使用它们。 我需要的是以下内容: 并用int代替%X。 问题答案: 从这里取的例子

  • 问题内容: 我试图在Python中连接字符串和数字。当我尝试这样做时,它给了我一个错误: 错误是: 为什么我不能做到这一点? 如何 可以 我将字符串和Python中的号码是多少? 问题答案: Python是强类型的。没有隐式类型转换。 您必须执行以下操作之一:

  • 问题内容: 如何在Swift中连接字符串? 在我们喜欢 要么 但是我想用Swift语言做到这一点。 问题答案: 您可以通过多种方式连接字符串: 您也可以这样做: 我相信还有更多方法。 描述位 创建一个常数。(有点像)。设置后就无法更改其值。您仍然可以将其添加到其他东西并创建新变量。 创建一个变量。(有点像),因此您可以更改其值。 注意 在现实中,并有 很大的不同 ,从和,但它可以帮助类比。

  • 问题内容: 我要在主题中包含文件名“ main.txt”,因为我是从命令行传递文件名的。但是这样做会出错 问题答案: 我猜您打算这样做:

  • 我有一个函数,显示用户名。它工作得很好,但我收到了这个警告,我想知道如何解决它。