gpt4 book ai didi

android - 无需卸载 [INSTALL_FAILED_UPDATE_INCOMPATIBLE] 即可将 Android Native 应用更新为 Flutter

转载 作者:行者123 更新时间:2023-12-05 00:01:09 24 4
gpt4 key购买 nike

我在 Google Play 商店中有一个应用程序。我在 Flutter 上重写了该应用程序,但尚未发布。我不希望用户在更新时丢失他们的数据。为了解决这个问题,我想编写一个转换系统,但我需要能够在 Flutter 应用程序启动时访问旧数据库。

Android 系统不允许安装两个具有相同包名的不同应用程序。当我尝试在具有 native 应用程序的设备上安装 Flutter 应用程序时,Visual Studio 调试器给出了 [INSTALL_FAILED_UPDATE_INCOMPATIBLE] 错误。它会卸载 Native 应用程序并安装 Flutter 应用程序,因此我将无法访问 Native 应用程序的 sqlite 数据库。

我使用 Google Play 版本的另一个原因是我丢失了旧项目的最新更新文件。没有欺诈不用担心:)

我尝试了什么:

  • 使 Flutter 应用程序的包名与 Native 应用程序的包名相同。
  • 使用 native 应用的 keystore 文件签署调试版本。
  • 为 Flutter 应用提供比 Native 应用更高的版本。

在我执行上述步骤后,首先构建停留在 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 秒内构建,但会使用以下输出卸载 native 应用程序:

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

最佳答案

我意识到除了您的 keystore 签名之外,Google Play 还拥有自己的签名系统。事情可能与我所说的不完全相同,但因此 apks Google Play 和使用您的 keystore 签名的 apks 没有相同的证书。意识到这一点后,我想出了一个解决方案。

  1. 从 Google Play 商店安装应用。
  2. adb adb shell pm path ataberkw.packagename 获取base.apk的路径。
  3. ./adb pull base-apk-path destination-path 获取基础apk
  4. base.apk重命名为base.zip并打开。
  5. 删除base.zip 中的META-INF 文件夹并将其重命名为base.apk。现在你有未签名的 apk。
  6. 我用了这个automatic apk signer但你可以使用 manual ways也是。
  7. 在 Native 应用程序中复制数据,现在您可以安装签名(使用相同的 jks 文件)Flutter 应用程序而无需卸载。

关于android - 无需卸载 [INSTALL_FAILED_UPDATE_INCOMPATIBLE] 即可将 Android Native 应用更新为 Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69262060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com