今既存のアプリをリニューアルする対応をしているのですが、
既存のアプリをインストールした状態でFlutterで作ったリニューアル版をインストールしようとすると
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
と表示され、元のアプリのデータが引き継げませんでした。
iOSの方は問題なく上書き、データの引継ぎはできているのに・・・。
元々の入ってるバージョンよりも低いバージョンになるよ!と言うエラーであることもわかっているのですが、
pubspec.yamlのバージョン指定も
version: 5.0.0+1
となっていて、問題なさそう。
build.gradleの指定も、
android {
(省略)
defaultConfig {
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
}
}
となっているし、バージョンを直接指定しても同じエラーが発生する。
コマンドで直接アプリをインストールしても変化なし。
※余談 コマンドの指定は
adb install -r <アプリのパス.apk>
ダウングレードを許容する場合には
adb install -r -d <アプリのパス.apk>
で行けます。
ダウングレードとエラーが出ている状態でも、
既存のアプリをアンインストールしてインストールすれば、
また上記コマンドを使用すれば、インストールできますが、
それだと、既存アプリのデータは引き継げず、全て消去されてしまいます。
万策尽きて、積んだ・・・!と思っておりましたが、
調べまくってとうとう鶴の一声を見つけて・・・!
INSTALL_FAILED_VERSION_DOWNGRADE
これは、エミュレータに既にインストールされているアプリと同じpackageNameのアプリをインストールしようとしているが、インストールしようとしているアプリのversionCodeが低い(バージョン番号の整数値)ことを意味します。
versionCodeだと・・・!?
既存アプリのversionCodeを確認すると、34・・・orz
こっちかーーーーーーーーーーーーーーい!
思わず叫びそうになりました。
pubspec.yamlのバージョン指定を
version: 5.0.0+35
にすることで、無事にINSTALL_FAILED_VERSION_DOWNGRADEのエラーはなくなり、無事に上書きインストール、データの引継ぎはできました^^