【发布时间】:2022-08-22 12:15:38
【问题描述】:
我有一个使用 bazel 的项目,并包含一个演示 Android 应用程序来显示一些功能和小部件。我想将其拆分为新的演示/实验应用程序的基础,以尝试其他小部件组合。因此,我将 WORKSPACE 文件和演示应用程序包中的代码复制到了一个新项目中(包名称已更改,但我修改了代码和 BUILD 文件以解决此问题)。原始项目构建得很好,但新项目始终失败并出现以下错误:
ERROR: D:/_bazel_out/s6wwoqrr/external/maven_android_everything/BUILD:568:11: Compiling Android resources for @maven_android_everything//:com
_google_android_material_material failed: (Exit 1): ResourceProcessorBusyBox.exe failed: error executing command bazel-out\\x64_windows-opt-ex
ec-2B5CBBC6\\bin\\external\\bazel_tools\\src\\tools\\android\\java\\com\\google\\devtools\\build\\android\\ResourceProcessorBusyBox.exe ... (remaining 1 a
rgument skipped)
Jul 29, 2022 3:04:29 PM java.util.stream.ForEachOps$ForEachOp$OfRef accept
SEVERE: Error during Compiling bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_goog
le_android_material_material\\res\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml:
Command: external\\androidsdk\\build-tools\\33.0.0\\aapt2.exe\\
compile\\
-v\\
--legacy\\
-o\\
C:\\Users\\bdlei\\AppData\\Local\\Temp\\android_resources_tmp3839340977225638696\\compiled\\bazel-out\\android-armeabi-v7a-fastbuild\\bin\\exter
nal\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_material\\res\\
bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_mat
erial\\res\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml
Output:
bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_material\\re
s\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml: error: file not found.
Exception in thread \"main\" com.google.devtools.build.android.aapt2.ResourceCompiler$CompileError
at com.google.devtools.build.android.aapt2.ResourceCompiler$CompileError.of(ResourceCompiler.java:111)
at com.google.devtools.build.android.aapt2.ResourceCompiler$CompilingVisitor.getCompiledArtifacts(ResourceCompiler.java:431)
at com.google.devtools.build.android.aapt2.ResourceCompiler.getCompiledArtifacts(ResourceCompiler.java:465)
at com.google.devtools.build.android.UnvalidatedAndroidData.compile(UnvalidatedAndroidData.java:103)
at com.google.devtools.build.android.CompileLibraryResourcesAction.main(CompileLibraryResourcesAction.java:143)
at com.google.devtools.build.android.ResourceProcessorBusyBox$Tool$6.call(ResourceProcessorBusyBox.java:99)
at com.google.devtools.build.android.ResourceProcessorBusyBox.processRequest(ResourceProcessorBusyBox.java:234)
at com.google.devtools.build.android.ResourceProcessorBusyBox.main(ResourceProcessorBusyBox.java:177)
Suppressed: java.lang.RuntimeException: Error during Compiling bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_eve
rything\\_aar\\unzipped\\resources\\com_google_android_material_material\\res\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml:
Command: external\\androidsdk\\build-tools\\33.0.0\\aapt2.exe\\
compile\\
-v\\
--legacy\\
-o\\
C:\\Users\\bdlei\\AppData\\Local\\Temp\\android_resources_tmp3839340977225638696\\compiled\\bazel-out\\android-armeabi-v7a-fastbuild\\bin\\exter
nal\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_material\\res\\
bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_mat
erial\\res\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml
Output:
bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_material\\re
s\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml: error: file not found.
at com.google.devtools.build.android.CommandHelper.execute(CommandHelper.java:42)
at com.google.devtools.build.android.AaptCommandBuilder.execute(AaptCommandBuilder.java:297)
at com.google.devtools.build.android.aapt2.ResourceCompiler$CompileTask.compile(ResourceCompiler.java:234)
at com.google.devtools.build.android.aapt2.ResourceCompiler$CompileTask.call(ResourceCompiler.java:178)
at com.google.devtools.build.android.aapt2.ResourceCompiler$CompileTask.call(ResourceCompiler.java:125)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListe
nableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
INFO: Elapsed time: 335.194s, Critical Path: 145.75s
INFO: 1568 processes: 74 internal, 1308 local, 186 worker.
FAILED: Build did NOT complete successfully
参考文件:bazel-out\\android-armeabi-v7a-fastbuild\\bin\\external\\maven_android_everything\\_aar\\unzipped\\resources\\com_google_android_material_mat erial\\res\\animator\\mtrl_extended_fab_change_size_collapse_motion_spec.xml确实存在在我项目的bazel-out目录下,但是构建失败后,临时目录C:\\Users\\bdlei\\AppData\\Local\\Temp\\android_resources_tmp3839340977225638696不存在。上次我尝试构建时,我的AppData\\Local\\Temp 目录打开了一个资源管理器窗口,许多这样的android_resources_temp... 在构建过程中来来去去(这是我所期望的)。我在再次尝试构建之前删除了旧的,虽然我无法跟踪错误中命名的那个是否曾经存在,但之后它就不存在了(其中一个是在构建失败后留下的)。
行为是一致的:原始项目始终成功,分支项目失败。这通过bazel clean、bazel sync 和bazel shutdown 调用持续存在。
这两个项目都依赖于android,通过调用第三个“依赖项”项目来创建一个maven repo并从中构建一个repo:
def android():
if \'maven_android_everything\' not in native.existing_rules():
maven_install(
name = \"maven_android_everything\",
artifacts = [
\"androidx.activity:activity:1.2.3\", # using 1.4.0 causes indexing issues in dex without force-jumbo, even without dagger-views.
\"androidx.appcompat:appcompat:1.3.1\",
\"androidx.appcompat:appcompat-resources:1.3.1\",
\"androidx.constraintlayout:constraintlayout:2.1.1\",
\"androidx.core:core:1.7.0\",
\"androidx.fragment:fragment:1.3.6\",
\"androidx.lifecycle:lifecycle-viewmodel:2.3.1\",
\"androidx.viewpager2:viewpager2:1.0.0\",
\"androidx.recyclerview:recyclerview:1.0.0\",
\"androidx.tracing:tracing:1.0.0\",
\"com.google.android.material:material:1.4.0\",
],
excluded_artifacts = [
maven.exclusion(
group = \"com.google.guava\",
artifact = \"guava\",
),
],
repositories = [
\"https://maven.google.com\",
\"https://repo1.maven.org/maven2/\",
],
)
new_simple_repo( # Simple custom repo rule to make an @android repo for use elsewhere
name = \"android\",
build_file_content = \"\"\"
package(default_visibility = [\"//visibility:public\"])
android_library(
name = \"android\",
exports = [
\"@guava//:concurrent\",
\"@maven_android_everything//:androidx_activity_activity\",
\"@maven_android_everything//:androidx_appcompat_appcompat\",
\"@maven_android_everything//:androidx_appcompat_appcompat_resources\",
\"@maven_android_everything//:androidx_constraintlayout_constraintlayout\",
\"@maven_android_everything//:androidx_core_core\",
\"@maven_android_everything//:androidx_fragment_fragment\",
\"@maven_android_everything//:androidx_lifecycle_lifecycle_viewmodel\",
\"@maven_android_everything//:androidx_viewpager2_viewpager2\",
\"@maven_android_everything//:androidx_recyclerview_recyclerview\",
\"@maven_android_everything//:com_google_android_material_material\",
],
)
\"\"\")
我尝试过调整版本以查看是否可能会有所帮助,但是在经历了依赖冲突并最终让bazel sync 成功之后,我点击了this bug。
我正在尝试将我的“游乐场”项目配对,看看我是否可以隔离任何东西,但即使删除对原始项目的依赖也无济于事。
-
糟糕,意识到我遗漏了一些重要信息: 系统:Windows 10 Bazel 5.2.0 版(通过 Bazelisk)