mcpField
D
distributing-tauri-for-ios

distributing-tauri-for-ios

github.com/dchukクラウド・DevOps36146 回インストール40 週間前に更新
リポジトリ

distributing-tauri-for-ios について

distributing-tauri-for-iosは、Tauri v2アプリをApple App Storeで配布するためのガイドスキルです。iOSのビルドや配布を担当する開発者向けに、署名設定、アップロード、TestFlight、審査準備を扱います。

主な機能

  1. 01Bundle IDとバージョンの設定
  2. 02証明書とプロビジョニングプロファイルの準備
  3. 03IPAのビルドとアップロード
  4. 04TestFlightでのテスト設定
  5. 05ストア情報の準備と審査申請

活用シーン

  1. 01Tauri iOSアプリのApp Store署名設定
  2. 02App Store Connectビルドの作成とアップロード
  3. 03TestFlightテストとストア審査の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dchuk/claude-code-tauri-skills --skill distributing-tauri-for-ios

インストール後、Claude Code で/distributing-tauri-for-iosを入力して読み込まれたか確認します。

詳細

iOS 向け Tauri アプリの配布

このスキルでは、Tauri v2 アプリケーションを Apple の iOS App Store に配布する完全な手順を説明します。

前提条件

Tauri iOS アプリを配布する前に、以下を確認してください。

  1. macOS 開発マシン(iOS ビルドに必要)
  2. iOS SDK を含む Xcode がインストールされていること
  3. Apple Developer Program への登録(年間 99 ドル)
  4. Tauri プロジェクトが iOS 向けに初期化されていること(tauri ios init)

Apple Developer Program への登録

developer.apple.com/programs で登録します。

  1. Apple ID でサインインします
  2. Apple Developer Agreement に同意します
  3. 登録を完了します(個人または組織)
  4. 承認を待ちます(通常 24~48 時間)

バンドル ID の設定

バンドル ID は一意で、すべての設定で一致している必要があります。

tauri.conf.json
{
  "identifier": "com.yourcompany.yourapp",
  "version": "1.0.0",
  "bundle": {
    "iOS": {
      "bundleVersion": "1"
    }
  }
}

設定に関する注意事項:

  • identifier:逆ドメイン形式で、App Store Connect と一致している必要があります
  • version:CFBundleShortVersionString(ユーザーに表示されるバージョン)になります
  • bundleVersion:CFBundleVersion(ビルド番号)になります。アップロードごとに増やす必要があります
App Store Connect でバンドル ID を登録する
  1. Certificates, Identifiers & Profiles に移動します
  2. 「+」をクリックして、新しい識別子を登録します
  3. 「App IDs」を選択し、続いて「App」を選択します
  4. 説明を入力し、tauri.conf.json と一致する明示的なバンドル ID を入力します
  5. 必要な機能を選択します
  6. 「Register」をクリックします

コード署名の設定

証明書を作成する

配布証明書(App Store に必要):

  1. macOS でキーチェーンアクセスを開きます
  2. キーチェーンアクセス > 証明書アシスタント > 認証局に証明書を要求 を選択します
  3. メールアドレスを入力し、「ディスクに保存」を選択します
  4. Certificates に移動します
  5. 「+」をクリックし、「Apple Distribution」を選択します
  6. 証明書署名要求をアップロードします
  7. ダウンロードしてダブルクリックし、インストールします
プロビジョニングプロファイルを作成する

App Store 配布プロファイル:

  1. Profiles に移動します
  2. 「+」をクリックして、新しいプロファイルを作成します
  3. 「Distribution」の下にある「App Store Connect」を選択します
  4. App ID を選択します
  5. 配布証明書を選択します
  6. プロファイルに名前を付けて生成します
  7. .mobileprovision ファイルをダウンロードします
プロビジョニングプロファイルをインストールする
# Copy to Xcode provisioning profiles directory
cp ~/Downloads/YourApp_AppStore.mobileprovision \
   ~/Library/MobileDevice/Provisioning\ Profiles/

または、ファイルをダブルクリックすると自動的にインストールされます。

Xcode プロジェクトの設定

Xcode で Tauri iOS プロジェクトを開きます。

tauri ios build --open
Xcode で署名を設定する
  1. ナビゲーターでプロジェクトを選択します
  2. アプリのターゲットを選択します
  3. 「Signing & Capabilities」タブに移動します
  4. 手動で管理する場合は、「Automatically manage signing」のチェックを外します
  5. チームを選択します
  6. App Store のプロビジョニングプロファイルを選択します
必要な機能

アプリの要件に応じて機能を追加します。

機能必要な場合
プッシュ通知APNs を使用する場合
バックグラウンドモードバックグラウンドタスクを実行する場合
App Groups拡張機能間でデータを共有する場合
関連付けられたドメインユニバーサルリンクを使用する場合
Info.plist の設定

