IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> android R制作OTA包时报错 -> 正文阅读

[移动开发]android R制作OTA包时报错

有阵子没搞android OTA了,今天在android R上编译制作OTA包时,遇到个错误

2021-07-06 09:59:18 - ota_from_target_files.py - ERROR   : 
   ERROR:
Traceback (most recent call last):
  File "./build/tools/releasetools/ota_from_target_files.py", line 2258, in <module>
    main(sys.argv[1:])
  File "./build/tools/releasetools/ota_from_target_files.py", line 2231, in main
    source_file=OPTIONS.incremental_source)
  File "./build/tools/releasetools/ota_from_target_files.py", line 1875, in GenerateAbOtaPackage
    payload.Generate(target_file, source_file, additional_args)
  File "./build/tools/releasetools/ota_from_target_files.py", line 402, in Generate
    self._Run(cmd)
  File "./build/tools/releasetools/ota_from_target_files.py", line 378, in _Run
    common.RunAndCheckOutput(cmd)
  File "/home/xxx/test_r_1.0_dev_0616/android/build/make/tools/releasetools/common.py", line 281, in RunAndCheckOutput
    args, proc.returncode, output))
ExternalError: Failed to run command '['brillo_update_payload', 'generate', '--payload', '/tmp/payload-Y3iphj.bin', '--target_image', 'mydist/test-target_files-eng.xxx.zip', '--max_timestamp', u'1625203656']' (exit code 134):
Extracting images for full update.
Detected .zip file, extracting Brillo image.
Archive:  mydist/test-target_files-eng.xxx.zip
 extracting: /tmp/TEMP.Bi62rL/META/ab_partitions.txt  
List of A/B partitions for DST_PARTITIONS: boot vendor
Archive:  mydist/test-target_files-eng.xxx.zip
  inflating: /tmp/TEMP.6KIdJ8/META/postinstall_config.txt  
Archive:  mydist/test-target_files-eng.xxx.zip
  inflating: /tmp/TEMP.NTct9P/META/dynamic_partitions_info.txt  
Archive:  mydist/test-target_files-eng.xxx.zip
Archive:  mydist/test-target_files-eng.xxx.zip
  inflating: /tmp/TEMP.PKjktt/IMAGES/boot.img    inflating: /tmp/TEMP.suTDdE/IMAGES/vendor.img  
Extracted DST_PARTITIONS[boot]: 31457280 bytes

Converting Android sparse image vendor.img to RAW.
Archive:  mydist/test-target_files-eng.xxx.zip
  inflating: /tmp/TEMP.IAnc1E/IMAGES/vendor.map  
Extracted DST_PARTITIONS[vendor]: 803246080 bytes
Generating full update.
Running delta_generator with args: --out_file=/tmp/payload-Y3iphj.bin --partition_names=boot:vendor 
--new_partitions=/tmp/boot.img.HGprkk:/tmp/vendor.img.k6S4Y3 --new_mapfiles=:/tmp/vendor.map.cUx0zu --major_version=2 
--max_timestamp=1625203656 --new_postinstall_config_file=/tmp/postinstall_config.UQllAQ --dynamic_partition_info_file=/tmp/dynamic_partitions_info.hL5iTI
[0706/095917.994946:ERROR:payload_generation_config.cc(192)] Cannot find partition system which is in jlq_dynamic_partitions_partition_list
[0706/095917.995282:FATAL:generate_delta_main.cc(619)] Check failed: payload_config.target.ValidateDynamicPartitionMetadata(). 
/home/xxx/test_r_1.0_dev_0616/android/out/soong/host/linux-x86/bin/../lib64/libchrome.so(base::debug::StackTrace::StackTrace(unsigned long)+0x17) [0x7f40a8510b27]
/home/xxx/test_r_1.0_dev_0616/android/out/soong/host/linux-x86/bin/../lib64/libchrome.so(logging::LogMessage::~LogMessage()+0x8a) [0x7f40a84a1d6a]
/home/xxx/test_r_1.0_dev_0616/android/out/soong/host/linux-x86/bin/delta_generator(+0xb5ece) [0x565287ff5ece]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0) [0x7f40a73f2840]
/home/xxx/test_r_1.0_dev_0616/android/out/soong/host/linux-x86/bin/delta_generator(+0xb1ee9) [0x565287ff1ee9]

/home/xxx/test_r_1.0_dev_0616/android/out/soong/host/linux-x86/bin/brillo_update_payload: line 625: 24190 Aborted                 (core dumped) "${GENERATOR}" "${GENERATOR_ARGS[@]}"

上面报错内容,重点应该是这句“Cannot find partition system which is in jlq_dynamic_partitions_partition_list”,这个问题怎么追查原因呢?得细看一下相关联的内容。

从上报的common.py脚本来看,会检查两个内容“META/ab_partitions.txt ”和“META/dynamic_partitions_info.txt”,会check这两个内容是否匹配。查看了一下,显示ab_partitions.txt是boot vendor和dynamic_partitions.txt,这个是我们在BoardConfig.mk中的DYNAMIC_PARTITIONS_PARTITION_LIST值,我这里配置的是BOARD_xxx_DYNAMIC_PARTITIONS_PARTITION_LIST := system system_ext product vendor

这两者不相等导致的报错。

那疑问是这两个txt是在哪里写进内容的?查看到是build/make/core/Makefile中处理的

build/make/core/Makefile:4785:	  echo "$${part}" >> $(zip_root)/META/ab_partitions.txt; \

ifeq ($(AB_OTA_UPDATER),true)
	@# When using the A/B updater, include the updater config files in the zip.
	$(hide) cp $(TOPDIR)system/update_engine/update_engine.conf $(zip_root)/META/update_engine_config.txt
	$(hide) for part in $(AB_OTA_PARTITIONS); do \
	  echo "$${part}" >> $(zip_root)/META/ab_partitions.txt; \
	done
	$(hide) for conf in $(AB_OTA_POSTINSTALL_CONFIG); do \
	  echo "$${conf}" >> $(zip_root)/META/postinstall_config.txt; \
	done

很明显,要查看AB_OTA_PARTITION了,然后开始查看BoardConfig中的AB_OTA_PARTITIONS的赋值
发现确实重复定义了AB_OTA_PARTITIONS,修正后问题得到解决。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-07 21:17:37  更:2021-07-07 21:19:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 7:33:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码