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

时间:2017-01-17 23:50:32

标签: 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!

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

22 个答案:

答案 0 :(得分:60)

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

答案 1 :(得分:9)

如果您安装的应用程序版本未使用相同的密钥库/签名证书构建,则它将具有不同的签名。默认情况下,除非您根据the google documentation指定应如何签名,否申请书。

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

答案 2 :(得分:9)

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

这对我有所帮助,因此满怀希望地会帮助其他人:

adb uninstall "com.domain.yourapp"

Solution is from here.

答案 3 :(得分:5)

这种情况主要发生在手机安装了Google Play商店的应用版本时。您可以使用与生产版本相同的密钥库/证书构建代码,也可以从手机中卸载代码并使用调试密钥库/证书构建

答案 4 :(得分:4)

  

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

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

一旦我退出模拟器,就成功运行了此命令。

答案 5 :(得分:4)

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

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

答案 6 :(得分:2)

我遇到了同样的错误。我在虚拟设备上卸载了该应用,然后重新运行命令:“ react-native run-android”。

答案 7 :(得分:2)

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

答案 8 :(得分:2)

今天,我在三星设备上遇到了同样的问题。在我的特定情况下,该应用程序未在手机上显示,但已被已安装,因此我无法卸载/删除。因此,我不得不使用终端卸载应用程序: $ 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

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

答案 9 :(得分:1)

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

答案 10 :(得分:0)

为了避免按照上一个答案中的建议卸载物理设备中的应用程序,请在 /android 文件夹下的 build.gradle 文件中增加“versionCode”;)

答案 11 :(得分:0)

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

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

在android > app > build.gradle中,你必须像这样指定signingConfigs:

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

您可以自定义用于调试、发布...的签名配置

它适用于原生开发的应用程序,然后更新到 Flutter

答案 12 :(得分:0)

在我的情况下,问题是我在设备上使用android studio安装了包名称为com.example.package的应用。我用相同的软件包名称创建了另一个应用程序,并试图将其安装在我的设备上。这就是导致问题的原因。因此,只需在您的设备上检查是否已经存在另一个具有相同程序包名称的应用程序即可。

答案 13 :(得分:0)

之所以发生此问题,是因为该应用程序的先前版本可用,该版本未安装在设备上,但其数据存在于设备内存中。因此无法升级设备上已卸载的应用程序数据

尝试一下:

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

每次发生此错误都对我有用

答案 14 :(得分:0)

这是我在重命名应用程序的包ID时在React Native项目中发生的,它与我以前已经使用的另一个包ID冲突。我通过重新安装来修复它:

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

  2. 执行react-native run android

答案 15 :(得分:0)

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

答案 16 :(得分:0)

转到android studio-> AVD管理器->选择您的AVD并擦除用户数据

无需重新安装整个AVD。

答案 17 :(得分:0)

对于我来说,在连接的设备上卸载已安装的应用程序可以解决我的问题

答案 18 :(得分:0)

我在三星设备上遇到了此问题,卸载该应用程序会显示相同的消息。问题在于该应用程序也已安装在手机的“安全文件夹”区域中。 值得检查这是否是您的情况。

答案 19 :(得分:0)

当我使用不同的凭据上传模拟器/手机上的先前版本时,发生了此错误。我要做的是运行:

adb uninstall com.exampleappname

一旦这样做,我便可以重新运行构建并生成APK。

答案 20 :(得分:0)

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

我也遇到了这个问题,那就是在已经正常安装的情况下,已经安装了离子应用程序(相同的软件包名称)从手机中删除了。

答案 21 :(得分:-2)

我打开了两个模拟器。当时只有1个仿真器或设备打开