src-tauri/gen/apple/[AppName]_iOS/Info.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>CFBundleDisplayName</key>
    <string>Your App Name</string>
    <key>CFBundleName</key>
    <string>YourApp</string>
    <key>CFBundleIdentifier</key>
    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    <key>CFBundleVersion</key>
    <string>$(CURRENT_PROJECT_VERSION)</string>
    <key>CFBundleShortVersionString</key>
    <string>$(MARKETING_VERSION)</string>
    <key>UILaunchStoryboardName</key>
    <string>LaunchScreen</string>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>NSCameraUsageDescription</key>
    <string>This app requires camera access for...</string>
    <key>NSPhotoLibraryUsageDescription</key>
    <string>This app requires photo library access for...</string>
</dict>
</plist>

必要な使用目的の説明(アプリでこれらの機能を使用する場合のみ追加してください):

  • NSCameraUsageDescription:カメラへのアクセス
  • NSPhotoLibraryUsageDescription:フォトライブラリ
  • NSLocationWhenInUseUsageDescription:位置情報サービス
  • NSMicrophoneUsageDescription:マイクへのアクセス

アプリアイコン

ソース画像から iOS アプリアイコンを生成します(1024x1024 を推奨)。

tauri icon /path/to/app-icon.png --ios-color '#ffffff'

これにより、必要なすべてのアイコンサイズが src-tauri/gen/apple/Assets.xcassets/AppIcon.appiconset/ に生成されます。

App Store 向けビルド

コマンドラインでのビルド
# Build IPA for App Store Connect
tauri ios build --export-method app-store-connect

IPA は以下に生成されます。

src-tauri/gen/apple/build/arm64/[AppName].ipa
ビルドオプション
# Build with specific target
tauri ios build --target aarch64-apple-ios --export-method app-store-connect

# Build in release mode (default for export-method)
tauri ios build --release --export-method app-store-connect

# Build and open in Xcode for manual archive
tauri ios build --open
Xcode を使ったアーカイブ(代替方法)
  1. プロジェクトを開きます:tauri ios build --open
  2. 宛先として「Any iOS Device」を選択します
  3. Product > Archive を選択します
  4. Window > Organizer を選択してアーカイブを表示します
  5. 「Distribute App」をクリックします
  6. 「App Store Connect」を選択します
  7. ウィザードの手順に従います

App Store Connect API キーの設定

アップロードを自動化するための API キーを作成します:

  1. App Store Connect > Users and Access に移動します
  2. 「Integrations」タブを選択します
  3. 「App Store Connect API」をクリックしてから「+」をクリックします
  4. キーに名前を付け、「Admin」または「Developer」ロールを選択します
  5. 「Generate」をクリックします
  6. .p8 ファイルをダウンロードします(一度しかダウンロードできません)
  7. Key ID と Issuer ID を控えます
API キーの保存
# Create directory
mkdir -p ~/.appstoreconnect/private_keys

# Move the key file (rename to include Key ID)
mv ~/Downloads/AuthKey_XXXXXXXXXX.p8 ~/.appstoreconnect/private_keys/

# Alternative location
mkdir -p ~/private_keys
mv ~/Downloads/AuthKey_XXXXXXXXXX.p8 ~/private_keys/
環境変数(任意)
export APPLE_API_KEY_ID="XXXXXXXXXX"
export APPLE_API_ISSUER="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

App Store Connect へのアップロード

altool を使う
xcrun altool --upload-app \
  --type ios \
  --file "src-tauri/gen/apple/build/arm64/YourApp.ipa" \
  --apiKey "$APPLE_API_KEY_ID" \
  --apiIssuer "$APPLE_API_ISSUER"
Transporter アプリを使う
  1. Mac App Store から Transporter をダウンロードします
  2. Apple ID でサインインします
  3. IPA ファイルをドラッグ&ドロップします
  4. 「Deliver」をクリックします
Xcode Organizer を使う
  1. Window > Organizer を選択します
  2. アーカイブを選択します
  3. 「Distribute App」をクリックします
  4. 「App Store Connect」を選択します
  5. 「Upload」または「Export」を選択します
  6. 画面の指示に従います

TestFlight によるベータテスト

アップロードの処理後(通常 15~30 分):

内部テスト
  1. App Store Connect > Your App > TestFlight を選択します
  2. 内部テスターを追加します(最大 100 人。App Store Connect ユーザーである必要があります)
  3. テスターに招待メールが届きます
外部テスト
  1. テストグループを作成します
  2. ビルドをグループに追加します
  3. ベータ版 App Review に提出します(外部テスターには必須です)
  4. 外部テスターを追加します(最大 10,000 人)
  5. テスターは TestFlight アプリからインストールします

App Store への提出

App Store Connect でアプリを作成する
  1. App Store Connect に移動します
  2. My Apps > 「+」 > New App を選択します
  3. iOS プラットフォームを選択します
  4. アプリ名、主要言語、バンドル ID、SKU を入力します
  5. 「Create」をクリックします
App Store の掲載情報を準備する

