Android应用未安装。已安装具有相同冲突签名的同名现有包

时间:2013-11-13 17:02:12

标签: android android-install-apk

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

Android App Not Install.

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

enter image description here

我还处于升级的测试阶段,因此我下载的文件是以前版本的签名apk,我认为应该没有任何问题。

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

对我缺少什么的想法?

16 个答案:

答案 0 :(得分:192)

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

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

答案 1 :(得分:84)

问题是用于签署APK的密钥,默认情况下,如果您直接从IDE运行并打开仿真器,则安装在仿真器中的APK会使用您的调试密钥签名(通常安装在〜中) /.android/debug.keystore),所以如果之前的APK使用的是与您当前使用的密钥不同的其他密钥签名,您将始终获得签名冲突,以便修复它,确保您使用的是同一个键入两个APK的密钥,即使之前的APK使用另一个SDK的调试密钥签名,密钥肯定会有所不同。

此外,如果你不确切地知道在签署apk之前使用了什么密钥,但是你想要安装新版本的应用程序,你可以卸载以前的应用程序并重新安装新版本。

希望这有助于......

问候!

答案 2 :(得分:7)

 Go to Settings > Apps, find and open the app info. Then, open the overflow menu (3 vertical dots), and choose Uninstall for all users.

enter image description here

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

答案 3 :(得分:5)

签名和未签名的APK文件之间存在差异。很可能你以前没有签名。您只需要在安装签名版本之前删除未签名的。如何实现这一点取决于确切的版本,但一般情况下,在模拟器上进行设置 - >应用程序,长按您的应用程序,然后删除/删除/卸载它。

答案 4 :(得分:5)

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

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

如果使用相同的密钥,安装时不应存在冲突。

答案 5 :(得分:5)

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

将您的设备与Mac / PC连接并运行adb uninstall <package>

为我工作。

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

答案 6 :(得分:2)

如果您在Android上使用多个用户,请验证该应用是否已在任何位置卸载。

答案 7 :(得分:1)

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

看起来Android studio标记了它安装的apk,因此使用软件包管理器的安装会区分安装用于调试的版本和从Google Play或其他外部源下载的版本(这在使用eclipse时从未发生过。)

答案 8 :(得分:0)

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

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

 <DesktopSettings>
    <SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home.html"/>
    <RequestedHeight>250</RequestedHeight>
  </DesktopSettings>
  <TabletSettings>
    <SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home.html" />
    <RequestedHeight>250</RequestedHeight>
  </TabletSettings>
  <PhoneSettings>
    <SourceLocation DefaultValue="~remoteAppUrl/AppRead/Home.html" />
  </PhoneSettings>

答案 9 :(得分:0)

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

“机器人:sharedUserId”

请检查一下。

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

答案 10 :(得分:0)

相同的包裹错误:

  1. 在您的应用中使用其他名称创建一个新的包。
  2. 将旧包中的所有文件复制并粘贴到新包中。
  3. 保存代码。
  4. 删除旧包并清理并重建项目。

答案 11 :(得分:0)

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

答案 12 :(得分:0)

如果上述解决方案对您不起作用,则您可能需要执行以下操作。

1)从Appstore安装应用。
2)用具有相同软件包名称更新版本的sign APK更新它。

因此,APK基本上有两种。

1)您在Play商店上传了原始APK。
2)从称为“派生APK”的playstore下载。

在这种情况下,基本上,您正在下载派生的apk并将其更新为原始APK。

为使其正常工作,请在Google Play商店中以内部测试模式上载新的已签名发布的APK,然后下载派生的APK以检查更新方案。

enter image description here

答案 13 :(得分:0)

我尝试了以上所有方法,但没有效果。

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

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

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

希望这会有所帮助。

答案 14 :(得分:0)

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

enter image description here

答案 15 :(得分:-1)

来自android studio的

转到:

  

Gradle - &gt;安装 - &gt; uninstallAll

这将解决问题。