On Xcode 6, Build and Archive Code Signing is updated. It’s not only UI or operation. Especially, take care for Archive and real device test phase.
Actually, Xcode requires code-signing to 3rd party flameworks. This check is not so hard on iOS Simulator testing, build is succeed, application is working on iOS simulator.
However, this problem cannot permit real device installation.
- Build is succeed.
- iOS Simulator testing is fine.
- When the Archive, you get a issue. Expected provisioning profile cannot assign to your app even though you set at Build Setting. Xcode auto-generated provisioning profile (“XC:” prefix provisioning profile) is set. But Archive is succeed. Strange.
- So, you cannot install your real devices by “No code signature found.” Device log records signing error.
At first you will doubt Provisioning profile, Certification, Key Chain issue. But don’t touch it. That action increases your trouble.
My problem is “No signing as DropboxSDK.framework”.
Xcode is correct, it requires all signing seriously. No signing framework cannot permit to attach to application, this check is more seriously at installation. Then, unnecessary framework expects to remove from project.
Xcode 6の登場で、BuildとArchiveのSigningの仕様が変更になりました。ユーザー・インターフェイスや操作だけではありません。特に、Archiveと実機でのテストに注意が必要です。
Xcodeは、今回からサード・パーティのフレームワークにもSigningを要求するケースが見られます。このチェックは、iOS Simulatorでのテスト段階では厳密に行われません。Buildも成功し、 iOS simulatorでも正常に機能するため、問題が顕在化しません。
しかし、実機のインストールは失敗します。
- Buildは正常に機能する。
- iOS Simulatorでの検証も問題なく進む。
- Archiveの際に、微かに問題が発生します。Build Settingで指定したProvisioning profileが、うまくAppにセットされません。Xcodeが自動で生々するprovisioning profile (“XC:”ではじまる名前で生成されたProvisioning profile)になります。Archive自体はうまく完了する奇妙な状態に陥ります。
- 実機へのインストールは、どのように対処しても実現しません。”No code signature found.”というエラーがXcodeでは表示されます。実機のログにもSiginingのエラーと記録されます。
この現象に陥った際、まずProvisioning profile, Certification, Key Chainといった問題を疑うかと思います。できれば、すぐにそれらをアップデートしないことをお勧めします。問題の混乱が増すばかりです。実際にそれらに問題がある時だけ、対処した方がいいです。
事例では、問題の原因はDropboxSDK.frameworkがSigningを持っていないことでした。
Xcodeの指摘は正しく、Signingを厳密にしただけです。Signingが適切に行われていないFrameworkをアプリケーションに付属させる場合、インストール時により厳密にチェックが行われるようです。無意味なFrameworkをProject内に残さずに除外することが重要です。