包签名与以前安装的版本不匹配

这是我的项目: https://github.com/kenpeter/my_hak_news,它是 https://github.com/grigio/HAgnostic-News的直接拷贝。

Git 克隆 https://github.com/kenpeter/my_hak_news,然后运行 react-native run-android

得到这个错误:

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Failed to finalize session : INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.hagnosticnews signatures do not match the previously installed version; ignoring!

相关问题: https://github.com/grigio/HAgnostic-News/issues/1,我按照各种方法,但是不能解决这个问题。

197099 次浏览

如果您安装的应用程序版本没有使用相同的密钥存储库/签名证书构建,那么它将具有不同的签名。默认情况下,每台构建机器都有一个不同的调试证书,除非你指定它应该如何根据 谷歌文档签名,这可以用来确保你的应用程序将使用相同的调试密钥构建,而不管你在哪台计算机上构建应用程序。

为了继续安装,您必须卸载现有版本,然后再试一次。

您需要卸载它,因为您使用的签名与原始签名不同。如果它不工作,可能是因为它仍然是为设备上的另一个用户安装的。要完全卸载,请点击“设置”-> “应用程序”-> “不可知新闻”-> “选项”(右上方的三个点)-> “为所有用户卸载”

这种情况通常发生在手机安装了 Google Play Store 的应用程序版本之后。您可以使用生产版本中使用的密钥库/证书构建代码,也可以直接从电话中卸载代码,然后使用调试密钥库/证书构建代码

一次只能打开一个模拟器或设备。请确保您没有运行多个模拟器。

我有同样的问题,它在 AVD 运行良好,但在我的手机是不好的。我卸载了我手机上的应用程序,然后它的工作正常。

Com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: 未能完成会话: INSTALL _ FAILED _ UPDATE _ INCOMPATIBLE: Package [ MY REACT NATIVE APP NAME HERE ]签名与先前安装的版本不匹配; 忽略!

当我试图使用以下命令在一个连接的设备上安装我的反应本机 Android 应用程序时,我得到了这个错误:

react-native run-android --variant=release

我还在电脑上运行了一个模拟器。

一旦我的 退出模拟器,运行这个命令成功。

我在我的项目中也遇到了这个问题。

这对我很有帮助,所以希望能帮到其他人:

adb uninstall "com.domain.yourapp"

解决办法就在这里。

我得到了同样的错误。我卸载了我的虚拟设备上的应用程序,并重新运行命令:’反应-本机运行-android’。

当你在你的移动/模拟手机上安装了不同版本的应用程序时,就会出现这种情况。

简单的 卸载现有应用程序就可以解决这个问题

如果您试图将其安装在模拟器中,但是有另一部电话通过 USB 连接到计算机,请分离 USB 电缆或在物理设备中禁用 USB 调试。(我自己浪费了30分钟)

您需要卸载它,因为您使用的签名与原始签名不同。如果它不工作,可能是因为它仍然是为设备上的另一个用户安装的。要完全卸载,请转到设置-> 应用程序-> (特定的应用程序)-> 选项(右上方的三个点)-> 所有用户的卸载。

我也得到了这个问题,时间已经安装离子应用程序(相同的软件包名称)从我的手机删除后,工作完美。

这个错误发生在我之前在模拟器/手机上构建的版本使用不同的凭据上传时。我要做的就是逃跑:

adb uninstall com.exampleappname

一旦我这样做了,我就能够重新运行构建并生成一个 APK。

我有一个问题,在三星设备上,卸载应用程序给出了相同的信息。问题是这个应用程序也安装在手机的“安全文件夹”区域。 值得一试,如果这是你的情况。

在我的例子中,卸载连接设备中的已安装应用程序解决了我的问题

进入 android 工作室-> AVD Manager-> 选择您的 AVD 并清除用户数据

不需要重新安装整个 AVD。

您需要使用 cmd adb 卸载 packageName 完全卸载 LG 设备

今天,我在我的三星手机上遇到了同样的问题。在我的特殊情况下,应用程序是 没有显示在手机上,但它是 安装完毕,所以我不能 卸载/删除它。因此,我不得不使用 晚期卸载应用程序: $ adb uninstall "com.domain.yourapp" 我的项目树如下所示(部分视图) :

└── com
└── gluonapplication
├── DrawerManager.java
├── StartApplication.java
└── views
├── PrimaryPresenter.java
├── PrimaryView.java
├── SecondaryPresenter.java
└── SecondaryView.java

