Merge "ota_from_target_files: Disable XOR on <T vendor."
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index a9dcd96..01bc6e1 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -461,6 +461,25 @@
return system_prop and system_prop.GetProp("ro.build.version.release") == "11"
@property
+ def vendor_api_level(self):
+ vendor_prop = self.info_dict.get("vendor.build.prop")
+ if not vendor_prop:
+ return -1
+
+ props = [
+ "ro.board.api_level",
+ "ro.board.first_api_level",
+ "ro.product.first_api_level",
+ ]
+ for prop in props:
+ value = vendor_prop.GetProp(prop)
+ try:
+ return int(value)
+ except:
+ pass
+ return -1
+
+ @property
def is_vabc_xor(self):
vendor_prop = self.info_dict.get("vendor.build.prop")
vabc_xor_enabled = vendor_prop and \
diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py
index 7307ec2..df283d6 100755
--- a/tools/releasetools/ota_from_target_files.py
+++ b/tools/releasetools/ota_from_target_files.py
@@ -909,6 +909,19 @@
logger.info(
"VABC Compression algorithm is set to 'none', disabling VABC xor")
OPTIONS.enable_vabc_xor = False
+
+ if OPTIONS.enable_vabc_xor:
+ api_level = -1
+ if source_info is not None:
+ api_level = source_info.vendor_api_level
+ if api_level == -1:
+ api_level = target_info.vendor_api_level
+
+ # XOR is only supported on T and higher.
+ if api_level < 33:
+ logger.error("VABC XOR not supported on this vendor, disabling")
+ OPTIONS.enable_vabc_xor = False
+
additional_args = []
# Prepare custom images.