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

ken*_*ter 55 android reactjs react-native

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

Git clone 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!
Run Code Online (Sandbox Code Playgroud)

相关问题:https://github.com/grigio/HAgnostic-News/issues/1,我遵循各种方式,但无法解决此问题.

max*_*ime 88

您需要卸载它,因为您使用的签名与原始签名不同.如果它不起作用,可能是因为它仍然为设备上的其他用户安装.要完全卸载,请转到设置 - >应用程序 - >诊断新闻 - >选项(右上角的三个点) - >为所有用户卸载

  • 卸载没有任何作用。即使在未安装该应用程序的设备上也会发生此错误。 (7认同)
  • 运行 `adb uninstall [PACKAGE_NAME,例如 com.xxx.xxx]` (4认同)
  • @maxoimime当您将新版本发布到Play商店时会发生什么。用户在安装新版本之前是否必须卸载应用程序?还是用户可以毫无问题地更新应用程序? (3认同)
  • 这也是我的问题。原来我的应用程序也安装在三星安全文件夹中。 (3认同)

小智 32

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

这帮助了我,所以希望能帮助别人:

adb uninstall "com.domain.yourapp"
Run Code Online (Sandbox Code Playgroud)

解决方案就在这里.

  • 是的,这也适用于我,它没有显示在应用程序列表中! (5认同)
  • 这是正确的答案,因为我已经为所有用户从手机上卸载了该应用程序,但仍然收到相同的错误。谢谢 (3认同)
  • Xamarin Forms 用户位于此处。这就是我的答案。我已经从手机上卸载了该应用程序,但这还不够。 (2认同)
  • 干得漂亮!我有一部已root的手机,我升级了操作系统版本并重新刷新了启动分区以重新启用root访问,我无法安装我拥有的一些应用程序并为那些完美修复的APK运行“adb uninstall” (2认同)

Jak*_*ke_ 10

如果您安装的应用程序版本未使用相同的密钥库/签名证书构建,则它将具有不同的签名.默认情况下,每个构建计算机将具有不同的调试证书,除非您根据google文档指定应如何签名,这可用于确保您的应用程序将使用相同的调试密钥构建,无论您构建应用程序的计算机是什么上.

要继续安装,您必须卸载现有版本,然后重试.


All*_*uce 8

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

% adb uninstall com.domain.systemapp
Failure [DELETE_FAILED_INTERNAL_ERROR]
Run Code Online (Sandbox Code Playgroud)

这个命令完成了这项工作:

% adb uninstall --user 0 com.domain.systemapp
Success
Run Code Online (Sandbox Code Playgroud)


A-S*_*A-S 7

大多数情况是在手机安装了Google Play商店中应用程序的版本时发生的。您可以使用与生产版本相同的密钥库/证书来构建代码,也可以仅从电话中将其卸载并使用调试密钥库/证书来构建代码。


Flo*_*n K 7

如果您想更新应用程序并保留数据(共享首选项、手机上的 SQL),您可能会收到此错误,并且不想卸载它。

确保拥有与之前的应用程序项目匹配的密钥库。

在 android > app > build.gradle 中,您必须像这样指定签名配置:

android {
 signingConfigs {
  release { 
    storeFile file("../path/file.keystore")
    storePassword "password"
    keyAlias "keyAlias"
    keyPassword "keyPassword"
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

您可以自定义签名配置以进行调试、发布...

它可以与原生开发的应用程序一起使用,然后更新到 Flutter

  • 这是第一个真正的正确答案!除非您从未计划发布您的应用程序或升级它,否则“卸载旧应用程序”只是一种临时解决方法。谢谢你@弗洛里安 (3认同)

Qaz*_*han 6

今天,我在三星设备上遇到了同样的问题。在我的具体情况,该应用程序是不是显示在手机上,但它是INSTALLED,所以我不能卸载/删除它。因此我不得不使用终端卸载应用程序: $ adb uninstall "com.domain.yourapp" 我的项目树看起来像这样(部分视图):

??? com
    ??? gluonapplication
        ??? DrawerManager.java
        ??? StartApplication.java
        ??? views
            ??? PrimaryPresenter.java
            ??? PrimaryView.java
            ??? SecondaryPresenter.java
            ??? SecondaryView.java
Run Code Online (Sandbox Code Playgroud)

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

??? com
    ??? gluonapplication
        ??? DrawerManager.java
        ??? StartApplication.java
        ??? views
            ??? PrimaryPresenter.java
            ??? PrimaryView.java
            ??? SecondaryPresenter.java
            ??? SecondaryView.java
Run Code Online (Sandbox Code Playgroud)

这对我有用。我希望这个答案有帮助。


Bea*_*ith 5

com.android.builder.testing.api.DeviceException:com.android.ddmlib.InstallException:无法完成会话:INSTALL_FAILED_UPDATE_INCOMPATIBLE:程序包[MY REACT NATIVE APP NAME HERE]签名与先前安装的版本不匹配;无视!

尝试使用以下命令在连接的设备上安装我的React Native Android应用程序时出现此错误:

react-native run-android --variant=release
Run Code Online (Sandbox Code Playgroud)

我的计算机上还运行了一个模拟器。

有一次,我退出模拟器,运行此命令成功。


Muh*_*faq 5

当您在手机/仿真器手机上安装了不同版本的应用程序时,就会发生这种情况。

只需卸载现有应用程序即可解决问题


wal*_*rjs 5

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