【问题标题】:Package signatures do not match the previously installed version包签名与之前安装的版本不匹配
【发布时间】:2017-06-02 05:20:28
【问题描述】:

这是我的项目: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,我按照各种方法,都无法解决这个问题。

【问题讨论】:

  • 您的手机上是否已经安装了该应用程序?如果是这样,您将需要卸载它,因为您使用的签名与原始签名不同
  • 我曾经安装在我的手机上,然后我长按卸载它,然后移动到卸载。还是不行。
  • 检查应用是否已为所有用户卸载。转到设置-> 应用程序-> HAgnostic 新闻-> 选项(右上角的三个点)-> 为所有用户卸载
  • 这就是解决方案!

标签: android reactjs react-native


【解决方案1】:

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

【讨论】:

  • 卸载什么也不做。即使在未安装应用程序的设备上也会出现此错误。
  • @maxoimime 将新版本发布到 Play 商店时会发生什么。用户在安装新版本之前是否必须卸载应用程序?或者用户是否能够毫无问题地更新应用程序?
  • @maxoimime 这个答案有效。您可以考虑删除您的评论。这对大多数用户具有误导性
  • 这也是我的问题。原来我的应用程序也安装在三星安全文件夹中。
  • @Roman 你的评论是我的救命稻草。在其他地方卸载它后,我还在安全文件夹中找到了我的应用程序。将其删除即可解决。
【解决方案2】:

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

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

adb uninstall "com.domain.yourapp"

Solution is from here.

【讨论】:

  • 这是正确的答案,因为我已经为所有用户从手机上卸载了该应用程序,但一直收到相同的错误。谢谢
  • Xamarin Forms 用户在这里。这就是我的答案。我已经从手机上卸载了该应用程序,但这还不够。
  • 是的,这也适用于我,它不会显示在应用程序列表中!
  • 您先生是一位绅士和一位学者!我一直被困在这上面!!!离子 4,角度 8
  • 干得漂亮!我有一部 root 手机,我升级了操作系统版本并重新刷新了引导分区以重新启用 root 访问权限,我无法安装我拥有的一些应用程序并运行 adb uninstall 以完美修复那些 APKs
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    如果您安装的应用版本不是使用相同的密钥库/签名证书构建的,它将具有不同的签名。默认情况下,每台构建机器都会有不同的调试证书,除非您根据the google documentation 指定应如何签名,这可用于确保无论您在哪台计算机上构建应用程序,您的应用程序都将使用相同的调试密钥构建开。

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

      • 我面临的问题与问题中提到的相同。您能否让我知道如何使用较早的密钥库/证书构建代码?我的客户向我提供了密钥库文件,但我不知道如何使用客户提供的密钥库文件构建我的 react native android。
      • 已经有一段时间没有做Android了,但是根据这个:developer.android.com/studio/publish/app-signing#sign_release,你应该去Build> Generate Signed Bundle/APK,在'Key store path'字段下,按'选择现有的...'
      【解决方案6】:

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

      【讨论】:

      • 这是我的问题。我将手机连接到计算机进行充电,并尝试在模拟器中运行。
      • 这完全没有必要。您可以在adb 之后简单地添加-d 以在USB 设备上执行操作,或使用其他选项之一(例如-t-e)来选择特定设备
      【解决方案7】:

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

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

      react-native run-android --variant=release
      

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

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

      【讨论】:

        【解决方案8】:

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

          我遇到了同样的错误。我在我的虚拟设备上卸载了该应用程序并重新运行命令:'react-native run-android'。

          【讨论】:

            【解决方案10】:

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

            adb uninstall com.exampleappname

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

            【讨论】:

              【解决方案11】:

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

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

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

                  【讨论】:

                    【解决方案14】:

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

                    我也遇到了这个问题,那就是已经安装了 ionic 应用程序(相同的包名)从我的手机中删除,然后完美运行。

                    【讨论】:

                    • @jirimertin 的答案适用于 ionic 4, angular 8
                    【解决方案15】:

                    我在三星设备上遇到了这个问题,卸载应用程序给出了相同的消息。问题是该应用程序也安装在手机的“安全文件夹”区域中。 值得检查这是否是您的方案。

                    【讨论】:

                      【解决方案16】:

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

                      无需重新安装整个 AVD。

                      【讨论】:

                        【解决方案17】:

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

                        【讨论】:

                        • 他们在 4 年前用你的建议回答了这个问题
                        【解决方案18】:

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

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

                        2. 执行react-native run android

                        【讨论】:

                          【解决方案19】:

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

                          试试这个:

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

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

                          【讨论】:

                            【解决方案20】:

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

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

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

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

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

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

                            【讨论】:

                            • 是的。我正在尝试实现相同但收到错误包 com.my.app 签名与以前安装的版本不匹配;无视!但我的要求是在现有的原生 Android 应用程序上更新 Flutter 应用程序。我使用的是用于为 Native App 创建发布版本的相同证书。
                            【解决方案21】:

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

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

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

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

                            【讨论】:

                            • 第一个命令对我有用,第二个命令失败))
                            • 它是系统签名的应用程序吗?
                            【解决方案22】:

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

                            【讨论】:

                              【解决方案23】:

                              就我而言,卸载已连接设备中已安装的应用程序解决了我的问题

                              【讨论】:

                                【解决方案24】:

                                感谢这里其他人的回答 - 特别是 Qazi Fahim Farhan && Ace。


                                我的解决方案如下:


                                对于那些使用 android 设备的人 - 如果您卸载了以前的版本并且它仍然给您带来错误,那么这对我有用:

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

                                “-d”以您已连接的设备为目标。我遇到了很多问题,甚至无法让事情充分发挥作用。

                                如果有人有与此特定问题无关的其他问题 - 这是我的一般旅程,以防它可以帮助其他人进入这个兔子洞:

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

                                【讨论】:

                                  【解决方案25】:

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

                                  【讨论】:

                                    猜你喜欢
                                    • 2018-08-14
                                    • 2021-01-13
                                    • 2018-09-20
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2018-05-26
                                    • 2022-12-13
                                    • 2015-10-07
                                    • 2021-07-11
                                    相关资源
                                    最近更新 更多