メインコンテンツへスキップ

Linux、Windows、CI で Android Studio なしに Android Release Build を行う方法

コマンドラインのみを使用して、Capacitor アプリ用の署名済み Android AAB を作成する方法:keytool keystore、ターミナルからの Gradle、Play Console サービスアカウント、そして keystore をローカルに置かずに済む Capgo Build というクラウド代替手段を活用します。

Linux、Windows、CI で Android Studio なしに Android Release Build を行う方法

Android Studio は優れた IDE ですが、ストア公開用の Android ビルドを作成するために必須というわけではありません。生成された android/ Capacitor プロジェクト内のフォルダには、あらゆるターミナルからビルドと署名が可能な Gradle wrapper が含まれています。これは、ディスプレイのない Linux サーバーや、Studio の動作が重い Windows マシン、そして CI において非常に重要です。

このガイドでは、コマンドラインのみを使用して署名済みAABをビルドする方法を解説し、さらに Capgo のビルド ノートPCにキーストアを保存したくないチーム向けのクラウド版についても紹介します。

前提条件

  • JDK 21 (java -version 21と表示されます)。
  • Androidコマンドライン SDK と platform-tools, build-tools および Capacitor バージョンに合わせたプラットフォーム (Capacitor 8 の場合は API 36、Capacitor 7 の場合は API 35) を使用します。 Linuxガイド と Windowsガイド のインストール手順をカバーしています。
  • ANDROID_HOME エクスポート、または android/local.properties と sdk.dir=....
  • Capacitor アプリ(以下) android/ によって生成された bunx cap add android.

1) Signing keystore の作成

keytool すべてのプラットフォームの JDK に含まれています:

keytool -genkeypair -v \
  -keystore release.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias release

プロンプトに従い、ストアパスワードとキーパスワードを設定します。ファイルと両方のパスワードは、すぐにパスワードマネージャーやシークレット管理ツールに保存してください。決して commit しないでください。 release.jks.

Play Console でアプリを作成する際、Play App Signing を有効にします。これにより Google が最終的な署名キーを保持し、あなたの keystore はアップロードキーとなります。アップロードキーは紛失してもリセット可能です。

2) Gradle に署名方法を伝える

機密情報を〜から守る build.gradle. 作成します android/keystore.properties (gitignored):

storeFile=/absolute/path/to/release.jks
storePassword=your-store-password
keyAlias=release
keyPassword=your-key-password

その後、以下で参照します: android/app/build.gradle:

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("keystore.properties")
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
    signingConfigs {
        release {
            if (keystorePropertiesFile.exists()) {
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
            }
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled false
        }
    }
}

追加 android/keystore.properties と *.jks へ .gitignore.

3) バージョンを上げる

Google Playは、以前に versionCode 確認済みのバージョンは拒否されます。次に、 android/app/build.gradle:

defaultConfig {
    versionCode 12
    versionName "1.4.0"
}

通常、チームは versionCode 手動更新を避けるため、CIの実行番号やgitのコミット数から算出します。

4) ターミナルからAABをビルドする

bun run build
bunx cap sync android
cd android
./gradlew bundleRelease

Windowsの場合は、 .\gradlew.bat bundleReleaseを使用してください。署名済みbundleは、以下に書き出されます: android/app/build/outputs/bundle/release/app-release.aab.

adbで直接インストールするためのAPKが必要ですか? ./gradlew assembleRelease を生成します app-release.apk の下に outputs/apk/release/. 次のコマンドでインストールできます: adb install; adbインストールガイド では、例外的なケースについても説明しています。

5) 署名の検証

$ANDROID_HOME/build-tools/36.0.0/apksigner verify --print-certs app/build/outputs/apk/release/app-release.apk

AABの場合、 jarsigner -verify -verbose app-release.aab 署名と証明書のフィンガープリントを確認してください。SHA-256をPlay Consoleの「アプリの整合性」に表示されているものと比較します。

6) コマンドラインからGoogle Playへアップロード

