今天帮同事看了一个问题,大概情况记录一下,补充了我知识的不足。
问题是,一个swift工程(里面包含objc文件,算是混编工程)要往app store上提交,但是打完包后,发现ipa非常大。于是解压ipa发现目录结构是这样的:

其中 SwiftSupport目录中包含的文件,在Payload/Test/Frameworks还原样有一份,但是大小有差别,如图:

上图为Payload/Test/Frameworks中的文件大小。

上图为SwiftSupport中文件的大小,可以看到差别还是很大的。
但是,如果app不是传到app store,而是enterprise发行,导出的ipa中,却不包含SwiftSupport目录。往app store上传的版本中,这个目录是必须的,如果没有,貌似upload时会失败。
综上,如果是swift工程,而且要上传app store,打出来的ipa体积会比较大,因为其中包含了SwiftSupport目录,尤其是里面的libswiftcore.dylib文件。而如果swift工程不上传到app store,而仅仅是用于enterprise发布,那么打出来的enterprise版ipa不包含SwiftSupport目录,不会增加额外的体积。
网友评论