ObjecTips

Swift & Objective-C で iOS とか macOS とか

Swift で書かれたアプリを配信すると起動時にクラッシュ

Swfit で書いたアプリを配信すると起動時にクラッシュするケースがある。
Apple の以下のドキュメントで言及されている。

原因は証明書で、iOS 8Swift 登場以後の証明書には 部署 Organizational Unit (OU) が付与されるようになっていて、これが無い証明書だと起動時に dylib を読み込めなくてアプリがクラッシュする。
証明書が Swift に対応しているかどうかはキーチェーン.appで証明書をダブルクリック、もしくは「ファイル>情報を見る⌘I」で詳細を表示する事で確認できる。

対応する証明書は以下のように 部署 の項目が表示されている。

f:id:Koze:20151006214821p:plain

対応しない証明書は以下のようになっている。

f:id:Koze:20151006214841p:plain

エンタープライズの Distribution の証明書の場合、証明書を取り消して作り直すと既存の配信済みアプリが使えなくなるので注意しろとの事。