【问题标题】:Not change string resource value for flavor不更改风味的字符串资源值
【发布时间】:2021-12-28 20:37:18
【问题描述】:

我想为我们的应用程序的付费版本更改 app_name 字符串和其他字符串的值,以更改我们应用程序的付费版本的应用程序名称和小部件名称。但这对我不起作用。请帮助我,我如何才能更正修改@string/app_name 的字符串资源值和我们应用程序付费版本的其他字符串。非常感谢大家的帮助。

    flavorDimensions 'orthodoxCalendar'
    productFlavors {
        orthodoxcalendarfree {
            dimension 'orthodoxCalendar'
            applicationId "oleksandr.kotyuk.orthodoxcalendarfree"
            versionCode defaultConfig.versionCode
            versionName defaultConfig.versionName
                    }
        orthodoxCalendarpaid {
            dimension 'orthodoxCalendar'
            applicationId "oleksandr.kotyuk.orthodoxcalendarpaid"
            versionCode defaultConfig.versionCode
            versionName defaultConfig.versionName
//we want write in app_name string value of app_name_paid string. All strings defined in strings.xml file in values folder. The same we do for other string
            resValue "string", "app_name", "@string/app_name_paid"
            resValue "string", "app_name_fz", "@string/app_name_paid_fz"
        }
    }
}

【问题讨论】:

标签: java android gradle resources android-productflavors


【解决方案1】:

考虑为每种风味添加自定义 resources 文件夹,并在付费文件夹中仅保留一个文件 strings.xml,其中包含您要更改的这两个值(在相同的 id 下)

sourceSets{

    main {
        res.srcDirs = ['res']
    }
    orthodoxCalendarpaid {
       res.srcDirs = ['res-paid']
    }

}

更多信息如何在HERE中进行配置

【讨论】:

  • 您可以从here 下载示例。在我所做的任何应用程序中,textview 的每种风格将是不同的文本。但是,当您更改对字符串的引用时,在将项目与 gradle 文件同步后,它将一事无成。为什么会这样?此外,当您尝试从 strings.xml 中删除字符串 app_name 并将其移动到 gradle 时,它​​也将无法正常工作,即在这种情况下,我们将收到编译错误。无论是问题,我应该立即向 google 或 gradle 报告吗?如果是,我该如何纠正报告这个错误?
  • 遗憾的是,我不知道你现在哪里有问题...我正在使用不同的 res 文件夹来更改我的一些字符串和可绘制对象(应用程序图标、一些徽标等)每种口味的应用程序,它工作得非常好。 some Android doc 展示了如何使用 resValues 并且没有提及引用 @string,只有本地 gradle/groovy 参数(文档中的 build_time)声明了上面的行或硬编码的字符串替换
  • 我在resValue 中找到对资源的​​引用的唯一一个地方已经链接了 SOquestion,其中 OP 进一步检查为什么这不起作用:<string name="app_name">@string/beta_name</string>。 .. 所以Gradle 不理解@string,将整个参数作为String。 afaik 更改名称的正确方法(仍然尊重不同的语言)是按风味保留单独的文件
  • 你也可以检查THIS问题(实际上:重复...),在那里你有9个不同的答案,甚至没有一个使用@string作为resValue的最后一个参数
  • 啊,对于我们在清单中使用的行,我们应该使用 placeHolders。关于 sourceSets 我有问题,与清单行连接,但我通过删除 main { ... } 块或从该块中删除所有代码来解决它。
猜你喜欢
  • 2016-04-04
  • 2022-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-19
相关资源
最近更新 更多