ios developers

LinkMap

2022-03-20  本文已影响0人  Sweet丶
一、ipa文件中查看可执行文件

我们打包出来的ipa,使用unzip命令去解压后,然后解压
出来的文件进行“显示包内容”,可以查看到里面的可执行文件。

unzip xxxx.ipa // 解压xxxx.ipa到当前文件夹
解压ipa后的可执行文件.png
二、查看有哪些内容链接进了可执行文件

我们可以通过LinkMap来获知各个模块链接到可执行文件中的大小,具体方法见 LinkMap初探
在找到这个linkMap的文件后,复制到桌面,然后可以用xcode打开它,查看到这个文件的结构:

# Path // 可执行文件的路径
# Arch: arm64 // 可执行文件支持的架构
# Object files: // 链接的目标文件
# Sections: // __Text(程序代码)和__DATA(已经初始化的变量)
# Symbols: // 程序的符号(类名、变量名、方法名)
# Dead Stripped Symbols: // 裁剪掉的Dead符号

关于最后一点Dead Stripped Symbols, 死的裁剪符号,请查看文章iOS:静态库和dead code strip

我们可以使用一个工具 LinkMapParser 来统计LinkMap文件中各个模块占用的大小。比如下面的统计:

================================================================================
        demoData/TestCleanPackage-LinkMap-normal-x86_64.txt各模块体积汇总
================================================================================
Creating Result File : demoData/BaseLinkMapResult.txt
AMapNaviKit                                       20.86M
AppDelegate.o                                     0.01M
ViewController.o                                  0.00M
TestCleanPackage.app.xcent                        0.00M
UnUsedClass.o                                     0.00M
main.o                                            0.00M
libobjc.tbd                                       0.00M
linker synthesized                                0.00M
Foundation.tbd                                    0.00M
UIKit.tbd                                         0.00M
总体积:                                           20.87M

LinkMapParser工具查看LinkMap文件统计的指令:

// 查看一个LinkMap文件
python parselinkmap.py $map_link_file_path

// 查看并对比两个LinkMap文件
python parselinkmap.py $base_map_link_file_path $target_map_link_file_path

上述文件中包含项目中的.o文件、静态库、动态库,可以根据情况进行瘦身优化, 比如上述的AMapNaviKit占用了20M,如果项目不需要的话,就可以移除这个库。

上一篇下一篇

猜你喜欢

热点阅读