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

问题描述 投票:0回答:3

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

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

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

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

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

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

android apk updates
3个回答
5
投票

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

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


1
投票

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

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

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

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

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

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

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

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


0
投票

我的手机 t1 701u 无法使用且无法通过 Android 应用程序和游戏 我正在更新我的手机,但无法更新请给我任何解决方案

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.