xcodebuildコマンドで.ipaファイルをビルドする¶
下記の説明は、xcodebuildコマンドを使用してビルドする際のTipsを紹介しています。
Xcode上でもビルドはできます。
手順¶
xcodebuildコマンドを利用して.ipaファイルを作成するためには以下の手順で実施します。
- xcodebuildに"archive"パラメータを渡して.xcarchiveファイルを生成
- xcodebuildに"-exportArchive"を渡して.ipaファイルをエクスポートする。
.xcarchiveファイル作成時の注意点¶
プロビジョニングプロファイルの指定¶
xcodebuildコマンドでxcarchiveファイルを生成する際に、Xcodeで設定したApp Extensionのプロビジョニングプロファイルが有効にならないケースがあります。
その場合は、XcodeのApp Extensionのプロビジョニングプロファイル設定欄に環境変数を指定しておき、xcodebuildコマンドのパラメータで環境変数に値を指定します。
Xcode設定例¶
Xcode設定例
Notification Service Extensionの「Build Settings」-「Provisioning Profile」にて"$NSE_PROFILE"を設定する
コマンド例¶
コマンド例
xcodebuildコマンドのパラメータでXcodeで設定した環境変数にプロビジョニングプロファイルのUUIDを設定する。
xcodebuild -project RichFlyerApp -sdk "iphoneos15.5" -configuration Release -scheme "RichFlyerApp" -archivePath "RichFlyerApp.xcarchive" clean archive INFOPLIST_PREPROCESS=true CONFIGURATION_BUILD_DIR=${BUILD_DIR} APP_PROFILE=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa NCE_PROFILE=bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb NSE_PROFILE=cccccccc-cccc-cccc-cccc-cccccccccccc
.ipaファイルエクスポート時の注意点¶
プロビジョニングプロファイル情報の記述¶
xcodebuildコマンドで.xcarchiveファイルから.ipaファイルをエクスポートする際に指定する exportPlist.plist にアプリ本体とApp Extensionのプロビジョニングプロファイルの情報を記述します。
注意
App Extensionのプロファイルを記述し忘れると正常に完了しません。
作成例¶
exportPlist.plist作成例
Development用とDistribution用にplistファイルを用意して、それぞれにプロファイル情報を記述します。 プロビジョニングプロファイルを作成した時の名前とApp IDを記述します。
<?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>provisioningProfiles</key>
<dict>
<key>net.richflyer.app</key>
<string>RichFlyer Development Provisioning Profile</string>
<key>net.richflyer.app.NotificationContent</key>
<string>RichFlyer Notification Content Development</string>
<key>net.richflyer.app.NotificationService</key>
<string>RichFlyer Notification Service Development</string>
</dict>
<key>stripSwiftSymbols</key>
<true/>
<key>method</key>
<string>development</string>
<key>uploadBitcode</key>
<false/>
<key>compileBitcode</key>
<false/>
</dict>
</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>provisioningProfiles</key>
<dict>
<key>net.richflyer.app</key>
<string>RichFlyer Distribution Provisioning Profile</string>
<key>net.richflyer.app.NotificationContent</key>
<string>RichFlyer Notification Content Distribution</string>
<key>net.richflyer.app.NotificationService</key>
<string>RichFlyer Notification Service Distribution</string>
</dict>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>XXXXXXX</string>
<key>method</key>
<string>app-store</string>
<key>uploadSymbols</key>
<true/>
<key>uploadBitcode</key>
<false/>
</dict>
</plist>
コマンド例¶
コマンド例
xcodebuildコマンドのパラメータでXcodeで設定した環境変数にプロビジョニングプロファイルのUUIDを設定する。
xcodebuild -exportArchive -exportOptionsPlist "exportPlist.plist" -archivePath "RichFlyerApp.xcarchive" -exportPath "${BUILD_DIR}"