はじめに
QAさんとやりとりをしていてテストをしてもらう際に何故か実機に入れられない問題が発生したのでその時の対処法を記載しておきます
原因
おそらく証明書
状況
- 実機だとビルドに成功するがスプラッシュ画像で下記のような状態で止まってしまう
- シュミレーターでは問題なく起動できるし使える
- Alamofireはcarthageで管理しているライブラリだからこれがあやしい?
- 自分と先輩たちのPCだと問題なく実機ビルドできるがこの端末だけ実機ビルドができない
表示されるエラー内容
dyld: Library not loaded: @rpath/...
Referenced from: /private/var/mobile/Containers/Bundle/Application/...
Reason: no suitable image found. Did find:
/private/var/mobile...
やったこと
調べてみると色々原因があるらしく一つづつやってみた
Carthageが原因?
carthageのcacheを消してみたがうまくいかず
また一度プロジェクトファイルまるごと消してgitcloneからビルドまでやり直してみたもののうまくいかなかった
WWDR有効期限切れが原因?
Apple Worldwide Developer Relations Certification Authorityという証明書らしい
Apple PKI
ここで期限が長いものを選んでダウンロードしてKeyChainにいれてみたもののうまくいかない
Derived Data(中間データ)を削除する
上部メニュー > [File] > [Workspace Settings…]内のDerivedDateにパスが書いてあります
コマンドで消すなら
rm -rf /Users/(ユーザー名)/Library/Developer/Xcode/DerivedData
これでもうまく行きませんでした
プロジェクトをクリーンしてみる
product -> clean
keychainから全ての証明書を削除
初めて知ったのですが削除してもXcodeがなんとか証明書を用意してくれることを発見しました
それでも再び実機ビルドしてもうまくいかず
登録しているappleのアカウントを削除する
preferences->Accountsのなかの左したの−ボタンで削除できます
端末再起動
Xcodeのappleアカウントログイン
ここで再び実機ビルドをしてもうまくいかず
証明書をrevokeして再度証明書をつくって登録する
TARGETSの項目のGeneralタブ内のSigningで証明書がないと言われるはずなので、その時に表示されるrevokeボタンを押す
下記を参照して証明書を作りました
よく分かる!iOS アプリ開発に必要な証明書ファイルの作成方法 | アドカレ2013 : SP #4
これをやってもやはり実機ビルドができずに困りました・・・
何度かXcode再起動、ビルドのし直し、キャッシュの削除、clean、appleアカウントの切替えをやる
突然何故がビルドできるように
わけがわからない・・・・・
おそらく原因は証明書だと思われるので誰かの助けになれば幸いです
参考文献
no suitable image found.の対処
Xcode 9.2 (9C40b) refuses to code sign. I am dead in the water here.
XCode9: code signing blocked mmap() while running on device
"code signing blocked mmap()" on iOS Device