Android AOSP在android-10.0.0_r39版本的build_image.py构建中失败。

3

在Ubuntu 20.04 LTS上,我已经检出了一个名为android-10.0.0_r39的AOSP树。对于walleye设备,树构建正常 - 我可以构建并运行设备,没有问题。在AOSP repo树中没有新文件。但是如果我切换到blueline设备,则会出现以下问题:

lunch aosp_blueline-userdebug
...
[ 99% 67222/67226] Target system fs image: out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img
FAILED: out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img
/bin/bash -c "(if [ -d out/target/product/blueline/system/vendor ] && [ ! -h out/target/product/blueline/system/vendor ]; then echo 'Non-symlink out/target/product/blueline/system/vendor detected!' 1>&2; echo 'You cannot install files to out/target/product/blueline/system/vendor while building a separate vendor.img!' 1>&2; exit 1; fi ) && (ln -sf /vendor out/target/product/blueline/system/vendor ) && (if [ -d out/target/product/blueline/system/product ] && [ ! -h out/target/product/blueline/system/product ]; then echo 'Non-symlink out/target/product/blueline/system/product detected!' 1>&2; echo 'You cannot install files to out/target/product/blueline/system/product while building a separate product.img!' 1>&2; exit 1; fi ) && (ln -sf /product out/target/product/blueline/system/product ) && (( cd out/target/product/blueline/system && findres=\$(find lib* -path \"lib/bootstrap\" -prune -o -path \"lib64/bootstrap\" -prune -o -path \"lib/arm\" -prune -o -path \"lib/arm64\" -prune -o -path \"lib/vndk-*\" -prune -o -path \"lib64/vndk-*\" -prune -o -type f \\( -false -o -name libadbconnection.so -o -name libadbconnectiond.so -o -name libandroidicu.so -o -name libandroidio.so -o -name libart-compiler.so -o -name libart-dexlayout.so -o -name libart-disassembler.so -o -name libart.so -o -name libartbase.so -o -name libartbased.so -o -name libartd-compiler.so -o -name libartd-dexlayout.so -o -name libartd.so -o -name libartpalette.so -o -name libc.so -o -name libdexfile.so -o -name libdexfile_external.so -o -name libdexfiled.so -o -name libdexfiled_external.so -o -name libdl.so -o -name libdt_fd_forward.so -o -name libdt_socket.so -o -name libicui18n.so -o -name libicuuc.so -o -name libjavacore.so -o -name libjdwp.so -o -name libm.so -o -name libnativebridge.so -o -name libnativehelper.so -o -name libnativeloader.so -o -name libnpt.so -o -name libopenjdk.so -o -name libopenjdkjvm.so -o -name libopenjdkjvmd.so -o -name libopenjdkjvmti.so -o -name libopenjdkjvmtid.so -o -name libpac.so -o -name libprofile.so -o -name libprofiled.so -o -name libsigchain.so -o -name libjavacrypto.so \\) -print) && if [ -n \"\$findres\" ]; then echo \"APEX libraries found in system image (see comment for check-apex-libs-absence\" 1>&2; echo \"in build/make/core/main.mk for details):\" 1>&2; echo \"\$findres\" | sort 1>&2; false; fi; ) ) && (mkdir -p out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/ out/target/product/blueline/obj/PACKAGING/systemimage_intermediates && rm -rf out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"system_other_size=2952790016\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"system_journal_size=0\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"ext_mkuserimg=mkuserimg_mke2fs\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"fs_type=ext4\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"extfs_sparse_flag=-s\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"squashfs_sparse_flag=-s\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"ext4_share_dup_blocks=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"selinux_fc=out/target/product/blueline/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_avbtool=avbtool\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_add_hashtree_footer_args=--prop com.android.build.system.os_version:10 --prop com.android.build.system.security_patch:2020-06-05\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_other_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_other_add_hashtree_footer_args=--rollback_index 1591315200\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_other_key_path=external/avb/test/data/testkey_rsa4096.pem\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_system_other_algorithm=SHA256_RSA4096\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_vendor_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_vendor_add_hashtree_footer_args=--prop com.android.build.vendor.os_version:10 --prop com.android.build.vendor.security_patch:2020-06-05\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_product_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_product_add_hashtree_footer_args=--prop com.android.build.product.os_version:10 --prop com.android.build.product.security_patch:2020-06-05\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_product_services_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_product_services_add_hashtree_footer_args=--prop com.android.build.product_services.os_version:10 --prop com.android.build.product_services.security_patch:2020-06-05\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_odm_hashtree_enable=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"avb_odm_add_hashtree_footer_args=--prop com.android.build.odm.os_version:10\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"recovery_as_boot=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"root_dir=out/target/product/blueline/root\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"use_dynamic_partition_size=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (echo \"skip_fsck=true\" >>  out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt ) && (PATH=out/host/linux-x86/bin/:\$PATH build/make/tools/releasetools/build_image.py out/target/product/blueline/system out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system_image_info.txt out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img out/target/product/blueline/system || ( mkdir -p \${DIST_DIR}; cp out/target/product/blueline/installed-files.txt \${DIST_DIR}/installed-files-rescued.txt; exit 1 ) )"
2020-06-18 22:52:22 - build_image.py - ERROR   : Failed to build out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img from out/target/product/blueline/system
Out of space? Out of inodes? The tree size of /pool/james/aosp/out/soong/.temp/tmpceCvjm is 153844736 bytes (146 MB), with reserved space of 0 bytes (0 MB).
The max image size for filesystem files is 73134080 bytes (69 MB), out of a total partition size of 73134080 bytes (69 MB).
Traceback (most recent call last):
  File "build/make/tools/releasetools/build_image.py", line 789, in <module>
    main(sys.argv[1:])
  File "build/make/tools/releasetools/build_image.py", line 781, in main
    BuildImage(in_dir, image_properties, out_file, target_out)
  File "build/make/tools/releasetools/build_image.py", line 423, in BuildImage
    BuildImageMkfs(in_dir, prop_dict, out_file, target_out, fs_config)
  File "build/make/tools/releasetools/build_image.py", line 334, in BuildImageMkfs
    mkfs_output = common.RunAndCheckOutput(build_command)
  File "/pool/james/aosp/build/make/tools/releasetools/common.py", line 252, in RunAndCheckOutput
    args, proc.returncode, output))
