0
Help us understand the problem. What are the problem?

posted at

Flutter 公開済みAndroidアプリの更新時テストで、署名が異なるエラーが出たとき

アプリのアップデートでエラー

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ファイルでも、異なると判断されてしまうようだった。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?