【发布时间】:2017-02-24 00:23:21
【问题描述】:
在我为 Android 应用程序构建的 gradle 中,我使用以下代码将构建时生成的一堆图像复制到 APK 文件的 /assets/ 目录中:
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")
这暂时可行,但我对此真的不满意。
【问题讨论】:
标签: android android-gradle-plugin android-build android-build-flavors