2017-07-29 10 views
3

私はSwiftのプロジェクトを持っており、DYLD_PRINT_STATISTICSで計測すると、動的ライブラリのリンクである1.0秒の事前起動時間がわかります。iOSの起動時間が遅い

この問題に対処するきれいで安全な方法はありますか?

+0

ココアポード私はそう思っていますか? –

+0

おそらくリンクされたフレームワークです。より具体的な情報がなければ、私はより具体的な答えを与えることはできません。つまり、[WWDC 2017 Session](https://developer.apple.com/videos/play/wwdc2017/413/)は非常に有益です。 –

+0

@ J.Doeココナッツが実際に。しかし、ライブラリを手動で追加すると、動的リンクがそこに存在するため、問題は解決しません。私はすべてのポッドを静的ライブラリに変換するソリューションを見つけました。しかし、それは私の意見ではクリーンなソリューションと見えません – Roma

答えて

1

Optimizing App Startup TimeのアップルのWWDC 2016セッションによれば、サイズにかかわらず、dynamically linked librariesの数が多いと、アプリの起動時間が劇的に遅くなります。

これを修正するには、いくつかのダイナミックライブラリを1つのライブラリにマージすることができます。それらがすでにstatic librariesである場合、libtoolを使用して、this SO answerのコマンドを使用してこれらを結合することができます。ただし、静的でない場合は、それらを結合するには、ソースコードにアクセスできる必要があります。ソースコードにアクセス可能で、あるライブラリから別のライブラリにコードをそのままコピーし、結果として得られるライブラリを使用すれば十分です。

もちろん、異なるライブラリを1つのものにマージすることは、開発者の観点から明らかに不便です。これに対抗するために、Xcodeでは、異なるフラグ(つまり、RELEASEとDEBUG)が設定されている場合、as described in this forumの異なるライブラリをリンクすることができます。

可能であれば、マージ処理がエラーを起こしにくいため、静的ライブラリをマージする方がよいでしょう。プロジェクトにはCocoaPods allows users to use static librariesがあります。

+1

ローディング時間が改善されていることに注意してください。あなたのappdelegateからアプリ全体を参照する代わりに、dylibの読み込みを遅らせることで、アプリが応答する必要がある時間が短縮されます。 – Jano

関連する問題