[DESCRIPTION]
android s上,我司推荐使用split build的方式进行编译,但是部分客户依旧会采用AOSP full build的方式进行编译。而我司在这块release的时候,并未进行验证。因此执行make otapackage的时候,会出现如下报错。
[0312/161424.537038:INFO:payload_generation_config.cc(183)] Target build supports VABC
[0312/161424.537135:ERROR:payload_generation_config.cc(211)] Cannot find partition product which is in main_partition_list
[0312/161424.537148:FATAL:generate_delta_main.cc(628)] Check failed: payload_config.target.ValidateDynamicPartitionMetadata().
原因是因为编译时,AB_OTA_PARTITIONS没有吃到全部的分区,导致build时,缺少product分区报错。
(注:也不能只在AB_OTA_PARTITIONS添加product分区,虽然这样可以编译通过,但是后续因为缺少preloader lk等分区,会导致升级失败)
[SOLUTION]
添加如下code重新编译:
- device/mediatek/build/Android.mk
+ifeq (sys vnd, $(strip $(MTK_SPLIT_BUILD_LAYERS)))
+AB_OTA_PARTITIONS := $(sort $(AB_OTA_PARTITIONS) $(MTK_SPLIT_VENDOR_AB_OTA_PARTITIONS))
+endif
BOARD_PACK_RADIOIMAGES := $(BOARD_PACK_RADIOIMAGES) $(sort $(MTK_SPLIT_VENDOR_BOARD_PACK_RADIOIMAGES))
INSTALLED_RADIOIMAGE_TARGET := $(INSTALLED_RADIOIMAGE_TARGET) $(sort $(MTK_SPLIT_VENDOR_INSTALLED_RADIOIMAGE_TARGET))