我希望能夠從我們的CMS(或某個數據庫)的res/values/strings.xml中加載用戶可見字符串的值, gradle build。在Android Gradle版本中,在編譯期間更改strings.xml的內容
E.g.
<string name="button_label">OK, do it</string>
可改爲
<string name="button_label">OK, do it now!</string>
...或什麼的。
這個想法是,新的價值將被從我們的內容管理系統中讀取建設時間,然後將被烘烤到APK文件。 (動機是自動化應用程序字符串的更改,以便應用程序中的任何文本都將從現有的CMS中讀取)。
達到此目的的最佳方法是什麼?是否有可能在構建期間生成/修改資源文件(例如strings.xml),然後才由Android構建系統使用它們?
添加一些要求:
- 的解決方案需要支持「替代資源」,又名覆蓋其他語言的字符串。 (http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources)
- 解決方案應該能夠覆蓋原始(默認)strings.xml文件中的值。
簡單的方法:http://tools.android.com/tech-docs/new-build-system variant.resValue ...其他:建立自己的gradle插件... – Selvin
謝謝Selvin,看起來很有前途。關於這個的一個問題是:我將如何去爲不同的語言提供回退值?這個功能可以嗎? – treesAreEverywhere
'applicationVariants.all {variant - > variant.resValue「string」,「button_xxx」,「Here goes the text」}'...當然,您需要學習一些Groovy基礎知識(例如獲取這些值在線或從您特定的xml/json文件)... fx https://gist.github.com/SelvinPL/f89476b6585690cb252b ...我使用它來生成fx'colorPrimaryAX',它是colorPrimary和X%alpha https://gist.github .com/SelvinPL/8e673e38c5fed8e2132b – Selvin