日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android R编译Super镜像时报错问题分析和定位

發(fā)布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android R编译Super镜像时报错问题分析和定位 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在android R版本全編譯時,遇到編譯打包super.img時報錯,這里介紹一下這種問題如何定位原因和解決,主要是描述一下分析的思路。

錯誤日志如下:

out/target/product/tt/obj/PACKAGING/check-all-partition-sizes_intermediates/misc_info.txt )" Traceback (most recent call last):File "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/internal/stdlib/runpy.py", line 174, in _run_module_as_mainFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/internal/stdlib/runpy.py", line 72, in _run_codeFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/__main__.py", line 12, in <module>File "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/internal/stdlib/runpy.py", line 174, in _run_module_as_mainFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/internal/stdlib/runpy.py", line 72, in _run_codeFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 271, in <module>File "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 265, in mainFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 253, in CheckPartitionSizesFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 245, in RunFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 242, in _CheckAllPartitionSizesFile "/home/test/tt_r_temp/android/out/host/linux-x86/bin/check_partition_sizes/check_partition_sizes.py", line 61, in CheckLe RuntimeError: sum of sizes of ['youroem_dynamic_partitions'] is greater than BOARD_SUPER_PARTITION_SIZE / 2: 2147483648 4290772992 == 4290772992 > 2147483648 == 2147483648 [100% 312/312] Target super fs image for debug: out/target/product/tt/super.img 2021-07-12 10:20:00 - build_super_image.py - INFO : Building super image from info dict... 2021-07-12 10:20:00 - sparse_img.py - INFO : Total of 217749 4096-byte output blocks in 20 input chunks.

核心錯誤在句日志
RuntimeError: sum of sizes of [‘youroem_dynamic_partitions’] is greater than BOARD_SUPER_PARTITION_SIZE / 2: 2147483648
4290772992 == 4290772992 > 2147483648 == 2147483648
初步看起來是size比較的問題,追一下python腳本代碼,從日志錯誤來看是調(diào)用的check_partition_sizes.py腳本,去build目錄下find一下,找到后打開check_partition_sizes.py,找到報錯的行號

if "super_partition_size" in info_dict:group_size_list = [int(info_dict.get("super_{}_group_size".format(group), 0)) for group in groups]sum_size = Expression("sum of sizes of {}".format(groups),"+".join(str(size) for size in group_size_list),sum(group_size_list))max_size = Expression("BOARD_SUPER_PARTITION_SIZE{}".format(size_limit_suffix),int(info_dict["super_partition_size"]) // num_slots)sum_size.CheckLe(max_size)

查看一下max_size的定義和sum_size的來源,基本上就明白咋回事了,就是指在打開A/B配置的情況下,sum_size不能大于max_size的一半,對應(yīng)到板卡makefile中的BOARD_SUPER_PARTITION_SIZE值,最后編譯到了out產(chǎn)物中的misc_info.txt中,打包super時最后會檢查一下這個size
到這里就基礎(chǔ)明白跟BOARD_SUPER_PARTITION_SIZE有關(guān)了,全局查看一下發(fā)現(xiàn)走到8GB的那個配置了,導(dǎo)致的報錯,初步修改是打開ENABLE_VIRTUAL_AB宏,解決了當(dāng)前的報錯,先分析到這里吧。

ifeq ($(ENABLE_AB), true)ifeq ($(ENABLE_VIRTUAL_AB), true)BOARD_SUPER_PARTITION_SIZE := 4294967296elseBOARD_SUPER_PARTITION_SIZE := 8589934592endifTARGET_RECOVERY_FSTAB := device/youroem/test/recovery_AB_dynamic_partition.fstab elseBOARD_SUPER_PARTITION_SIZE := 4294967296TARGET_RECOVERY_FSTAB := device/youroem/test/recovery_non-AB_dynamic_partition.fstab endif

總結(jié)

以上是生活随笔為你收集整理的android R编译Super镜像时报错问题分析和定位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。