【问题标题】:Android application auto update processAndroid应用程序自动更新流程
【发布时间】:2012-10-02 19:08:10
【问题描述】:

我在这里发布了一个 Android 开源应用程序 https://github.com/evilsocket/dsploit ...正如您在下载部分看到的那样,我为我的用户分发预编译的 apk 包。

该应用实现了一个非常简单的自动更新引擎:

  1. 在启动时,它会检查 github 存储库中的文件 VERSION,其中包含可用的最新版本的字符串,并将其与正在运行的版本名称进行比较。
  2. 如果远程版本 > 本地版本,则应用从 repo 下载新​​的 apk。

问题是当安装过程开始时:

Intent intent = new Intent( Intent.ACTION_VIEW );
intent.setDataAndType( Uri.fromFile( file ), "application/vnd.android.package-archive" );
intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );

mContext.startActivity(intent);

用户收到错误消息:

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

要在 Eclipse 中创建 apk,我导出一个签名的 apk 并为每个版本创建一个新的密钥库...我是否必须始终使用相同的密钥库?

谢谢

【问题讨论】:

  • 用于应用签名的密钥应该相同。

标签: android repository apk auto-update


【解决方案1】:

是的!您始终必须使用相同的密钥库。事实上,如果您使用的是 Google Play 商店,如果它使用不同的密钥库签名,它不会让您发布更新。如果您不再拥有用于签署第一个 apk 的密钥库,那么您将需要您的用户卸载该应用程序并安装新版本。从现在开始,如果您使用相同的密钥库,该过程应该会顺利进行。

【讨论】: