【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

    如果使用分割文件的办法,可能还需要考虑小文件再合成大文件~

 

参考文献:http://byandby.iteye.com/blog/835744

              http://www.cnblogs.com/stay/articles/1898965.html 

posted @ 2011-08-22 17:59  风倾清凌  阅读(7350)  评论(0编辑  收藏  举报