AAB をオンラインで APK に変換: このツールが実際に行うこと
Android アプリ バンドル (.aab) は、Google Play が開発者にアップロードを求める形式ですが、携帯電話にインストールできるものではありません。ビルド サーバー、CI パイプライン、または同僚からの .aab ファイルがある場合は、まずそれをインストール可能な .apk に変換する必要があります。このページでは、そのジョブに対して 2 つの機能が提供されます。1 つはオペレーティング システム用の正確なバンドルツール コマンドを記述するインタラクティブな AAB から APK へのコマンド ビルダー、もう 1 つはブラウザーでバンドルを開いて変換する前に中身を確認できる AAB ファイルエクスプローラー です。
変換自体は、Java プログラムである Google の公式 bundletool を通じて実行されます。 Bundletool には Java ランタイムとキーストアへのアクセスが必要なため、実際のビルド ステップはサーバーではなくユーザー自身のマシンで行われます。 .aab ファイルがどこにもアップロードされることはありません。ビルダーは推測を排除するだけなので、フラグ名を記憶する代わりに、すぐに実行できる正しいコマンドをコピーできます。
AAB と APK: ファイルの名前を変更するだけではいけない理由
多くの人が拡張機能の名前を変更して AAB を APK に変更する方法を検索していますが、それは決して機能しません。 .apk は、Android が直接インストールできる単一の自己完結型パッケージです。 .aab は公開コンテナです。コンパイルされたコードとリソースがモジュールに分割されて保持され、Google Play または Bundletool がそこから最終的なデバイスに最適化された APK を生成することを期待します。ファイルの名前を変更しても、それらのモジュールは解凍されず、何も署名されないため、Android はそのインストールを拒否します。 Android アプリバンドルから APK へ を変換する唯一の信頼できる方法は、bundletool に APK セットを構築させることです。
Windows、Mac、Linux で AAB を APK に変換する方法
この手順はどのプラットフォームでも同じで、ファイル パスのスタイルのみが変わります。そのため、上記のコマンド ビルダーには Windows、macOS、および Linux のスイッチが用意されています。最初から最後までの完全な流れは次のとおりです。
- Java JDK 8 以降をインストールします。 ターミナルで java -version を実行して、Java が PATH 上にあることを確認します。
- バンドルツールをダウンロードします。 Google の公式 GitHub リリース ページから最新の bundletool-all.jar を入手してください。
- APK セットを構築します。 バンドルにbundletoolを指定し、.apksアーカイブを生成させます: java -jar bundletool-all.jar build-apks --bundle=app.aab --output=app.apks --mode=universal
- .apks アーカイブを開きます。 ただのZIPファイルなので解凍すると中にuniversal.apkがあります。
- デバイスにインストールします。 APK を携帯電話にコピーしてサイドロードするか、USB 経由で接続されたデバイスで bundletool install-apks を使用します。
ユニバーサル APK と分割 APK: どちらを構築する必要がありますか?
1 つのファイルを任意の電話機にインストールしたい場合は、--mode=universal を使用します。これにより、すべての CPU アーキテクチャ、画面密度、言語を 1 つのパッケージにバンドルした単一の AAB からのユニバーサル APK が構築されます。サイズは大きくなりますが、Play ストア外でビルドをテスト、アーカイブ、共有するための最も簡単なオプションです。このモードをオフのままにすると、bundletool は代わりに、特定の 1 つのデバイス用にトリミングされた分割 APK を生成するため、ダウンロードされるサイズは小さくなりますが、一致するセットを一緒にインストールする必要があります。簡単にインストールするために .aab を変換する必要があるほとんどの人にとって、ユニバーサル APK は正しい選択です。
AAB から取得した APK に署名する
Android は、署名されていない限り APK をインストールしません。テストの場合、bundletool はデバッグ キーを使用して自動的に署名できます。これは、ビルダーの [デバッグ キーストアを使用する] オプションが行うこととまったく同じです。たとえば、独自の Web サイトで配布するためにリリース ビルドを準備している場合は、キーストア パス、キーストア パスワード、キー エイリアス、およびキー パスワードのフィールドに入力して、独自のキーストアで署名します。次に、ビルダーは --ks、--ks-pass、--ks-key-alias、および --key-pass フラグを追加して、取得した APK に使い捨てのデバッグ署名ではなく実際の運用署名が含まれるようにします。
一般的なバンドルツールエラーとその修正方法
2 つの問題が繰り返し発生します。 「bundletool: command not found」というメッセージは、bundletool を組み込みコマンドであるかのように実行しようとしたことを意味します。これは JAR ファイルであるため、常に java -jar bundletool-all.jar を使用して呼び出します。 「キー/証明書がありません」エラーは、署名の詳細が欠落していることを意味します。未署名のテスト ビルドに --mode=universal を追加するか、上記のようにキーストア フラグを指定します。ページの上部にある [トラブルシューティング] タブでは、これらの詳細をカバーしており、AAB エクスプローラーを使用すると、コマンドのデバッグに時間を費やす前に、バンドルに期待するモジュールが実際に含まれていることを確認できます。
実際に AAB を変換する必要があるのはどのような場合ですか?
一般的な理由としては、公開前に実際のデバイスでリリース ビルドをテストすること、Google Play を使用しないテスターにビルドを渡すこと、記録用に自分のアプリのインストール可能なコピーを保存すること、Play ストアの内部テストが及ばないハードウェアで QA を実行することが挙げられます。理由が何であれ、独自のビルドや作業許可を明確に持っているバンドルなど、使用する権利があるアプリ バンドルのみを変換してください。