コンテンツへスキップ

Androidビルド

Capgoの安全なクラウドインフラストラクチャを使用して、AndroidアプリをビルドしてGoogle Play Storeに送信します。

⚠️ 最初にAndroid認証情報を設定してください

必須: リリースアプリをビルドする前に、Android認証情報を保存する必要があります。

Android認証情報を設定 →

Androidビルドは、安全なCloudflareサンドボックスで実行されます:

  • インフラストラクチャ: コンテナ化されたAndroid SDKを搭載したCloudflare Workers
  • ビルドツール: Android build toolsを搭載したGradle
  • 実行: ビルドごとに分離されたサンドボックス環境
  • クリーンアップ: ビルド完了後に即座に削除
  • セキュリティ: 永続的なストレージなし、ビルド間の完全な分離

Androidでビルドする前に、以下が必要です:

1. 開発環境(ローカルテスト用)

Section titled “1. 開発環境(ローカルテスト用)”
  • Android Studioがローカルにインストールされている(初期キーストア設定用)
  • npx cap open androidでアプリが正常にビルドされる
  • Java JDK 17以上

リリースビルドには、署名用キーストアが必要です:

ビルドタイプキーストア必須目的
Debugいいえテスト専用、自動生成
ReleaseはいPlay Store送信用

まだキーストアをお持ちでない場合は、作成してください:

Terminal window
keytool -genkey -v \
-keystore my-release-key.keystore \
-alias my-key-alias \
-keyalg RSA \
-keysize 2048 \
-validity 10000

プロンプトに答えてください:

  • パスワード: 強力なパスワードを選択してください(安全に保存してください!)
  • 名前: あなたの名前または会社名
  • 組織: あなたの会社名
  • 場所: あなたの都市、州、国

キーストアコンポーネントの理解

Section titled “キーストアコンポーネントの理解”

キーストアを作成する際、以下を覚えておく必要があります:

  1. キーストアパスワード (KEYSTORE_STORE_PASSWORD): キーストアファイル自体のパスワード
  2. キーエイリアス (KEYSTORE_KEY_ALIAS): キーストア内の署名キーの名前/識別子
  3. キーパスワード (KEYSTORE_KEY_PASSWORD): 特定のキーのパスワード(ストアパスワードと同じでも可)

ワークフローの例:

Terminal window
# キーストアのエイリアスをリストして確認
keytool -list -keystore my-release-key.keystore
# キーに関する詳細情報を表示
keytool -list -v -keystore my-release-key.keystore -alias my-key-alias

リリースビルドの場合、以下の認証情報を設定してください:

Terminal window
# Android署名(リリース用に必須)
ANDROID_KEYSTORE_FILE="<base64-encoded-keystore>"
KEYSTORE_KEY_ALIAS="my-key-alias"
KEYSTORE_KEY_PASSWORD="<key-password>"
KEYSTORE_STORE_PASSWORD="<store-password>"
# Play Store公開(オプション、自動送信用)
PLAY_CONFIG_JSON="<base64-encoded-service-account-json>"

キーストアファイル:

Terminal window
base64 -i my-release-key.keystore | pbcopy

Play Storeサービスアカウント JSON:

Terminal window
base64 -i play-store-service-account.json | pbcopy

Base64文字列がクリップボードにコピーされました。

Play Storeサービスアカウントの設定

Section titled “Play Storeサービスアカウントの設定”

Play Storeへの自動アップロードを有効にするには、適切な権限を持つGoogle Cloudサービスアカウントを作成する必要があります。

  1. Google Cloudでサービスアカウントを作成

    • Google Play Console → 設定 → APIアクセスに移動
    • 「新しいサービスアカウントを作成」をクリック
    • Google Cloud Consoleへのリンクをたどる
    • 「サービスアカウントを作成」をクリック
    • 名前を入力(例: “Capgo CI/CD”)
    • 「サービスアカウントユーザー」ロールを付与
    • 「完了」をクリック
  2. JSONキーを作成

    • Google Cloud Consoleで、サービスアカウントを見つける
    • サービスアカウントのメールをクリック
    • 「キー」タブに移動
    • 「キーを追加」→「新しいキーを作成」をクリック
    • 「JSON」形式を選択
    • JSONファイルをダウンロード(安全に保管してください!)
  3. Play Consoleで権限を付与

    • Google Play Console → 設定 → APIアクセスに戻る
    • リストからサービスアカウントを見つける
    • 「アクセスを付与」をクリック
    • 「アプリの権限」で、アプリを選択
    • 「アカウントの権限」で、以下を付与:
      • リリース: 「アプリ情報の表示とバルクレポートのダウンロード(読み取り専用)」
      • リリース: 「ドラフトリリースの作成、編集、削除」
      • リリース: 「本番環境へのリリース、デバイスの除外、Play App Signingの使用」
    • 「ユーザーを招待」をクリック
  4. 招待を受け入れる

    • サービスアカウントが招待メールを受信します
    • 招待を受け入れて権限を有効化

署名なしでテスト用に最適:

Terminal window
npx @capgo/cli@latest build com.example.app \
--platform android \
--build-mode debug

これにより、任意のデバイスにインストールしてテストできるデバッグAPKが作成されます。

Play Store送信用:

Terminal window
npx @capgo/cli@latest build com.example.app \
--platform android \
--build-mode release

署名認証情報が環境変数として設定されている必要があります。

