您的位置:首页 > 移动开发 > Android开发

android 5.x system.img 大于2G导致编译otapackage时报错如何处理

2015-07-07 20:08 555 查看
当system分区预制过多apk时如果img 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

//http://blog.csdn.net/sergeycao

这是由于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

(但此方法占时提高write size 到32bits相当于4G, 如果超过4G仍会出现问题)



另外还需修改一下脚本 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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: