使用来自外部源的apk包更新android应用程序

时间:2016-07-07 06:56:24

标签: android apk updates

我们正在开发Android应用程序,我通过网站为我们的试用用户提供了一个apk。用户已启用“从未知来源安装”设置。该应用程序已安装并正常运行。

现在我上传了该应用的较新版本。我们更改了apk包的版本号,新版本需要手机的更多权限,例如当第一个版本只需要完全网络访问时,防止手机休眠。

当我下载并打开新版本时,它会显示“您是否要安装此现有应用程序的更新...然后更新的应用程序将获得访问权限:”然后在“新建”选项卡和所有权限下列出添加的权限在所有。

因此,安装会确定这是一个更新,以及在附加权限方面发生了哪些变化。

当我继续进行安装时,安装将停止,并显示消息“已安装具有相同冲突签名的现有包”。

我需要做什么/更改才能升级现有的应用程序?

2 个答案:

答案 0 :(得分:2)

所有的android apks都是用密钥签名的。甚至调试构建。调试构建IDE将自动为您生成密钥。您无法使用其他密钥签名的程序包更新使用一个密钥签名的程序包。他们必须使用相同的密钥。如果您分发的调试版本不是在同一台机器上进行的,那么可能会使用两个密钥。

现在解决此问题的唯一方法是让他们卸载并重新安装。然后制定一些关于使用什么密钥的内部策略。为了防止在我的工作中我们都使用相同的调试密钥(我们有一个单独的发布密钥,所以我们不会意外地上传调试版本。)

答案 1 :(得分:1)

旧应用程序具有签名签名A,但新应用程序获得了签名签名B.

通常,您可能使用调试密钥库创建应用程序。如果是这样的话,这不是一件好事。但由于它是一个未知的来源",它并不是非常重要。

其次,您可能在另一台计算机上创建新版本而不是旧版本,这意味着使用了不同的调试密钥库。

密钥库用于检查生产者是否在应用程序的两次更新之间没有更改。这是一种安全保护。

在您的具体情况下,我建议您获取用于旧版本的调试密钥库,并在编译新版本时使用相同的密钥库。

调试密钥库位于计算机用户目录中的.android目录中(可能是隐藏文件夹)。

请注意,特定的调试密钥库仅在365天内可用,从创建密钥库开始。

如果您想避免此问题,请使用发布签名密钥。 https://developer.android.com/studio/publish/app-signing.html