開発環境
- OS:Windows11 Home
- フレームワーク:React Native(Expo)
- 実行環境:Node.js
- 開発エディタ:VSCode
- リリース元:Google Play(Androidスマホアプリ)
状況
アプリ内課金にしているオプション機能の確認のため、Android Studioで立ち上げた仮想デバイスにGoogle Play Consoleのクローズドテストのテスターとしてアプリをインストールしようとしたらできなかった。
プロジェクト側の設定で仮想デバイス対応をきちんとしていないのが原因らしいが、設定等を変えるのが面倒なため、ユニバーサルAPKというものをビルドして仮想デバイスに直接インストールすることで対応できた。
ユニバーサルAPKとは?
署名済みのユニバーサル APK は、Play アプリ署名で使用するアプリ署名鍵と同じ鍵で署名された、インストール可能な単一の APK です。この APK は他のアプリストアや配信チャネル(ウェブサイトなど)で配信できるため、アプリを配信するたびに同じ鍵で署名されます。
私もよくわかってませんが、要するにGoogle Play Consoleに登録したファイル(AABファイル)と中身は同じだけどGoogle Playからじゃなくて直接インストールできるファイルとしてAPKファイルというのが作れるということですかね?
ChatGPTに聞いたら、そのユニバーサルAPKファイルをビルドして仮想デバイスにインストールすれば課金アイテムのテストができるということだったのでやってみました。
ユニバーサルAPKのEASビルド
eas.jsonの修正
まずはユニバーサルAPKをビルドするための設定をeas.jsonに追加します。
{
"build": {
"preview": {
"distribution": "internal",
"android": { //←この部分を追加
"buildType": "apk" //←この部分を追加
} //←この部分を追加
}
}
Android Studioからアプリをインストールする仮想デバイスを起動しておきます。
VSCodeのプロジェクトフォルダ直下で eas build -p android --profile preview
EASビルドが成功すると、自動的に仮想デバイスへのダウンロードとインストールを促すメッセージが表示されるので、Yesを選択するだけでインストールが完了します。
仮想デバイスでの課金テスト
インストールしたアプリでGoogle Play Consoleで設定した課金アイテムを実行するとPlayでの課金が成立します。
テストの場合はConsoleのすべてのアプリ>設定>ライセンステストでテストするPlayアカウントをメーリングリストに入れておきます。課金時にテストアカウントという表示が出て無料でテストができます。