【问题标题】:Android App Not Install. An existing package by the same name with a conflicting signature is already installedAndroid 应用程序未安装。已安装具有冲突签名的同名现有软件包
【发布时间】:2013-11-26 09:57:27
【问题描述】:

在我的模拟器中,当我尝试以编程方式升级我的 apk 时。我明白了:

Android App Not Install.

An existing package by the same name with a conflicting signature is already installed

我仍处于此升级的测试阶段,所以我下载的文件是以前版本的签名 apk,我认为它应该可以正常工作。

根据an existing package by the same name with a confilcting signature is already installed 中的建议,我尝试在调试模式和正常模式下都运行模拟器......都没有成功。

对我缺少什么有什么想法吗?

【问题讨论】:

  • 安装前使用相同的签名对apk进行签名
  • 由于签名或密钥库文件不匹配而产生此问题找到解决方案的链接:readyandroid.wordpress.com/…

标签: android android-install-apk


【解决方案1】:

我有同样的错误信息,但这些答案没有帮助。在 4.3 nexus 7 上,我使用的用户不是所有者。我已经卸载了旧版本,但仍然收到相同的消息。

解决方案:我必须以所有者身份登录并转到设置 -> 应用程序,然后滑动到全部选项卡。向下滚动到列表的最末端,其中列出了旧版本并带有“未安装”标记。选择它并按右上角的“设置”按钮,最后“为所有用户卸载”

【讨论】:

  • 我必须从“已下载”列表滑到“全部”列表才能在应用列表中找到它。
  • 正如您所提到的,请确保您一直向下滚动到底部 - “未安装”的应用程序按字母顺序列出。
  • 谢谢!!!将我的测试 Nexus 7 借给朋友后,这也是我的问题。以为我的密钥已损坏...我删除了该用户只是为了减少将来的混乱。
  • 节省了我的时间。荣誉。
  • 谢谢。我必须登录所有用户并逐个卸载。
【解决方案2】:

问题是用于签署 APK 的密钥,默认情况下,如果您直接从 IDE 运行并打开模拟器,则安装在模拟器中的 APK 会使用您的调试密钥(通常安装在 ~ /.android/debug.keystore),因此如果之前的 APK 使用与您当前使用的密钥不同的密钥进行签名,您将始终遇到签名冲突,为了修复它,请确保您使用的是相同的签名两个 APK 的密钥,即使之前的 APK 是使用另一个 SDK 的调试密钥签名的,密钥肯定会不同。

另外,如果您不知道之前使用什么密钥对 apk 进行签名,但又想安装新版本的应用程序,您可以卸载之前的应用程序并重新安装新的应用程序。

希望对您有所帮助...

问候!

【讨论】:

  • 我将对 apk 进行非开发人员签名,并在模拟器中进行手动下载/安装。然后模拟器应该下载另一个非开发者签名的 apk 并尝试进行升级。如果这可行,我会接受你的回答。谢谢
  • @MartinCazares 是否有获取 apk 密钥的方法?这样我就不会丢失我的应用数据?
  • 好吧,如果你安装了应用程序,你应该有密钥,否则你将如何签署 apk?如果之前的 apk 不是您创建的,那么您需要向该 apk 的开发人员询问密钥,除此之外没有办法获得用于签署 apk 的密钥...
  • 非常感谢!你拯救了我的一天和我的团队!哈哈
  • 我在 Playstore 的 LIVE 中有一个应用程序,现在我一直在测试设备中安装该应用程序,现在为了更新较新版本的应用程序,我正在更新应用程序 build.gradle 中的“versionno”和“versionname”文件。现在我已经使用签名密钥制作了一个发布版本,现在当我尝试通过错误::: 安装该版本时,已经安装了一个具有冲突签名的同名包。而且也没有安装。请帮忙。
【解决方案3】:
 Go to Settings > Apps, find and open the app info. Then, open the overflow menu (3 vertical dots), and choose Uninstall for all users.

前往“设置”>“应用”,找到并打开应用信息。然后,打开溢出菜单(3 个垂直点),并为所有用户选择卸载。

【讨论】:

  • 这对我有帮助 - 谢谢。出于某种原因,即使在通过我的主屏幕卸载它后,我的应用程序的两个版本也会出现在那里。
  • 感谢 Joro Tenev 投票给我
【解决方案4】:

如果您使用的是调试 apk,用于签名的密钥在

C:\Users\<user>\.android\debug.keystore

如果您使用相同的密钥,安装时应该不会发生冲突。

【讨论】:

  • 非常感谢圣地亚哥,昨天我将我的机器硬盘驱动器从机械驱动器更改为固态驱动器,因此我需要升级我的 Windows,我遇到了同样的问题,然后我复制了 debug.keystore 文件从以前的 windows 文件夹到新的 windows 文件夹问题得到解决:)
  • 感谢您的回答,因为它实际上解决了我的问题,我正在和朋友一起编程,我们经常遇到这个问题,现在我们共享调试密钥,一切都很好。
