【解決】AndroidでWebアプリ(PWA)をホームに追加してもインストール(WebAPK登録)されずChromeショートカットになる問題と対策
問題
開発したWebアプリ(PWA)を複数のAndroid端末に展開しようとしたところ、特定の端末だけ「アプリ」としてインストールされず、Chromeのショートカットとして追加されてしまう現象が発生した。
正常な端末と問題のある端末を並べると、以下の状況だった。
- 機種:同じ
- Androidバージョン:どちらも15
- ChromeバージョンもPlay開発者サービスもWebViewも最新
- アクセスするURLも同じ(同じQRコードから読み取り)
- 正常端末はGoogleアカウントでログイン済み
- 問題端末はGoogleアカウント未ログイン(新品のまま)
症状
- 「ホーム画面に追加」→「インストール」を押すと、アイコンにChromeマークが付いたショートカットになる。
chrome://webapksを確認すると、正常端末には登録済みのWebAPKが表示されるが、問題端末では空のまま。- ただし、フルスクリーン(standalone)での起動はされる。オフライン動作も正常。Service Workerも動いている。
- 他の有名PWA(Squooshなど)で試しても、同じくショートカットにしかならない。
切り分け
上記の症状3と4がポイントだった。
フルスクリーン起動できているということは、ChromeはPWAとして認識できている。manifest.jsonもService Workerも問題ない。Squooshでも同じ現象ということは、自分のアプリ固有の問題でもない。
つまり、
- PWAとして認識する → できている
- WebAPK(Androidアプリとして登録する)→ できていない
という状態だと判断できた。
残る有意な差分は「Googleアカウントにログインしているかどうか」だけだった。
原因
AndroidにGoogleアカウントが登録されていない状態では、WebAPKが生成されない。(ズコー)
補足すると、AndroidのChromeでPWAをインストールする際、内部では「WebAPK」という仕組みが動いている。ChromeがGoogleのサーバーにmanifest.jsonの情報を送り、一時的なAndroidアプリのパッケージを自動生成してもらう仕組みだ。この工程に、Googleアカウント(≒Google Playのシステム)が関わっている模様。
Googleは公式に「WebAPK生成にはGoogleアカウントが必須」とは案内していないが、少なくとも現在のAndroid 15・最新Chrome環境では、未ログイン状態だとWebAPK生成だけが静かに失敗し、ショートカットにフォールバックする挙動になるようだ。
対策
AndroidにGoogleアカウントを追加してからPWAをインストールすると、WebAPKとして正常に登録された。
さらに追加検証として、WebAPK化が完了した後にGoogleアカウントを端末から削除しても、WebAPKはそのまま残ることも確認できた。
つまり、Googleアカウントなしで運用したい端末でも、以下の手順を踏めばWebAPKとして展開できる。
- AndroidにGoogleアカウントを追加する
- Playストアを起動して数分待つ
- PWAをインストールする(WebAPK化を確認)
- Googleアカウントを端末から削除する
注意点
WebAPKはmanifest.jsonの内容が変更されたとき、Googleのサーバーで再生成が走る。Googleアカウントを削除した状態でこの再生成が走ると、失敗する可能性がある。アプリを大幅に更新してmanifestを変更した際は、同じ手順を再度実施する必要があるかもしれない。
まとめ
「同じ機種・同じAndroid・同じChromeなのになぜPWAにならないのか」と長時間悩んだが、原因はアプリのコードではなくGoogleアカウントの有無だった。
PWA自体は問題なく動いているのに、WebAPK化だけが静かに失敗するという挙動が厄介で、エラーメッセージも何も出ないため原因の特定に時間がかかった。同じ現象で困っている人の参考になれば嬉しい。
ちなみに、Chromeショートカット状態でもフルスクリーン起動・オフライン動作・カメラ利用などは問題なく動く。「アイコンにChromeマークが付く」「設定のアプリ一覧に出てこない」という見た目と管理上の違いはあるが、実用上は大きな支障はない、ということも付け加えておく。
