ExportOptions.plistの作成方法

## はじめに

`xcodebuild -exportArchive` コマンドで `-exportOptionsPlist` オプションの指定に使う `ExportOptions.plist` を作成する方法を紹介します。

## 環境

- OS：macOS Caralina 10.15.7
- Xcode：12.4 (12D4e)

## ExportOptions.plistの作成

「作成」という言葉を使っていますが、実態は「アーカイブしてエクスポートしたフォルダから引っこ抜く」です。

IPAファイルを生成する手順とまったく同じなので、その手順書としても使えます。

### アーカイブ

1. Xcodeを起動し、画面左上の端末で「Any iOS Device (arm64)」を選択します。  
![スクリーンショット_2021-04-09_15_47_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/0e3b7a33-361c-fa77-bfb9-52afe8229d7b.png)
2. 「Product > Archive」を選択します。  
![スクリーンショット_2021-04-09_15_50_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/8b11b771-6545-1a6f-b387-4903aa1686f2.png)

### エクスポート

1. アーカイブが完了するとOrganizerが自動で開きます。  
「Distribute App」をクリックします。  
![スクリーンショット_2021-04-09_15_56_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/4db31b8e-2568-9877-1b5d-6485ab656897.png)
2. 配布の種類を選択します。  
今回は「App Store Connect」を選択し、「Next」をクリックします。  
![スクリーンショット_2021-04-09_15_56_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/ef421efa-ce97-c6de-66aa-ab7d4f811973.png)
3. アップロードかエクスポートを選択します。  
今回は「Export」を選択し、「Next」をクリックします。  
App Store Connectにアップロードする場合は「Upload」を選択してください。  
![スクリーンショット_2021-04-09_15_56_53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/e9a4c7e7-33ce-7f93-727c-ba1abac4e24f.png)
4. 特に変更せず「Next」をクリックします。  
![スクリーンショット_2021-04-09_15_57_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/c62ff898-c45a-71e7-eb21-0779ab846d7b.png)
5. 署名を自動/手動でするか選択します。  
今回は手動で署名するので「Manually manage signing」を選択し、「Next」をクリックします。  
![スクリーンショット_2021-04-09_15_57_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/d71ad619-c793-289d-bbf8-a83333c1feff.png)
6. 証明書とProvisioning Profileを選択し、「Next」をクリックします。  
![スクリーンショット_2021-04-09_15_58_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/bbecb867-699e-799d-6dd9-1c42ff9dfccd.png)
7. Provisioning Profileが選択肢にない場合、「Import Profile...」を選択してローカルからインポートします。  
![スクリーンショット_2021-04-09_15_58_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/96fd4133-5317-3e99-910f-44587995b549.png)
8. 内容を確認し、「Export」をクリックします。  
![スクリーンショット_2021-04-09_15_58_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/feec73cc-2a51-fce6-005a-2fd51524cd84.png)
9. エクスポート先を選択し、「Export」をクリックします。  
![スクリーンショット_2021-04-09_15_58_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/3b8728b2-1da4-6f47-1b89-da95e93565ed.png)
10. フォルダ内に `ExportOptions.plist` があればOKです！  
IPAファイルも生成されているので、必要に応じて使ってください。  
![スクリーンショット_2021-04-09_16_58_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/138245/33747b3c-e7e7-afa0-c112-388b03229ffd.png)

## ExportOptions.plistの中身

`ExportOptions.plist` の中身を確認します。

```xml:ExportOptions.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>destination</key>
	<string>export</string>
	<key>method</key>
	<string>app-store</string>
	<key>provisioningProfiles</key>
	<dict>
		<key>com.theuhooi.UhooiPicBook</key>
		<string>UhooiPicBook_develop_AppStore</string>
	</dict>
	<key>signingCertificate</key>
	<string>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</string>
	<key>signingStyle</key>
	<string>manual</string>
	<key>stripSwiftSymbols</key>
	<true/>
	<key>teamID</key>
	<string>XXXXXXXXXX</string>
	<key>uploadBitcode</key>
	<true/>
	<key>uploadSymbols</key>
	<true/>
</dict>
</plist>
```

先ほど指定した内容が文字列で反映されており、テキストエディタで開けば読めることがわかります。
慣れれば手動で作成や修正できます。

## おわりに

`ExportOptions.plist` を作成できました！
これでiOSアプリのCD環境を構築できます。