Play Console経由の手動アップロードも可能です。自動化する場合は、Google Cloudでサービスアカウントを作成し、Play Consoleの「ユーザーと権限」でアクセス権を付与して、JSONキーをダウンロードしてください。その後、Google Play Developer API または fastlane supply などのツールを使用してアップロードします。

bundle exec fastlane supply --aab android/app/build/outputs/bundle/release/app-release.aab \
  --track internal --json_key play-service-account.json --package_name com.example.app

新しいアプリの初回アップロードは Play Console で手動で行う必要があります。API は既存のアプリのビルドのみを受け付けるためです。

7) クラウドでの代替案: Capgo Build for Android

上記の方法はすべて可能ですが、ビルドを行うすべてのマシンに keystore が残ってしまいます。Capgo Build は keystore を暗号化された vault 内に保持し、アップロードされた android/ プロジェクトからビルドを行い、AAB を Play のトラックへ直接プッシュできます。

認証情報は一度保存するだけ:

bunx @capgo/cli@latest build credentials save --platform android \
  --keystore ./release.jks \
  --keystore-alias "release" \
  --keystore-key-password "key-password" \
  --keystore-store-password "store-password" \
  --play-config ./play-service-account.json

あるいは、 bunx @capgo/cli@latest build init --platform android にガイドを任せましょう。そうすれば、すべてのリリースは:

bun run build
bunx cap sync android
bunx @capgo/cli@latest build request com.example.app --platform android --build-mode release

ログがターミナルにストリーミングされます。さらに、 --output-upload を追加すると AAB または APK のダウンロードリンクを取得でき、 --ai-analytics を追加するとビルド失敗の理由が自動的に説明されます。同じコマンドが Windows、Linux、macOS、および CI で動作します。GitHub Actions の例は、 Android ビルドガイド.

また、Capgo は準備済みのネイティブプロジェクトのみを受け取るため、プライベートな npm レジストリや Web ビルドの secrets は、お客様の環境内に安全に保持されます。

8) Webの変更による再ビルドを止める

プラグイン、権限、アイコン、Capacitor のアップグレードには、署名済みの Native Build が必要です。それ以外の dist/, Capgo Live Updates については、新しい Web bundle をインストール済みのアプリへ直接プッシュできます:

bunx @capgo/cli@latest bundle upload --channel production

これで、週に何度も Gradle を実行する手間がなくなります。

トラブルシューティング

  • SDK location not found: 設定 ANDROID_HOME または作成 android/local.properties.
  • Keystore was tampered with, or password was incorrect: ストアのパスワードが間違っているか、Git の CRLF 変換によりファイルが破損しています。 *.jks バイナリ形式で .gitattributes バージョン管理が必要な場合(本来は不要ですが)
  • Unsupported class file major version: JDK のバージョンが 21 と一致していません。
  • Play ストアで AAB が拒否される: “signed with a different key”: Play App Signing はアップロードキーを求めています。Play Console に登録済みの keystore を使用するか、アップロードキーのリセットをリクエストしてください。
  • Windows ではビルドが遅い: 除外する ~/.gradle および Defender から SDK を除外し、プロジェクトは短いローカルパスに配置してください。
  • Gradle で Out of memory が発生する: 追加する org.gradle.jvmargs=-Xmx4g へ android/gradle.properties.

概要

Capacitor の Android リリースビルドには、Android Studio ではなく JDK、SDK、および Gradle wrapper が必要です。keystore は次で作成し、 keytool次を使用して署名します keystore.properties次を使用してビルドします bundleRelease, そして Play API でアップロードします。KeystoreをローカルPCから切り離し、どのOSでも同じコマンドを実行したい場合は、Capgo Build が準備されたプロジェクトから署名とアップロードを自動で行います。

Capacitor アプリ向けの Live Update

Webレイヤーのバグが本番に出たときは、アプリストアの審査を何日も待たずに Capgo で修正を配信できます。ネイティブの変更は通常の審査フローに乗せたまま、ユーザーにはバックグラウンドでアップデートが届きます。

最新のブログ記事

Capgo は、本格的なプロフェッショナルモバイルアプリの開発に必要な最高のインサイトを提供します。