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

原创 2015年07月07日 20:08:24
当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)

相关文章推荐

Android 5.1编译大于2G的OTA包是会出 Android OverflowError: size does not fit in an int或者would require ZIP64 ex

Android 5.1编译大于2G的OTA包是会出 AndroidOverflowError: size does not fit in an int或者would require ZIP64exte...
  • oman111
  • oman111
  • 2015年12月11日 16:12
  • 1398

cocos2d-x 3.3连接Xcode9编译时报错:call to unavailable function system not available on ios

一个cocos2d-x 3.3的项目,使用Xcode8.3.2正常编译,但是连接Xcode9 beta编译时报错:call to unavailable function system not ava...
  • fzhlee
  • fzhlee
  • 2017年06月15日 18:23
  • 5890

Eclipse新建android项目最低sdk为2.X时报错解决方法

eclipse更新adt后,新建一个android项目,把最低sdk设成2.X后,android项目报错

将第三方apk编译进Android系统文件system.img

1、把apk拷贝到out\target\product\generic\system\app中。 执行命令make snod , 把添加的spk编到system.img 中 2、使用m...

android编译时如何决定一个APK等Module是否被自动编译到system.img中

android在全局执行make时,编译目标的一个入口files是依赖于modules_to_install的 818 .PHONY: files 819 files: prebuilt \ 820 ...

Android编译系统分析五:system.img的生成过程

我们在完整编译android系统的时候,最终会生成几个重要的镜像文件,其中有system.img,userdata.img,ramdisk.img等。这篇文章的目的是分析system.img的生成过程...

android编译及添加apk到system.img

------------------------------添加apk到system.img中------------------------------- 1.添加第三方apk的package到s...

挂载android编译生成的system.img

找到out/host/linux-x86/bin下simg2img工具: 将其与system.img放到一个目录中: 使用该工具对system.img进行解压,命令如下: ./sim...

android编译系统分析(五)system.img的生成过程

android编译系统分析(五)system.img的生成过程
  • ztguang
  • ztguang
  • 2016年10月31日 15:30
  • 1182

编译Android时,添加或者删除system.img中第三方apk、更改Android系统默认语言

/********************************************************************************************  * au...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 5.x system.img 大于2G导致编译otapackage时报错如何处理
举报原因:
原因补充:

(最多只允许输入30个字)