iOS安装包压缩

news/2025/2/21 0:37:28

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近做app安装包压缩工作

主要工作:

1.精简资源文件,所有图片资源压缩,删除所有没有用到的图片资源。

删除资源后安装包减少明显;

2、更改工程编译配置

将Generate Debug Symbols改为NO (debug状态下不要修改,不然调试过程中会打断点无效)
将build setting中的Optimization Level设置为release 下改为(Fastest, Smallest [-Os])  debug 下不要改,不然打断点打印的时候,打印的对象可能会是nil

 将build setting 中的Strip Debug Symbols During Copy设置为YES(COPY_PHASE_STRIP = YES),

Symbols Hidden by Default 在release版本应该设为yes,可以去除不必要的调试符号。

三、删除重复的代码、冗余的代码、不用的类、函数、变量等

原来安装包大小33,952,168字节

增加一个testViewController后大小33,943,592字节

添加一个空的viewcontroller不增加其他的方法,大概会增加8K的大小 大量的注释基本不会影响安装包的大小。

通过分析编译产生的.o文件的大小,查看安装包中哪些类占用的空间大,然后按大小从上往下遍历代码中的类,删除没用的代码。编译后,文件名和路径位于~/Library/Developer/Xcode/DerivedData/XXX-eumsvrzbvgfofvbfsoqokmjprvuh/Build/Intermediates/XXX.build/Debug-iphoneos/XXX.build/

因为服务器下发的JSON内容有很多字段,我们app处理时候基本是每个字段都解析了,所以本地好多类的变量很多,但是在下面的逻辑处理时候或者界面展示的时候,基本不用。例如orderSkuModel有两百多个变量,但是有很多变量都是解析完,没有使用。此时应该把他们去除。

这一轮修改后基本原来一千九百行的代码,删减后只剩一千行,原来的成员变量只剩一百个左右。

 

四:

去除项目中不用的framework、lib库等,项目中持续周期比较长,里面可能会有不再使用的库文件。删除后,安装包减少比较明显。例如我们项目中有个检测崩溃的库,在开发过程中使用过,后期不再使用,打包也不应该将其打进安装包,应将其删除。

 

 

 

比较好的技术点:

http://www.cocoachina.com/ios/20150202/11084.html

http://www.cocoachina.com/ios/20151203/14562.html

 

 

 file JDKeplerDevApp 查看app文件详情

 

otool -l JDKeplerDevApp  查看app命令详情

转载于:https://my.oschina.net/u/2252309/blog/673203


http://www.niftyadmin.cn/n/1577526.html

相关文章

经验丰富的程序员大佬们,请不要对初学者说这些话……

小编最近逛论坛看到一位程序员大佬与初学者的一段对话: 看了之后小编有感而发了,对于程序员大佬级别的你们看来,初学的这些可能你们不会放在眼里,虽然是真心的想给予建议,但对于听到的那一方来说,可能会觉得…

【原创】现代 Web 进化史

本文翻译自【The modern Web】,喜欢看原文的朋友,可以移步。 我是刚过了母亲节的分隔线 让我们回顾一下从 Web 技术的创始之初到今天都经历了哪些技术,并对将会出现并使用的技术进行预览。Cowboy 兼容于本章节中提及的所有技术,当…

面试现场简单几道java算法题, 你能写出几道?

这两天小编逛论坛的时候发现一个很有意思的事情,就是一位互联网公司的面试官分享的,他们最近想招一批java的实习生,所以他们的面试题并不难,但是前来面试的人,却很多都挂在了几道算法题上,要么就是逻辑不严…

程序员常用网站:让代码更简单

说起程序员,总有那么几个网站是程序员不可或缺的,小编办公室的程序员就常常用这几款网站,你用过么? Stack Overflow 这个网站,就算不常用,每次搜索编程相关都能看见它。当你遇到任何编程问题,…

跳槽,这些java面试题必须会,99%碰到!

基础篇 1.访问修饰符public,private,protected以及不写时的区别? 类的成员不写访问修饰符时,默认的是default. 2.Stirng是最基本的数据类型吗? 答: 不是. java中的基本数据类型就八种: byte, short, int, long, float, double, char, boolean. 剩下的都是引用类型(refer…

Python菜鸟之路:Python基础

一、Python版本升级至3.0的必然性 In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4 as soon as possible上述内容含义:Pyth…

浅谈Java(SpringBoot)基于zookeeper的分布式锁实现

通过zookeeper实现分布式锁 1、创建zookeeper的client 首先通过CuratorFrameworkFactory创建一个连接zookeeper的连接CuratorFramework client public class CuratorFactoryBean implements FactoryBean<CuratorFramework>, InitializingBean, DisposableBean { priva…

SpringBoot项目修改访问端口和访问路径的方法

创建SpringBoot项目&#xff0c;启动后&#xff0c;默认的访问路径即主机IP默认端口号8080&#xff1a;http://localhost:8080/ 此时&#xff0c;我们就可以访问Controller层的接口了&#xff0c;如&#xff1a;http://localhost:8080/hello package com.springboot.test;impo…