在我的應用程序中,我有很多不同的產品風味,實際上大約有10種風味。 它們的做法是這樣的:eng_testDebug,eng_prodDebug,eng_testRelease,eng_prodRelease e.t.c其他語言。從strings.xml獲取app_name以獲取gradle中的當前產品風格
所以,現在我有一個任務,在構建名稱中添加「 - Test」到應用程序名稱以構建測試。
現在我發現了一個解決方案來解析主sourceSet中的string.xml,並在gradle文件中使用manifestPlaceHolders構建我的應用程序名稱。但它只適用於主要風味。 這裏是獲得默認的strings.xml APP_NAME我用的是代碼:)
def getEditedAppName() {
if (getCurrentFlavor().contains("test")) {
return getAppName() + "(Test)";
} else {
return getAppName();
}
}
getCurrentFlavor(返回我使用的香精名稱:
def getAppName() {
def stringsFile = android.sourceSets.main.res.sourceFiles.find { it.name.equals 'strings.xml' }
String s = new XmlParser().parse(stringsFile).string.find { [email protected] 'app_name' }.text();
return s.replaceAll("\"", "");
}
在這裏,我修改,添加「測試」 in:彙編任務。
基本上,問題是我如何獲得其他sourceSet文件取決於我目前的建築風格,所以我可以分析風味的app_name?
不幸的是,在gradle文件中爲每種風味挑戰app_name字符串對我來說不是一個有效的選項。
感謝您的回答,但我已經有每個我的口味和app_name overidden每個文件夾。但現在我無法找到一種方法來解析gradle中的這些超文件文件,以獲取每個flavor的app_name。 –
通常這是自動完成的,如果你正確配置gradle – glethien
更新我的回答 – glethien