Swift App:予想外の崩壊理由

1489 ワード

同期:ckitakishi.com
昨年末に起きた物語だ.背景には、新しいSwiftアプリケーションがリリースの準備段階にあり、証明書は開発テスト用からリリース用に変更され、これは2つのTeamの異なるエンタープライズ版証明書です.
応用機能自体は非常に簡単で,開発テスト段階も比較的順調で,ほとんどクラッシュは発生しなかった.しかし、証明書の変更後、ホストテストアプリケーションは無限の崩壊に陥った.
Logは次のようになります.
dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: ...
  Reason: no suitable image found.  Did find:
  ...

Trouble Shootingとして記録するには、このエラーを提示する原因がたくさんあります.
  • キャッシュ存在可能、****Clean****エンジニアリング
  • この問題は、SwiftとObjective-Cが混在している場合が多いので、Building SettingsのEmbedded Content Contains Swift Codeの設定が****YES****になっているかどうかを確認する必要があります.
  • は依然として構成されており、Building SettingsのRunpath Search Pathsが正しいかどうかを確認します.通常、****@executable_path/Frameworks****.
  • 証明書をリセットします(ログアウトしてから新規作成します).

  • 実際の生産過程では、まず最初の3つをチェックし、最終的に証明書の問題であることを強く疑った.「libswiftCore.dylibクラッシュ」という話題については、このQ&Aが見やすいですが、Swiftアプリを実行するにはiOS 8 Releasedを使用して作成しなければならないということです.手に持っている2つの証明書と比較して、チームが異なる以外は、2016年夏と2014年夏の作成時間が最大の違いです.そのため証明書を更新した後も、問題はラッキーに解決しました.
    libswiftCoreについてdylibファイルはもう少しお話ししたいのですが、名前を見るとSwiftダイナミックライブラリだと推測できます.具体的にはSwiftのランタイムライブラリですが、このファイルと証明書は何の関係がありますか?なぜなら、現在のSwiftのバージョンアップが不安定なため、これらのランタイムライブラリを直接システムに置くと、Swiftのアップグレードのたびにアプリケーションが使用できなくなる可能性が高いためです.この問題の解決策として、Appleはランタイムライブラリをアプリケーションにパッケージ化することを選択し、アプリケーションのSwiftバージョンと一致する開発を保証します.libswiftCore.dylibはアプリケーションの一部なので署名も必要ですが、前の段落で述べたように、Swiftのランタイムライブラリに署名できる証明書はiOS 8 Releasedの後に作成する必要があります.これらすべては、Swiftの互換性を高めるために、互換性については、このTipを強くお勧めします.