common.ExternalError: Failed to run command '['mkuserimg_mke2fs', '-s', '/pool/james/aosp/out/soong/.temp/tmpceCvjm', 'out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img', 'ext4', '/', '73134080', '-j', '0', '-D', 'out/target/product/blueline/system', '-L', '/', '-i', '3256', '-M', '0', '-c', '--inode_size', '256', 'out/target/product/blueline/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin']' (exit code 4):
22:52:21 mkuserimg_mke2fs.py INFO: Env: {'MKE2FS_CONFIG': './system/extras/ext4_utils/mke2fs.conf'}
22:52:21 mkuserimg_mke2fs.py INFO: Running: mke2fs -O ^has_journal -L / -N 3256 -I 256 -M / -m 0 -E android_sparse -t ext4 -b 4096 out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img 17855
22:52:21 mkuserimg_mke2fs.py INFO: Env: {}
22:52:21 mkuserimg_mke2fs.py INFO: Running: e2fsdroid -p out/target/product/blueline/system -s -S out/target/product/blueline/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin -f /pool/james/aosp/out/soong/.temp/tmpceCvjm -a / out/target/product/blueline/obj/PACKAGING/systemimage_intermediates/system.img
22:52:22 mkuserimg_mke2fs.py ERROR: Failed to run e2fsdroid_cmd: __populate_fs: Could not allocate block in ext2 filesystem while writing file "com.android.runtime.debug.apex"
e2fsdroid: Could not allocate block in ext2 filesystem while populating file system

mke2fs 1.44.4 (18-Aug-2018)
Creating filesystem with 17855 4k blocks and 3264 inodes

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done


__populate_fs: Could not allocate block in ext2 filesystem while writing file "com.android.runtime.debug.apex"
e2fsdroid: Could not allocate block in ext2 filesystem while populating file system


22:52:33 ninja failed with: exit status 1

#### failed to build some targets (01:27:37 (hh:mm:ss)) ####

建议?

我在一个18.04容器中也遇到了这个问题,使用的是android-10.0.0_r39android-10.0.0_r32。你找到解决方案了吗? - Matt
@Matt 这里没有答案,Android构建邮件列表上也没有答案 - https://groups.google.com/g/android-building/c/EC8L-zaZyOo。我从未解决过这个问题。 - James Moore
经过几天的苦思冥想后,我相信这是因为我正在写入一个 zsf 文件系统。一旦意识到这一点,我就出去买了一块新硬盘,在安装后我会再试一次。 - Matt
@Matt 祝你好运!我也在运行zfs,但如果我切换到主分支,一切都可以构建和运行。 - James Moore
1
我没有尝试切换除android-10.0.0_r39android-10.0.0_r32以外的分支。也许在master分支中他们已经解决了这个问题?无论如何,一旦我指向一个带有OUT_DIR_COMMON_BASE的ext4设备(现在少了200美元),我的构建就成功了! - Matt
5个回答

3
这可能是由于您写入图像的文件系统引起的。特别是,当我写入 zfs 驱动器时,遇到了相同的问题。一旦我将我的构建重定向到 ext4 设备,我的构建就完成了。
要重定向图像的写入位置,请设置环境变量 OUT_DIR_COMMON_BASE,例如:
export OUT_DIR_COMMON_BASE=/ext4/path/to/builds

1

磁盘空间不足?节点用完了?/pool/james/aosp/out/soong/.temp/tmpceCvjm的树大小为153844736字节(146 MB),保留空间为0字节(0 MB)。文件系统文件的最大镜像大小为73134080字节(69 MB),总分区大小为73134080字节(69 MB)。

请修改BOARD_SYSTEMIMAGE_PARTITION_SIZE :=,您的错误日志中必须大于73134080。例如,BOARD_SYSTEMIMAGE_PARTITION_SIZE = 73134080 + 100MB。

在另一种情况下,在主机机器(构建PC)中释放一些空间后,我能够修复此错误。


0

$(BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE)设置为ext4可能会有所帮助。

BoardConfig.mk文件中添加以下代码片段:

BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := ext4

0

这些问题通常发生在系统分区超过阈值大小时,删除 APK 可能会解决问题,但无法永久修复。 大小溢出也可能是由于 AOT 编译(PreDexOpt)引起的,通过对 ART 配置进行微调可能有所帮助。 一种方法是使用 WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY。 请参考 https://source.android.com/devices/tech/dalvik/configure 获取更多想法。


0
对我来说,这是由我正在构建的ROM引起的,包括gapps。我通过从vendor/gms/gms_full.mk中删除一些不必要内置在ROM中的谷歌应用程序来解决它。我删除了Drive、Chrome、日历、计算器、YouTube和YouTube音乐。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接