在我gradle這個建立一個Android應用程序,我有以下代碼複製一堆在構建時生成到/assets/
目錄中的APK文件的圖像:爲什麼在ProcessAndroidResources中缺少assetsDir?
android.applicationVariants.all { variant ->
variant.mergeResources.doLast {
variant.outputs.each { output ->
copy {
from file("${project.buildDir}/" + "generated_images")
into output.processResources.assetsDir
}
}
}
def mergeAssets = tasks.getByPath("merge" + "${variant.name.capitalize()}" + "Assets")
mergeAssets.dependsOn(generateAssetImages)
}
錯誤信息:
* What went wrong:
Execution failed for task ':app:mergeVariant1Resources'.
> Could not get unknown property 'assetsDir' for task ':app:processVariant1Resources' of
type com.android.build.gradle.tasks.ProcessAndroidResources.
這用來很好地工作,但是從升級到buildToolsVersion "23.0.3"
後buildToolsVersion "25.0.2"
,output.processResources.assetsDir
未定義。
發生了什麼變化?爲什麼assetsDir不再是「已知屬性」?
或者什麼是獲取assetsDir的好方法,以便我可以將東西複製到此目錄中?如果我在生成過程中將生成的資產複製到build\intermediates\assets\{INSERT_VARIANT_NAME_HERE}\
,它將起作用。我的解決方法是導出assetDir像這樣:
def assetsDir = output.processResources.resDir.toString().replace("res\\merged", "assets")
這適用於現在,但我真的不滿意這一點。