默认

iOS版微信安装包“减肥”实战记录

查看数: 67711 | 评论数: 10 | 收藏 2
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-03-10 11:01

正文摘要:

前言 微信经过多次版本迭代,产生不少冗余代码和无用资源。之前微信也没有很好的手段知道哪个模块增量多少。另外去年10月微信开始做ARC支持,目的是为了减少野指针带来的Crash,但代价是可执行文件增大20%左右。而 ...

评论

faruxue96 发表于 6 年前
最近正好在关注瘦身相关技术文档,&#128077;
yz815 发表于 6 年前
MicroMessenger  这是标准的名称
JackJiang 发表于 8 年前
引用:lcqingx 发表于 2016-03-11 01:53
另一种是通过otool命令逆向__DATA.__objc_classlist段和__DATA.__objc_classrefs段来获取当前所有oc类和被 ...

就是通过otool找出2个集合,相减得出的地址再去LinkMap&nbsp;file找出类名称。<br>而且还要减去__objc_superrefs段。<br>还存在2种误报情况:<br>1.NSClassFromString(“ABCClass”)动态调用;<br>2.被间接继承的基类;
JackJiang 发表于 8 年前
引用:lcqingx 发表于 2016-03-11 01:52
使用图片资源的时候不需要@2x和@3x的图片了么? 那是不是说现在的app里只要一套图片就可以了? 求解~~

你理解错了文章里的意思了:作者说要要把@2x、@3x的图片的删除,意思是在删除不带@2x或@3x尾巴的图片时,不要忘了把@2x、@3x的同名高清图也删除,而不是说app里不需要这两种图了。
lcqingx 发表于 8 年前
楼主, 我最近在公司也是做的这么一个工作, 但是我的任务只是排布.o文件大小, 删除资源, 当然我是用的笨办法,关于下面这一段,读者看了还是不会操作, 你可再详细指导一下, 我的qq:914078998 多谢了。 结合LinkMap文件的__TEXT.__text,通过正则表达式([+|-][.+\s(.+&amp;#41;]&amp;#41;,我们可以提取当前可执行文件里所有objc类方法和实例方法(SelectorsAll)。再使用otool命令otool -v -s __DATA __objc_selrefs逆向__DATA.__objc_selrefs段,提取可执行文件里引用到的方法名(UsedSelectorsAll),我们可以大致分析出SelectorsAll里哪些方法是没有被引用的(SelectorsAll-UsedSelectorsAll)。注意,系统API的Protocol可能被列入无用方法名单里,如UITableViewDelegate的方法,我们只需要对这些Protocol里的方法加入白名单过滤即可。
lcqingx 发表于 8 年前
另一种是通过otool命令逆向__DATA.__objc_classlist段和__DATA.__objc_classrefs段来获取当前所有oc类和被引用的oc类,两个集合相减就是无用oc类。 不知道这个咋操作??哭哭哭
lcqingx 发表于 8 年前
WeChat的工程名竟然是MicroMessenger
lcqingx 发表于 8 年前
使用图片资源的时候不需要@2x和@3x的图片了么? 那是不是说现在的app里只要一套图片就可以了? 求解~~
码神 发表于 8 年前
iOS的安装包大小确实太夸张了,动不动一个IPA就是几十M,尤其需要同时兼容32位和64位,几乎是双倍大小。这确实很恶心。
JackJiang 发表于 8 年前
这篇文章之前看过。可以借鉴的主要是编译选项的设置,这倒是可以试试。
其它涉及代码的删减和优化主要跟代码的实现联系一起,最好还是能具体项目具体分析。
安装包减重总归是有办法的,只要死磕它。

返回顶部