コンテンツにスキップ

xcodebuildコマンドで.ipaファイルをビルドする

下記の説明は、xcodebuildコマンドを使用してビルドする際のTipsを紹介しています。
Xcode上でもビルドはできます。

手順

xcodebuildコマンドを利用して.ipaファイルを作成するためには以下の手順で実施します。

  1. xcodebuildに"archive"パラメータを渡して.xcarchiveファイルを生成
  2. 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}"