gpt4 book ai didi

android - 为什么 ProcessAndroidResources 中缺少 assetsDir?

转载 作者:太空宇宙 更新时间:2023-11-03 11:01:15 25 4
gpt4 key购买 nike

在我为 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 不再是“已知属性(property)”?

或者获取 assetsDir 以便我可以将内容复制到该目录中的好方法是什么?如果我在构建期间将生成的 Assets 复制到 build\intermediates\assets\{INSERT_VARIANT_NAME_HERE}\ 中,它就会起作用。我的解决方法是像这样派生 assetDir:

def assetsDir = output.processResources.resDir.toString().replace("res\\merged", "assets")

这暂时可行,但我对此并不满意。

最佳答案

据我所知,25.0.0 从 gradle-core 1.3.1 更改为 gradle-core 2.3.0,这似乎是一个完全不同的系统。

这是旧任务:https://android.googlesource.com/platform/tools/base/+/gradle_1.3.1/build-system/gradle-core/src/main/groovy/com/android/build/gradle/tasks/ProcessAndroidResources.groovy

这是新任务:https://android.googlesource.com/platform/tools/base/+/gradle_2.3.0/build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/ProcessAndroidResources.java

似乎有多年的并行开发,谷歌在 25.0.0 中决定切换到一个新的分支。 (至少这是我的猜测)。

如果您查看该 repo 开发中的 master 分支,几年前就停在那里了。

看来我们需要找到一个解决方法来访问 Assets 目录。到目前为止我还没有找到。

关于android - 为什么 ProcessAndroidResources 中缺少 assetsDir?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com