【问题标题】:Update android app with apk package from external source使用来自外部源的 apk 包更新 android 应用程序
【发布时间】:2016-07-07 15:03:25
【问题描述】:

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

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

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

因此,安装识别出这是一个更新,并且在附加权限方面发生了变化。

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

我必须做什么/更改才能升级现有应用程序?

【问题讨论】:

  • 您是否为更新的 apk 创建了新的密钥库?
  • 确保在创建 apk 时使用相同的生产密钥库。这可能是由于您正在尝试执行的门户。在 Playstore 中它不会发生,期望密钥库是相同的。

标签: android apk updates


【解决方案1】:

所有 android apk 都使用密钥签名。甚至调试构建。对于调试版本,您的 IDE 将自动为您生成密钥。您不能将使用一个密钥签名的包更新为由另一个密钥签名的包。他们必须使用相同的密钥。如果您分发的调试版本不是在同一台机器上制作的,则可能使用了两个密钥。

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

【讨论】:

    【解决方案2】:

    旧应用程序有一个签名签名 A,但新应用程序有一个签名签名 B。

    通常,您可能会使用调试密钥库来创建应用程序。如果是这样,那可不是什么好事。但由于它是“未知来源”,所以不是很重要。

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

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

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

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

    请注意,特定的调试密钥库只能使用 365 天,从创建密钥库时开始。

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

    【讨论】:

      猜你喜欢
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多