【android】assert目录下文件的大小限制
前阵子,在研究如何将exe文件打包到apk文件中,然后当apk升级时将exe文件复制粘贴到其他目录下。但是在粘贴exe文件时,抛出异常Data exceeds UNCOMPRESS_DATA_MAX。查找相关文献后,发现android对资源文件的大小有限制(有些文献说只有android2.3之前的版本才有文件大小的限制?),不超过1M,否则将抛出异常。
解决的办法有三种:
1.将你的资源文件后缀改成下面列出的后缀。
/* these formats are already compressed, or don't compress well */ static const char* kNoCompressExt[] = { ".jpg", ".jpeg", ".png", ".gif", ".wav", ".mp2", ".mp3", ".ogg", ".aac", ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".amr", ".awb", ".wma", ".wmv" };
2.在命令行上使用-0参数来指定不需要压缩的文件后缀。但是如果你是使用Eclipse,目前还不知道有什么方法可以传递-0参数给aapt。
3.将你的资源文件分割成UNCOMPRESS_DATA_MAX(1M)以下的文件.
在windows下要下载一个文件分割器,linux下就比较简单
用split 命令即可
Linux命令:split
功能说明:切割文件。
语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
补充说明:split可将文件切成较小的文件,预设每1000行会切成一个小文件。
参 数:-<行数>或-l<行数> 指定每多少行就要切成一个小文件。 -b<字节> 指定每多少字就要切成一个小文件。 -C<字节> 与-b参数类似,但切割时尽量维持每行的完整性。 --help 显示帮助。 --version 显示版本信息。 [输出文件名] 设置切割後文件的前置文件名,split会自动在前置文件名後再加上编号。
例如:split -b 640k id.db 执行后产生两个文件,xxa,xxb
如果使用分割文件的办法,可能还需要考虑小文件再合成大文件~