所以对我来说,命令是: $ adb uninstall com.gluonapplication 完成后,我通过终端安装了这个应用程序:

$ cd /path/to/apk/
$ adb install -t myAwesomeApp.apk  # -t means test install

这对我来说很有用,我希望这个答案能有所帮助。

这种情况发生在我在 React National 项目中,当我重命名一个应用程序的捆绑包 ID 时,它与我之前已经使用过的另一个捆绑包 ID 发生冲突。我通过重新安装修复了它:

  1. 在模拟器的主屏幕上找到应用程序,然后长按应用程序图标,按 App info,然后选择“ UNINSTALL”。

  2. 执行 react-native run android

这是由于应用程序的以前版本的可用性造成的,该版本没有安装在设备上,但其数据存在于设备内存中。因此,它无法升级设备上已卸载的应用程序数据

试试这个:

转到设备 设定 = = > 应用程序(所有应用程序) = = > 搜索 应用程序或搜索“ 客户”= = > 在 应用程序信息屏幕中,按右上角的 三个点选项 = = > 选择“ 为所有用户卸载”= = > 出现提示选择“ 好的

每次出现这种错误时,它都对我有效

在我的例子中,问题是我在我的设备上使用 android Studio 安装了一个包名为 com.example.package 的应用程序。我创建了另一个具有相同软件包名称的应用程序,并试图将其安装到我的设备上。这就是问题的根源。所以只要检查你的设备是否已经存在另一个具有相同软件包名称的应用程序。

如果你想更新应用程序并保留数据(共享的首选项,手机上的 SQL) ,你可以得到这个错误,你不想卸载它。

一定要有与以前的应用程序项目相匹配的密钥库。

在 android > app > build.gradle 中,您必须像下面这样指定 signingConfig:

android {
signingConfigs {
release {
storeFile file("../path/file.keystore")
storePassword "password"
keyAlias "keyAlias"
keyPassword "keyPassword"
}
}
}

您可以为调试、发布自定义 signingConfig..。

它可以使用本地开发的应用程序,然后更新为 Flutter

为了避免在物理设备中卸载应用程序,如前面的答案所示,在/android 文件夹下递增 build.gradle 文件中的“ versionCode”;)

感谢其他人在这里的答案组合-特别是卡齐法希姆法尔汉 & & 埃斯。


我的解决方案如下:


对于那些使用 android 设备的用户来说——如果你卸载了之前的版本,它仍然给你带来 bug,那么这个方法对我很有效:

  • Adb-d 卸载“ com.your.applicationName”

“-d”指向您已连接的设备。为了让事情顺利进行,我遇到了很多问题。

如果有人有其他与这个具体问题无关的问题,这是我下面的旅程,总的来说,如果它可以帮助其他人进入这个兔子洞:

  1. 将我的机器人 USB 选项设置为 PTP而不是 MTP
  2. Windows 上的 java 版本/系统路径被搞乱了
  3. 设置 grandle.properties org.gradle.java.home=C:\\Program Files\\Java\\YOUR-JDK-FOLDER-NAME-mine 为 jdk-11.0.5
  4. 清洗渐变缓存 gradlew clean
  5. 清除反应本机缓存 npx react-native start --reset-cache
  6. 然后最终删除旧的应用程序,并使用 adb -d uninstall "com.your.applicationName"从您的设备中删除证书。
  7. AVG 安全软件抱怨一个文件-批准该文件。

我在尝试安装系统应用程序时遇到了这个错误,然后在尝试卸载时得到了 这个错误:

% adb uninstall com.domain.systemapp
Failure [DELETE_FAILED_INTERNAL_ERROR]

这个命令完成了任务:

% adb uninstall --user 0 com.domain.systemapp
Success

如果应用程序已经安装在模拟器/设备中,那么删除它,然后重新构建。 希望你不会遇到这个问题。

直接从设备卸载应用程序似乎仍然保留一些缓存。我发现使用 adb uninstall将彻底清洁应用程序。

  1. 从错误消息中获取 Package 名称: [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.xxx.xxx signatures do not match previously
  2. 运行 adb uninstall [PACKAGE_NAME such as com.xxx.xxx]

在我的情况下,应用程序甚至没有安装在手机,并给出了错误。 所以我按照下面的步骤 1: 安装之前版本的 App 2: 现在卸载它 3: 安装应用程序的新版本