我在 Swift 中有项目,当我使用 DYLD_PRINT_STATISTICS 进行测量时,我可以看到 1.0 秒的预初始化时间,其中 70% 是动态库链接。
是否有任何干净和安全的方法来处理这个问题?
我在 Swift 中有项目,当我使用 DYLD_PRINT_STATISTICS 进行测量时,我可以看到 1.0 秒的预初始化时间,其中 70% 是动态库链接。
是否有任何干净和安全的方法来处理这个问题?
根据 Apple 的 WWDC 2016 Session on Optimizing App Startup Time,无论它们的大小如何,拥有大量动态链接库都会显着减慢应用程序的启动时间。
为了解决这个问题,可以将几个动态库合并到一个库中。如果它们已经是静态库,则可以使用 libtool 使用此 SO answer中的命令来组合它们。但是,如果它们不是静态的,那么要将它们组合起来,就必须能够访问它们的源代码。如果源代码是可访问的,那么将代码从一个库复制到另一个库并使用生成的库就足够了。
当然,从开发人员的角度来看,将不同的库合并到一个库中肯定是不方便的。为了解决这个问题,Xcode 允许在设置不同标志(即 RELEASE 和 DEBUG)时链接不同的库,如本论坛所述。
如果可能,最好合并静态库,因为合并过程更不容易出错。CocoaPods允许用户在他们的项目中使用静态库。