必要なアセット:

アセット仕様
スクリーンショット6.7"(1290x2796)、6.5"(1284x2778)、5.5"(1242x2208)
アプリアイコン1024x1024 PNG(アルファなし)
説明最大 4000 文字
キーワード最大 100 文字
サポート URL必須
プライバシーポリシー URL必須
アプリのプライバシー

アプリのプライバシーに関する質問に回答します:

  1. App Store Connect > Your App > App Privacy を選択します
  2. データ収集に関する質問に回答します
  3. 収集するデータの種類を指定します
  4. データの利用目的を示します
審査に提出する
  1. App Store Connect でビルドを選択します
  2. 必須のメタデータをすべて入力します
  3. 輸出コンプライアンスに関する質問に回答します
  4. 「Submit for Review」をクリックします

審査には通常 24~48 時間かかります。

よくある問題と解決策

コード署名エラー

「No signing certificate found」

# List available certificates
security find-identity -v -p codesigning

# Verify certificate is valid
security find-certificate -c "Apple Distribution" -p

「Provisioning profile doesn't match」

  • すべての場所でバンドル ID が完全に一致していることを確認します
  • 証明書を変更した場合は、プロビジョニングプロファイルを再生成します
ビルドの失敗

「Unsupported architecture」

# Ensure building for correct target
tauri ios build --target aarch64-apple-ios --export-method app-store-connect

「Missing entitlements」

  • Xcode のケイパビリティが App ID のケイパビリティと一致していることを確認します
  • ケイパビリティを変更した後は、プロビジョニングプロファイルを再生成します
アップロードエラー

「Invalid binary」

  • 最小 iOS バージョンが正しく設定されていることを確認します
  • 必須アイコンがすべて揃っていることを確認します
  • Info.plist に必須キーがあることを確認します

「Missing compliance」 暗号化を使用していない場合は、Info.plist に追加します:

<key>ITSAppUsesNonExemptEncryption</key>
<false/>

CI/CD との統合

GitHub Actions の例
name: iOS Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build-ios:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install Rust
        uses: dtolnay/rust-action@stable
        with:
          targets: aarch64-apple-ios

      - name: Install dependencies
        run: npm ci

      - name: Install certificate
        env:
          CERTIFICATE_BASE64: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
          CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
        run: |
          CERTIFICATE_PATH=$RUNNER_TEMP/certificate.p12
          KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db

          echo -n "$CERTIFICATE_BASE64" | base64 --decode > $CERTIFICATE_PATH

          security create-keychain -p "" $KEYCHAIN_PATH
          security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
          security unlock-keychain -p "" $KEYCHAIN_PATH

          security import $CERTIFICATE_PATH -P "$CERTIFICATE_PASSWORD" \
            -A -t cert -f pkcs12 -k $KEYCHAIN_PATH

          security list-keychain -d user -s $KEYCHAIN_PATH

      - name: Install provisioning profile
        env:
          PROVISIONING_PROFILE_BASE64: ${{ secrets.PROVISIONING_PROFILE_BASE64 }}
        run: |
          PP_PATH=$RUNNER_TEMP/profile.mobileprovision
          echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode > $PP_PATH
          mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
          cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles/

      - name: Build iOS
        run: npm run tauri ios build -- --export-method app-store-connect

      - name: Upload to App Store Connect
        env:
          APPLE_API_KEY_ID: ${{ secrets.APPLE_API_KEY_ID }}
          APPLE_API_ISSUER: ${{ secrets.APPLE_API_ISSUER }}
          APPLE_API_KEY: ${{ secrets.APPLE_API_KEY }}
        run: |
          mkdir -p ~/.appstoreconnect/private_keys
          echo "$APPLE_API_KEY" > ~/.appstoreconnect/private_keys/AuthKey_$APPLE_API_KEY_ID.p8

          xcrun altool --upload-app --type ios \
            --file src-tauri/gen/apple/build/arm64/*.ipa \
            --apiKey $APPLE_API_KEY_ID \
            --apiIssuer $APPLE_API_ISSUER

バージョン管理

バージョンの更新

App Store に提出するたびに、適切にバージョンを更新します:

{
  "version": "1.0.0",
  "bundle": {
    "iOS": {
      "bundleVersion": "1"
    }
  }
}
  • version:ユーザーに見える変更に応じて更新します(1.0.0 -> 1.0.1 または 1.1.0)
  • bundleVersion:アップロードのたびに更新する必要があります(1 -> 2 -> 3)
バージョンスクリプトの例
#!/bin/bash
# increment-build.sh
CONFIG="src-tauri/tauri.conf.json"
CURRENT=$(jq -r '.bundle.iOS.bundleVersion' $CONFIG)
NEW=$((CURRENT + 1))
jq ".bundle.iOS.bundleVersion = \"$NEW\"" $CONFIG > tmp.json && mv tmp.json $CONFIG
echo "Bundle version incremented to $NEW"

参考リンク

コメント