zoukankan      html  css  js  c++  java
  • 减小App包的大小

    检查.ipa文件

    首先获得app的ipa文件。

    将ipa文件的后缀改为.zip,解压得到包内容。

    查看资源文件哪个最大。然后试着对最大的文件即可处理


    图片

    尽量使用8-bit图片

    使用8-bit的PNG图片,比32-bit的图片能降低4倍的压缩率。

    因为8-bit的图片支持最多256种不同的颜色,所以8-bit的图片一般仅仅应该用于一小部分的颜色图片。比如灰度图片最好使用8-bit。

    针对32-bit的图片尽量使用高压缩的比率

    利用Adobe Photoshop的Save For Web能够减小JPEG和PNG的图片大小。在Xcode中,默认情况下。会自己主动的使用pngcrush来压缩.png图片。

    使用压缩工具进行处理:

    推荐使用ImageOptim对图片进行压缩,实验证明该tools。

    编译选项

    将build setting中的Optimization Level设置为Fastest, Smallest [-Os]; 将build setting 中的Strip Debug Symbols During Copy设置为YES(COPY_PHASE_STRIP = YES),这样能够减小编译出二进制文件的尺寸。这里提到的这些设置在Xcodeproject中对于Release的配置是默认的。

    警告:这些设置会让你的程序非常难debug。

    在一般开发环境build中不建议这样设置。

    减小指令集的大小:

    眼下指令集有下面几种:

    armv6 --> iPhone  iPhone2 iPhone3G 第一二代的iPod Touch

    armv7--> iPhone4 iPhone4s

    armv7s --> iPhone5  iPhone5c

    armv64 --> iPhone5s

    机器对指令集的支持是向下兼容,因此iPhone5s是能够在armv7的指令集上执行。仅仅是效率没有那么高。

    你的设备是armv7s指令集,那么它也能够兼容执行比armv7s版本号低的指令集:armv7、armv6

    ========================================================

    名词解释:

    Architecture:该编译选项是为了指定project将被编译成哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的。假设支持的指令集数目有多个。就会编译出包括多个指令集代码的数据包,造成终于编译的包非常大。

    Valid architectures :该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是XCode终于生成的二进制包所支持的指令集。

    Build Active Architecture Only :该编译项用于设置是否仅仅编译当前使用的设备相应的arm指令集。

    当该选项设置成YES时,你连上一个armv7指令集的设备。就算你的Valid Architectures和Architectures都设置成armv7/armv7s/arm64,还是依旧仅仅会生成一个armv7指令集的二进制包。

    当然该选项起作用的前提是你的Xcode必须成功连接了调试设备。

    假设你没有不论什么活跃设备,即Xcode没有成功连接调试设备,就算该设置项设置成YES依旧还会编译Valid Architectures和Architectures指定的二进制包。

    通常情况下,该编译选项在Debug模式都设成YES,Release模式都设成NO。


    假设你的软件对安装包大小很敏感,你能够降低安装包中的指令集数据包,并且这能达到立竿见影的效果
    我们的项目之前支持的指令集是armv7/armv7s。后来改成仅仅支持armv7后。比原来小了10MB左右。

    眼下AppStore上的一些知名应用,比方百度地图、腾讯地图通过反汇编工具查看后,也都仅仅支持armv7指令集。

    只是对于armv7s/arm64指令集设备来说,使用执行armv7应用是会有一定的性能损失。只是这样的损失有多大缺乏权威统计数据,个人觉得是不会影响用户体验的







  • 相关阅读:
    twisted与websocket
    【算法竞赛 数学】拉格朗日插值法
    Event and Delegate
    Lambda 表达式 问题
    Singleton 模式
    COM Interop 简介
    outlook2007阻止附件的问题 http://hi.baidu.com/simplejoy/blog/item/53693897bd16046554fb9631.html
    Lnk1202 http://www.codeguru.com/forum/archive/index.php/t386908.html
    error LNK2001: unresolved external symbol
    Delegate 示例
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6723332.html
Copyright © 2011-2022 走看看