name: Build Android App
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
- name: Install dependencies
run: npm ci
- name: Build web assets
run: npm run build
- name: Sync Capacitor
run: npx cap sync android
- name: Build Android app
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
ANDROID_KEYSTORE_FILE: ${{ secrets.ANDROID_KEYSTORE }}
KEYSTORE_KEY_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
KEYSTORE_KEY_PASSWORD: ${{ secrets.KEYSTORE_KEY_PASSWORD }}
KEYSTORE_STORE_PASSWORD: ${{ secrets.KEYSTORE_STORE_PASSWORD }}
PLAY_CONFIG_JSON: ${{ secrets.PLAY_STORE_CONFIG }}
run: |
npx @capgo/cli@latest build ${{ secrets.APP_ID }} \
--platform android \
--build-mode release
  1. サンドボックスの初期化 (~5秒)

    • 安全なコンテナが起動
    • Android SDKとGradleがロード
    • 分離されたファイルシステムが作成
  2. プロジェクトのセットアップ (~20秒)

    • R2からプロジェクトzipをダウンロード
    • ビルドディレクトリに展開
    • 署名認証情報を注入
  3. Gradleビルド (2-4分)

    • 依存関係のダウンロード
    • APK/AABのコンパイル
    • ProGuard/R8最適化(リリースモード)
    • コード署名の適用
  4. Play Storeアップロード (30秒、設定されている場合)

    • AABをPlay Consoleにアップロード
    • リリーストラックを設定
    • 送信を開始
  5. クリーンアップ (即座)

    • すべてのファイルを削除
    • コンテナを破棄
    • アーティファクトを保持しない

Androidビルド環境には以下が含まれます:

  • Java: OpenJDK 17
  • Android SDK: 最新の安定版
  • Gradle: 8.x
  • Build Tools: 34.x
  • Node.js: 18.x (LTS)
  • NPM: 最新の安定版
  • APK (Android Package): 直接インストール用のインストール可能ファイル
  • AAB (Android App Bundle): Google Playが推奨する形式(ユーザーにとってダウンロードサイズが小さい)

デフォルトでは、Capgoビルドは以下を作成します:

  • デバッグモード: APK
  • リリースモード: AAB(Play Store用に最適化)

一般的なAndroidビルド時間:

ビルドタイプ平均時間
デバッグ2-3分
リリース(ProGuardなし)3-4分
リリース(ProGuardあり)4-6分

アプリにカスタムビルドバリアント(例: stagingproduction)がある場合は、build-configを使用してください:

Terminal window
npx @capgo/cli@latest build com.example.app \
--platform android \
--build-mode release \
--build-config '{"variant":"staging"}'

これにより、stagingReleaseバリアントがビルドされます。

フレーバーディメンションを持つアプリの場合:

Terminal window
--build-config '{"flavor":"premium","variant":"production"}'

これにより、premiumProductionReleaseバリアントがビルドされます。

「Keystore password incorrect」

  • KEYSTORE_STORE_PASSWORDがキーストアと一致することを確認
  • KEYSTORE_KEY_PASSWORDがキーエイリアスパスワードと一致することを確認
  • 余分なスペースや特殊文字がないか確認

「Key alias not found」

  • KEYSTORE_KEY_ALIASが正確に一致することを確認(大文字小文字を区別)
  • エイリアスをリスト: keytool -list -keystore my-release-key.keystore

「Gradle build failed」

  • ビルドログで特定のエラーを確認
  • アプリが./gradlew assembleReleaseでローカルでビルドされることを確認
  • すべてのネイティブ依存関係がbuild.gradleにあることを確認

「Play Store upload failed」

  • サービスアカウントJSONが有効であることを確認
  • サービスアカウントがPlay Consoleで正しい権限を持っていることを確認
  • アプリがPlay Consoleで適切に設定されていることを確認

「Build timeout」

  • 大きなアプリは最適化が必要な場合があります
  • 不要な依存関係を削除できるか確認
  • ビルドが一貫してタイムアウトする場合はサポートに連絡

ビルドログでこれらの主要なフェーズを確認してください:

→ Downloading dependencies...
→ Running Gradle assembleRelease...
→ Signing APK/AAB...
→ Uploading to Play Store...
✔ Build succeeded

ビルドが失敗した場合、特定のGradleエラーがログに表示されます。

常にAndroidビルドがローカルで機能することを確認してください:

Terminal window
cd android
./gradlew assembleRelease
# または
./gradlew bundleRelease
  • キーストアをバージョン管理にコミットしない
  • 安全なシークレット管理に保存(1Password、AWS Secrets Managerなど)
  • 複数の安全な場所にバックアップコピーを保管
  • パスワードを安全なパスワードマネージャーに記録

Capgoはcapacitor.config.jsonからバージョンを読み取ります:

{
"appId": "com.example.app",
"appName": "My App",
"version": "1.0.0",
"build": "1"
}

各リリースごとにbuild番号を増やしてください。

リリースビルドの場合、ProGuardルールが適切に設定されていることを確認してください:

android/app/proguard-rules.pro
-keep class com.getcapacitor.** { *; }
-keep @com.getcapacitor.annotation.CapacitorPlugin public class * {
@com.getcapacitor.annotation.PluginMethod public <methods>;
}

APK/AABサイズを監視して最適化されていることを確認してください:

CLIは最終サイズを表示します:
→ APK size: 12.4 MB

アプリが大きい場合(>50 MB)、以下を検討してください:

  • ProGuard/R8の有効化
  • AAB形式の使用(動的配信)
  • 画像とアセットの最適化

PLAY_CONFIG_JSONが設定されている場合、ビルドは自動的にPlay Consoleの内部テストトラックにアップロードされます。

手動送信を希望する場合:

  1. PLAY_CONFIG_JSONなしでビルドを実行
  2. ビルドアーティファクトからAABをダウンロード(設定されている場合)
  3. Play Consoleに手動でアップロード