MacOSプログラミング/The application does not have a valid signature

iPhone/iPad用のアプリケーションを開発している際に、シグネチャを変えた訳でもないのに、デバイスにアプリケーションをインストールする際、突然「The application does not have a valid signature」と怒られるようになることがあります。

その際は、ビルドプロセスでファイルをアプリケーションバンドルの「resources」フォルダ以下にコピーしている可能性があります。

もし、resources以下にコピーしている場合は、なんでもいいのでそれ以外の名前にすると、「The application does not have a valid signature」のエラーを解決することが出来ます。


先に解決してくれている人が居て助かりました。OniDevさんありがとう!
#今日はなんだか、変な地雷ばかり踏んでいるような気がする・・

■Reference:
!!Thanks!! The application does not have a valid signature

その他/プロジェクト依存関係を付けたiPad用のビルドリンクエラーが出る

先の記事でXcodeでのプロジェクト間の依存関係を設定する方法を紹介しましたが、この方法を使ってライブラリをリンクした際にiPadでプロジェクトをビルドすると、

"___restore_vfp_d8_d15_regs", referenced from: <シンボル名>
"___save_vfp_d8_d15_regs", referenced from: <シンボル名>
collect2: ld returned 1 exit status
ld: symbol(s) not found

というような形でリンクエラーが出ることがあります。

この原因は、ライブラリ側のアーキテクチャがarmv6なのに対して、アプリケーション側のアーキテクチャがarmv7であるためです。

この問題が起きた場合は、以下の様にすることで、問題が解決します。

1. ライブラリ側のxcodeprojを開く
2. アクティブSDKをDevice 3.2に設定
3. ターゲットを選択して右クリックで「情報を見る」
4. アーキテクチャを「Standard(armv6)」から、「Optimized(armv6 armv7)」に変更

これで、元のプロジェクトからクリーンビルドすると、上記のリンクエラーが解決します。

その他/XCodeでプロジェクト間の依存関係を付ける

XCodeのプロジェクトが複数あるとき、特にライブラリプロジェクトなどを作った場合に、ライブラリの利用側のプロジェクトをビルドする際に、ライブラリも一緒にビルドしてしまいたいと思うことがあります。

XCodeはプロジェクト間の依存関係をつけることで、このようなことが可能です。

1. 他のXCodeプロジェクトファイルをプロジェクトに追加する
「グループとファイル」で右クリック、「追加>既存のファイル」で、追加したい他のXCodeプロジェクトファイル(xcodeproj)を選択すると、他のプロジェクトファイルが追加されます。追加されたプロジェクトの下には、プロダクトがリストアップされている筈です。

2.プロジェクトの依存関係を付ける
今度は、ターゲットを右クリックし、「情報を見る」で情報ウインドウを開きます。
「一般」タブのところに、「直接依存関係」というのがあるので、ここの「+」を押すと、先ほど追加したプロジェクトのプロダクトを選択することが出来るはずです。
これを選択、追加すると、このターゲットをビルドした際に、依存関係のプロダクトもビルドされるようになります。

3.ライブラリをリンクする
依存関係をつけたプロダクトがライブラリの場合、大抵はリンクする必要があります。プロダクトをリンクするには、
- ターゲットの「バイナリをライブラリにリンク」のビルドプロセスに1のプロダクト(xcodeproj以下にある方)をD&Dする
もしくは
- 依存のxcodeprojをグループとファイルで選択し、ファイルリストの端っこに出てくるチェックボックスをチェック

という作業を行います。

これでビルドすると、依存関係をつけたプロダクトがビルドされます。

Appleのドキュメントでは、「Xcode Project Management Guide: Referencing Other Projects」で記載されています。