我在谷歌应用商店有一个应用程序。我已经使用Flutter重写了该应用程序,但还没有发布。我不希望用户在更新时丢失他们的数据。为了解决这个问题,我想写一个转换系统,但我需要能够在Flutter应用程序启动时访问旧的数据库。
Android系统不允许安装具有相同包名的两个不同应用程序。当我尝试在已安装原生应用程序的设备上安装Flutter应用程序时,Visual Studio调试器会给出[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
错误消息。它会卸载原生应用程序并安装Flutter应用程序,因此我将无法访问原生应用程序的 SQLite 数据库。
另外,我使用谷歌应用商店版本的应用程序是因为我遗失了旧项目的最新更新文件,这并非欺诈,您可以放心:)
我尝试过的方法:
- 使Flutter应用程序的包名与原生应用程序的名称相同。
- 使用原生应用程序的密钥库文件对调试版本进行签名。
- 将Flutter应用程序的版本设为高于原生应用程序的版本。
在完成以上步骤后,第一次构建进程停滞在Running Gradle task 'assembleDebug'...
,输出保持不变(我等了几次,最长等待了30分钟):
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
如果我清理项目,它会在30秒内构建,但是卸载本机应用程序并输出如下信息:
Running "flutter pub get" in projectname_2...
Launching lib/main.dart on sdk gphone64 arm64 in debug mode...
✓ Built build/app/outputs/flutter-apk/app-debug.apk.
Error: ADB exited with exit code 1
Performing Streamed Install
adb: failed to install /Users/xxxxxx/projectname/build/app/outputs/flutter-apk/app.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package ataberkw.projectname signatures do not match previously installed version; ignoring!]
Uninstalling old version...
W/FlutterActivityAndFragmentDelegate(11073): A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps.
Connecting to VM Service at ws://127.0.0.1:58745/lUE5l2_VlN4=/ws