今まで発生したXcodeでのビルドエラーまとめ

# はじめに

普段からiOSアプリは開発するんですが、コーディングとかはUnityでやってしまうので、Xcodeに触れるのって、ビルドするときだけだったりします。

なので、いまいちXcodeの使い方がよくわからず、ビルドする度にエラーが発生して、慌てたりしています。ビルド時のエラーにも色々な種類があったので、私が遭遇したものをまとめようと思います。

もしかしたら、古い情報も混ざっているかもしれませんが、ご了承ください。



# 本記事のターゲット

Macにまだ慣れてないけど、iOSアプリを開発することになった人を想定しています。

それと、個人開発での実機テスト時のビルドを想定しています。AdHoc等は想定していませんので、ご了承ください。



# エラー紹介

## ケース：codesignにアクセス権がない

<img width="400" alt="codesignのアクセス許可" src="https://qiita-image-store.s3.amazonaws.com/0/221845/3194c741-bd34-2e4b-ae55-00e4c799d386.png">

日本語版エラーダイアログ

```
codesignは、キーチェーンに含まれるキー"access"へアクセスしようとしています。
許可するにはキーチェーン"ログイン"のパスワードを入力してください。
```

英語版エラーダイアログ

```
codesign wants to access key "access" in your keychain.
To allow this, enter the "login" keychain password.
```

とりあえず、ビルドを通したいのであれば、macのログインパスワードを入力して、**許可**を押せばよいです。



### 補足

**キーチェーン（Keychain）**というのは、macOS標準のパスワード管理システムです。Safariで何らかのサイトにログインすると、「このパスワードを保存しますか？」というダイアログ（[こんなの](https://support.apple.com/kb/PH25230?viewlocale=ja_JP&locale=ja_JP)）が出ますが、あれでパスワードを保存すると、キーチェーンに登録されます。

**codesign**はiOSアプリへ署名する仕組みです。codesignはビルドに必要なので、アクセスを許可してあげてください。



## ケース：開発元が信頼されていない

<img width="400" alt="信頼されていない開発元" src="https://qiita-image-store.s3.amazonaws.com/0/221845/5bd730df-ab34-9feb-c128-581ac5e001f2.png">

```
Could not launch "（アプリ名）"
Verify the Developer App certificate for your account is trusted on your device. Open Settings on （iOS端末名） and navigate to General -> Device Management, then select your Developer App certificate to trust it.
```

ビルドはできたのに実機へのインストール時にこんなエラーが出ることがあります。これはXcode側ではなく、iOS端末側の設定変更でインストールができるようになります。

まず、iOS端末を起動し、**設定**→**一般**→**プロファイルとデバイス管理**をクリックします。

（iOSのバージョンによっては、**プロファイルとデバイス管理**ではなく、**プロファイル**とか**デバイス管理**となっているかもしれません。）

**デベロッパAPP**という欄に、Xcodeに登録した開発用のApple IDが表示されているはずなので、それをクリックし、**（アプリ名）を信頼**→**信頼**をクリックします。

これでインストールができるようになります。



### 補足

そもそもなんでこんなエラーが出るのか？ですが、Xcodeで設定したアプリの署名情報が、iOS端末側にとって「信頼されていない開発元」だったからです。「信頼する」設定に変更することによってエラーが出なくなるというお話でした。



## ケース：Teamが設定されていない

<img width="272" alt="スクリーンショット 2018-06-07 12.34.30_1.png" src="https://qiita-image-store.s3.amazonaws.com/0/221845/889ac8b5-a6df-b626-b60b-c81ce3cec729.png">

```
Signing for "Unity-iPhone" requires a development team. Select a development team in the project editor.
Code signing is required for product type 'Application' in SDK 'iOS 11.4'
```

こんなエラーメッセージが表示された場合、XcodeでのTeam設定がうまくできていません。

<img width="418" alt="スクリーンショット 2018-06-07 12.34.30_2.png" src="https://qiita-image-store.s3.amazonaws.com/0/221845/c91e42f8-2a65-7dae-58ed-c779b9a2ba3d.png">

こんな風に**Team**が**None**になっていたら、チームを選択し直してください。Unityから上書きでビルドすると、このようにTeamがNoneになってしまうので注意してください。



### 補足

そもそも選択肢にチームが見当たらない場合、チームの登録が必要です。手順はこちらが詳しかったので紹介させていただきます。

[UnityでiOSビルドするとエラーが出る](http://nn-hokuson.hatenablog.com/entry/2016/12/24/113002)



## ケース：プライバシー情報がロックされてしまった

```
Development cannot be enabled while your device is locked. 
Please unlock your device and reattach.
(0xE80000E2).
```

iOS端末へのインストール時にこんなエラーダイアログが表示された場合、iOS端末のプライバシー情報がロックされてしまった可能性があります。

iOS端末で**設定**→**一般**→**リセット**→**位置情報とプライバシーをリセット**を行うことで、設定をリセットできます。

リセットができたら、iOS端末を再起動をしてください。これでインストールができるようになります。



### 補足

**位置情報とプライバシーをリセット**で何が消されるのか、一応補足します。

iOSアプリは、カメラロールやGPS情報に勝手にアクセスすることはできず、ユーザーに許可をもらう必要があります。**位置情報とプライバシーをリセット**はこの許可情報をすべて消します。位置情報やプライバシー情報そのものを消すわけではないので、リセットしたからといって深刻な事態になることはありません。

許可情報が消えるので、次にアプリを起動したときに、許可しなおす必要はあります。



## ケース：証明書が取り消されている

```
Unable to install "（アプリ名）"
The certificate used to sign "（アプリ名）" has either expired or has been revoked. An updated certificate is required to sign and install the application.
```

こんなエラーダイアログが表示された場合、キーチェーンに証明書の残骸が残っている可能性があります。

**アプリケーション**→**ユーティリティ**→**キーチェーンアクセス**を起動し、左下の**分類**→**証明書**を開いてください。（macのバージョンによっては**証明書**ではなく**自分の証明書**かもしれません。）

証明書のリストが表示されるので、１つずつクリックして、**この証明書は取り消されました**と書いてある証明書があれば削除してください。

これでビルドが通るようになります。



## ケース：Xcodeがデバイスを正しく認識していない

```
（デバイス名） is busy: Preparing debugger support for （デバイス名）
Xcode will continue when （デバイス名） is finished.
```

こんなエラーダイアログが表示された場合、Xcodeがデバイスを正しく認識していない可能性があります。

Xcodeの**Window**→**Devices and Simulators**を開いてください。

左サイドバーの**Connected**の配下に接続中のデバイスのリストが表示されるので、デバイス名を右クリックして、**Unpair Device**をクリックしてください。デバイスのリストから消えます。

iPhoneとMacのケーブル接続も一旦外してください。
ケーブルを繋ぎ直すと、再び、Xocdeがデバイスを正しく認識するようになります。
（ケーブルを外してから繋ぎ直すまで、数分時間を置いた方が良い場合もあるそうです。）


# おわりに

自分の備忘録として、エラーの事例とその対応を載せてみました。随時追加していくつもりです。

それにしても、Xcodeは難しいですね！