每一個Android搖籃編譯環境:定製主動用香精的gradle特定任務的構建過程
我目前從本地version.properties讀我的版本代碼和版本名稱通過「readVersions」 gradle這個任務文件。我正在爲我的應用添加風味。這些口味需要不同的版本。所以我正在考慮在特定於風味的「res」和「src」目錄旁邊放置兩個不同的version.properties文件在特定於風味的目錄(例如一個/ version.properties,兩個/ version.properties)中。
我有一個readVersions任務:
task readVersions() {
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
def v_name = versionProps['VERSION_NAME']
// Set
versionCode v_code
versionName v_name
}
project.afterEvaluate {
preBuild.dependsOn readVersions
}
我想有一個新的readVersions任務結合的味道,這樣我可以在「味道」內訪問「version.properties」文件中使用它目錄。
我曾嘗試:
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
但後來我不知道怎麼去僅活動風味的任務期間,「預生成」的步驟來運行。
概念我想這一點:
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
對於那些誰建議重組並尋找簡單解決方案。我的構建過程當前對這些version.properties文件有其他依賴關係。我可以只定義在兩個地方的版本號和版本的名稱(例如裏面的「味道」,以及風味的version.properties文件中,但我真的想幹CONFIGS)
沒有「活躍的味道」。您的'build.gradle'文件不會構建您的應用程序。你的'build.gradle'文件建立* how *的對象模型來構建你的應用程序。建立對象模型的工作。對於兩種口味您都需要'dependsOn',在適當的口味特定任務取決於您自定義口味特定任務。 – CommonsWare
是的,我明白這一點。這就是爲什麼我試圖在我的「概念」描述符中強調這一部分。你明白我在做什麼?你知道如何構建一個實現我想要做的事情的對象模型嗎?如果沒有,我可以嘗試進一步定義我的目標。 – FishStix
我很猶豫爲風味創建了一堆自定義的「dependsOn」,適當的風味特定任務取決於您自定義風味特定的任務。如果我最終得到10或20種口味,該怎麼辦?我只想從$ {flavor.name} /version.properties文件中獲取本地versionCode/Name。我真的需要20個自定義任務來實現這個目標嗎? – FishStix