アプリのアップデートでエラー
Flutterで作成し、既にPlayStoreで公開済みのAndroidアプリを更新する際のテストで、
アプリの更新ができなかった事象について、備忘録として記載します。
前提条件
・バージョン1.0.0を新規アプリとしてPlayStore公開済み
・上記公開時はapkファイルではなく、aabファイルで申請を行った
・バージョン1.1.0をapkファイルとして作成
・アプリはFlutterで作成
更新できなかった事象
PlayStoreより、既に公開されている1.0.0をダウンロードし、そのあとローカルで作成した1.1.0の新バージョンapkファイルを
ファイルシステムより、インストールしようとしたところ、8割ほどインストールが進んだのちに、「アプリはインストールされていません。」と表示され、正常にインストールができなかった。
試してみたこと
1.0.0アプリがインストールされた状態で、1.1.0バージョンの実行をflutter run --release コマンドで行った。
すると、署名が異なるのでエラーする旨のメッセージが表示された。
Flutter signatures do not match previously installed version
実際に署名が異なるのか、1.0.0バージョンのapkファイルを取っておいたので、1.0.0と1.1.0のapkファイル、aabファイルそれぞれの署名を確認してみた。
キーストアファイルのフィンガープリントを出力する
keytool -v -list -keystore myKeystore.keystore
APKの署名のフィンガープリントを出力する
keytool -printcert -jarfile myApp.apk
署名に用いるキーストアファイル、apk、aabのフィンガープリントについて、全て同一であったため、署名に差異が無いように思われた。
内部テストを利用して解決
Google play consoleでは、内部テストとよばれるioSのTestFlightのようなシステムがある。
それを用いると、実際にPlayStoreからダウンロードすることができる。
aabファイルをアップロードし、内部テストを行うと、正常にアップデートができた。
どうやら、aabファイルからapkに変換する際に、Google側で何かしらの情報が付与されており、
同じ署名を付与したapkファイルでも、異なると判断されてしまうようだった。