【解决方案5】:

如果您不想打扰密钥库文件,那么只需为所有用户完全删除该软件包即可。

将您的设备与 Mac/PC 连接并运行adb uninstall &lt;package&gt;

为我工作。

参考:https://android.stackexchange.com/questions/92025/how-to-completely-uninstall-an-app-on-android-lollipop

【讨论】:

    【解决方案6】:

    签名和未签名的 APK 文件是有区别的。很可能你以前在那里有一个未签名的。您只需要在安装签名版本之前删除未签名的。具体实现方式因版本而异,但一般情况下,在模拟器上进入设置-> 应用程序,长按您的应用程序,然后删除/删除/卸载它。

    【讨论】:

    • 我将制作一个未签名的 apk 并下载未签名的 apk 并查看是否可以解决,如果可以,我可以使用硬件测试已签名的 apk。如果是这种情况,我会接受答案。
    • 我正在尝试从我的程序中进行升级,因此手动卸载/安装将不起作用。
    • 当我安装未签名的应用程序时,我只收到了app not installed。我检查了模拟器设置并检查了Allow installation of apps from unknown sources。所以这似乎不是解决方案。
    • 对您的建议投赞成票。我认为它帮助我们找到了最终的解决方案。谢谢!
    【解决方案7】:

    如果上述解决方案不适合您,那么您可能需要执行以下操作..

    1) 从 Appstore 安装应用程序。
    2) 使用具有相同包名更新版本的签名 APK 对其进行更新。

    所以基本上有两种if APK。

    1) 您在被称为原始 APK 的 Playstore 上上传。
    2) 从称为派生 APK 的 playstore 下载。

    在这种情况下,您基本上是在下载派生的 apk 并使用原始 APK 进行更新。

    为了让它正常工作,在 Google Play 商店以内部测试模式上传新的签名发布的 APK 并下载派生的 APK 以检查更新场景。

    【讨论】:

      【解决方案8】:

      如果您在 android 上使用多个用户,请验证该应用是否已在各处卸载。

      【讨论】:

      【解决方案9】:

      我遇到了一个问题,即调试和发布版本都无法安装在我用于调试的设备上。尝试安装新版本时会出现相同的消息。唯一的解决方法是卸载当前版本并安装新版本。

      看起来 Android Studio 标记了它安装的 apk,以便使用包管理器进行安装可以区分为调试而安装的版本和从 Google play 或其他外部来源下载的版本(我在使用 eclipse 时从未发生过这种情况)。

      【讨论】:

        【解决方案10】:

        可能是应用程序没有卸载成功。如果你的设备是这种情况,你可以试试这个方法。

        首先获取应用程序的包名,例如'com.xxx.app',你可以使用Root Explorer从Manifest文件中找到它(RE可以解码文件)。那么你可以使用这个脚本来卸载它:

        adb shell pm uninstall com.xxx.app // replace to package name that you want to remove
        

        【讨论】:

          【解决方案11】:

          当您在 AndroidManifiest 中更改/添加/删除 shareId 时,您的应用程序不会更新可能还有其他原因。

          “android:sharedUserId”

          请也检查一下。

          为了防止建议在您的应用程序中使用 sharedUserId,尽管您当前需要或现在需要。

          【讨论】:

            【解决方案12】:

            同样的包错误:

            1. 在您的应用中创建一个具有不同名称的新包。
            2. 将旧包中的所有文件复制并粘贴到新包中。
            3. 保存代码。
            4. 删除旧的 Package And Clean 并重建项目。

            【讨论】:

            • 1.非常 2. 短 3. 可以 4. 使用 5. 解释。
            【解决方案13】:

            我必须以所有者身份登录并转到设置 -> 应用程序,然后滑动到全部选项卡。向下滚动到列表的最末端,其中列出了旧版本并带有“未安装”标记。选择它并按右上角的“设置”按钮,最后“为所有用户卸载”

            【讨论】:

            • 这对我有用,但是......现在从我的网站下载时,应用程序不会下载(至少下载文件夹)。没有报告错误。只是不会发生。当我将手机插入计算机时,我可以将 APK 复制到手机并安装,不会报告任何错误。
            【解决方案14】:

            以上方法我都试过了,还是不行。

            我发现尽管卸载了该应用程序的新版本仍然会出现同样的错误。

            这就是解决它的方法: 转到设置->常规->应用程序管理器->选择您的应用程序->单击顶部的三个点->为所有用户卸载

            执行此操作后,它实际上已被卸载,现在将允许安装您的新版本。

            希望这会有所帮助。

            【讨论】:

              【解决方案15】:

              我只是在 Gradle Bar 中选择了 uninstallAll。它对我有用。

              【讨论】:

                猜你喜欢
                • 2018-06-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-07-04
                相关资源
                最近更新 更多