检查.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应用是会有一定的性能损失。只是这样的损失有多大缺乏权威统计数据,个人觉得是不会影响用户体验的

减小App包的大小的更多相关文章

  1. UE4 减少APK包的大小

    本文依据官方文档 Reducing APK Package Size整理而来,不过我会陆续添加自己减少包大小的心得. ETC1 纹理 当使用ETC1打Android包时,注意ETC1是不会压缩带Alp ...

  2. Android中获取应用程序(包)的大小-----PackageManager的使用(二)

    通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...

  3. eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错? java.lang.ClassNotFoundException: com.branchitech.app.startup.AppStartupContextListener java.lang.ClassN

    eclipse java项目中明明引入了jar包 为什么项目启动的时候不能找到jar包 项目中已经 引入了 com.branchitech.app 包 ,但时tomcat启动的时候还是报错?java. ...

  4. Fragment用app包还是v4包解析

    转自:http://blog.csdn.net/zc0908/article/details/50721553 1)问题简述 相信很多的朋友在调用Fragment都会遇到下面的情况: 这个时候问题来了 ...

  5. app包中的fragment和v4包中的fragment的使用的区别

    app包中的fragment和v4包中的fragment的使用的区别 1.尽量不要用app包中的fragment,因为这个是在3.0之后才有的,支持的版本太高,在低版本中是是用不了的 2.androi ...

  6. TCP 和 UDP 协议发送数据包的大小 (转载)

    MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+SMAC+Type+Data+CRC由于以太网传输电气方面的限制,每个以太网帧都有最小的大小 ...

  7. UDP包的大小与MTU

    在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分 ...

  8. Appium+Python自动化 3 -获取 app 包名和 activity

    方法一: ①手机通过USB连接电脑 ②打开手机上被测app ③在电脑上 dos命令窗口,输入命令 adb shell dumpsys window w | findstr \/ | findstr n ...

  9. Tcp Udp发送包的大小限制问题

    以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.    这个1500字节被称为链路层的MTU(最大传输单元).    但这并不是指链路层的长度被限制在 ...

随机推荐

  1. C/C++ 函数指针 总结

    什么是函数指针 就像某一变量的地址可以存储在相应的指针变量中一样,指向函数的指针中保存着函数代码起始处的地址 函数指针的声明 当声明一个函数指针时,必须声明它指向的函数类型.要指定函数类型,就要指出函 ...

  2. js比较两个String字符串找出不同,并将不同处高亮显示

    根据java代码改写成js,下边js文件代码: function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.a ...

  3. cocos2d-x 3.0 事件处理

    參考文章: star特530的CSDN博客:http://blog.csdn.net/star530/article/details/18325493 https://github.com/chuko ...

  4. Spring加载Hibernate 映射的几种方式及区别

    LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件: mappingResources.mappingLocations.mappingDirectoryLo ...

  5. Andorid之使用GMail后台偷偷发送邮件(不要干坏事噢=。 =)

    工具类: import java.util.Date; import java.util.Properties; import javax.activation.CommandMap; import ...

  6. 结合MapReduce和数据集Combining datasets with MapReduce

    While in the SQL-world is very easy combining two or more datasets - we just need to use the JOIN ke ...

  7. Nginx缓存使用官方教程及常见问题解答

    原文地址:http://www.kuqin.com/shuoit/20150804/347388.html 我们都知道,应用程序和网站一样,其性能关乎生存.但如何使你的应用程序或者网站性能更好,并没有 ...

  8. c++学习之友元

    最近工作好累呀,晚上总是失眠,自学c++的步骤都放慢了,本来之前看c++ primer的,结果这本书讲的太细节了,初学者不是很好把握.所以我又重新找了个教程,比较适合初学者.今天学习到友元函数和友元类 ...

  9. Cisco KVM Console无法打开

    前阵子手贱, 每次弹出的Java的update的对话框我都是直接关闭的, 那天实在是不忍再受骚扰, 升级到了Java 8. 结果Cisco的KVM就死活打不开了, 报错如下: Exception: c ...

  10. WebView 加载网页 加载资源 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...