zoukankan      html  css  js  c++  java
  • Android 常见问题之Assets文件大小限制

    在Android 2.3以前的任何压缩的资源的原始大小超过1M将不能从APK中读出,如果你使用AssetManager 或 Resources classes方法来获取InputStream,将抛出java.io.IOException的异常如下 DEBUG/asset(1123): Data exceeds

      Android Asset Packaging Tool(aapt)使用这个工具可打包所有数据 Image XML文件 任何资源文件.在生成APK时aapt选择性的压缩各种资源来节省设备空间,aapt使用后缀来决定哪个资源需要压缩,aapt源码定义一些不需要压缩的文件后缀。附aapt源码Package.cpp

      

    以下是代码片段:
    view plainprint? 
      /* 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" 
      };
      在Android 2.3以前的任何压缩的资源的原始大小超过1M将不能从APK中读出,如果你使用AssetManager 或 Resources classes方法来获取InputStream,将抛出java.io.IOException的异常如下 DEBUG/asset(1123): Data exceeds UNCOMPRESS_DATA_MAX (20078432 vs 1048576);

      可以看到如果需要打包数据库的童鞋文件过大就需要注意了。

      解决方法如下:

      1.将你的资源文件后缀改成上面列出的后缀。

      2.在命令行上使用-0参数来指定不需要压缩的文件后缀。当你使用Eclipse内的ADT目前还不知道有什么方法可以传递-0参数给aapt。

      3.将你的资源文件分割成UNCOMPRESS_DATA_MAX(1M)以下的文件.

  • 相关阅读:
    Lazy Load, 延迟加载图片的 jQuery 插件(转)
    获取python的版本&获取两个日期的天数差值
    基于appnium+python+夜神模拟器的自动化
    Appium安装部署
    HttpRunner_参数化进阶
    httprunner2.0 概述及使用说明
    httprunner官方文档
    Linux中常用的监控性能的命令(sar、mpstat,vmstat, iostat,)详解
    Linux常用命令大全
    JMeter 事务控制器
  • 原文地址:https://www.cnblogs.com/jacktu/p/2570075.html
Copyright © 2011-2022 走看看