已安装具有冲突签名的同名现有软件包

Posted

技术标签:

【中文标题】已安装具有冲突签名的同名现有软件包【英文标题】:an existing package by the same name with a confilcting signature is already installed 【发布时间】:2013-09-27 07:41:53 【问题描述】:

您好,我正在开发一个您的私人使用的应用程序,我不想上传到 Google Play。

当应用打开时检查服务器中是否存在新的更新,如果存在则下载apk然后安装

    Intent i = new Intent();
    i.setAction(Intent.ACTION_VIEW);
    i.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/ipacUpdates/ipac.apk")), "application/vnd.android.package-archive" );

    this.ctx.startActivity(i);

安装完成时显示此错误

an existing package by the same name with a confilcting signature is already installed

两个 apk 均使用同一台机器构建并在 avd emulator 上进行测试。

会发生什么?

【问题讨论】:

第一个版本是如何部署的? 【参考方案1】:

可能一个使用默认调试密钥签名,另一个使用您自己的密钥签名。确保两个版本的构建方式相同。无论您是否将其上传到 Play,您都应该拥有自己的密钥库,并使用该密钥库进行签名。更多信息,请查看以下link。

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

如果您拥有要尝试安装的应用程序,则只需在 AndroidManifest.xml 中增加 android:versionCode="??"android:versionName="??" 并再次生成应用程序。

我希望这会有所帮助。

【讨论】:

【参考方案4】:

我遇到了同样的问题,您需要正在运行的应用程序与您要升级到的应用程序具有相同的签名。当您通过模拟器运行应用程序时,它会获得开发签名。

我所做的是运行模拟器,删除程序,然后从 Internet 手动安装我的应用程序,然后通过让我的应用程序自行升级来测试升级。两者都使用生产签名进行签名,因此它能够发生。

更多信息参考:Android App Not Install. An existing package by the same name with a conflicting signature is already installed

【讨论】:

以上是关于已安装具有冲突签名的同名现有软件包的主要内容,如果未能解决你的问题,请参考以下文章

未安装应用程序。具有冲突签名的同名现有包[重复]

该文件包与具有同一名称的现有文件包存在冲突

如何自动更新应用程序;安卓

该文件包与具有统一名称的现有文件包存在冲突

[Android] 该文件包与具有同一名称的现有文件包存在冲突

Flutter 该文件包与具有同一名称的现有文件包存在冲突