为什么CocoaPods会增加IPA文件的大小?如何减小大小?

4

CocoasPod很好,但有时候不是这样的。
为什么?因为你的项目里有一个叫做“-ObjC”的标记。
它会将所有对象文件都拉入最终的二进制文件中。

例如,一个只包含“pod 'AFNetworking'”和标记“-ObjC”的空项目,二进制文件就会达到7MB。一个空项目需要7MB的二进制文件,这太糟糕了。

一些框架(如Google地图SDK)需要开启“-ObjC”标记。
所以,如果你的项目中同时包含“AFNetworking pod”和“Google Map SDK”,二进制文件大小将会达到17MB。

那么我的问题是:
我该如何针对特定的库关闭“-ObjC”标记呢?
例如,只对Google Map SDK开启“-ObjC”标记,而关闭AFNetworking的标记。


我在我的Swift项目中使用了Facebook SDK(它是用Objective-C编写的)。有没有Swift的解决方案? - Deepak Thakur
1个回答

3

为了减小 .ipa 文件的大小,您应该尝试解答这个问题

In general, adding a static library to your project in Objective-C will pull ALL OBJECT FILES into your resulting binary because cocoa pods installation adds -ObjC flag to your linker settings, and as stated in linker manual:

-ObjC        Loads all members of static archive libraries that implement
             an Objective-C class or category.

This flag included to solve problem with linking categories, because by default linker will not include object files containing only categories into resulting binary.


1
-1 为了避免抄袭其他答案,应该投票将其标记为重复问题而不是复制。 - vikingosegundo
1
+1 表示复制并链接到现有答案,同时将其关闭为重复。 - Thilo
1
@thilo,他没有关闭它。 - vikingosegundo
你知道如何删除特殊库上的标志吗?例如,Google Map SDK需要-ObjC标志,但我不想在AFNetworking中使用该标志。 - Anh Bảy
这个问题的最终解决方案是什么? - Hardik Mamtora

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接