[FAQ14456] system.img>2G导致编译otapackage时报错如何处理

[DESCRIPTION]
当system分区预制过多apk时如果image size超过2G 在make otapackage时会报如下错误
 zipfile.LargeZipFile: Zipfile size would require ZIP64 extensions
 in writestr zinfo.CRC = crc32(bytes) & 0xffffffff # CRC-32 checksum OverflowError: size does not fit in an int
  
[SOLUTION]
 这是由于python 2.7 脚本限制
参考/prebuilts/python/linux-x86/2.7.5/lib/python2.7/
ZIP64_LIMIT = (1 << 31) - 1       (31bits相当于2G)
 
python 3.0+ 已提供solution,  但目前Android 编译环境使用2.x 语法与 3.0不兼容
对此google提供一个workaround solution
参考以下网址有提供详细patch内容
https://android-review.googlesource.com/#/c/142984 
 
 
另外还需修改以下脚本  build/tool/releasetools/
1、sign_target_files_apks
2、replace_img_from_target_files.py 
3、ota_from_target_files
4、img_from_target_files.py 
5 、img_from_target_files
6、common.py 
7、add_img_to_target_files
针对所有zipfile.ZipFile  添加最后 allowZip64=True 参数值
ex:
原始文件:
output_zip = zipfile.ZipFile(filename, "a", compression=zipfile.ZIP_DEFLATED) 
修改为:
output_zip = zipfile.ZipFile(filename, "a", compression=zipfile.ZIP_DEFLATED, allowZip64=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值