无法在设备上更新调试APK

时间:2020-03-31 08:53:42

标签: android installation apk keystore signature

当尝试在设备上的另一个安装调试类型.apk文件时遇到问题。我有一个已安装versionCode=n的应用程序。当我尝试使用versionCode=n+1安装相同的应用程序时,出现错误。

这是我调用命令adb install xxx.apk

后的消息

无法安装xxx.apk:失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE:软件包xxx签名不 匹配先前安装的版本;忽略!]

我所有的.apk文件都使用Android调试密钥库签名。已通过命令jarsigner -verify -verbose -certs xxx.apk确认,该消息给了我下一条消息:

  • 由“ C = US,O = Android,CN = Android Debug”签名 摘要算法:SHA-256 签名算法:SHA256withRSA,2048位密钥

jar已验证。

这些.apk文件是通过仅调用assembleDebug命令的TeamCity CI构建的。

这很奇怪,因为我可以轻松更新由CI构建的APK版本文件。仅在调试版本的情况下才会出现此问题。

您对此有任何想法吗? 预先感谢

1 个答案:

答案 0 :(得分:1)

您的android应用程序的每个调试版本都将使用调试密钥库进行签名。

这是一个问题,因为在连续集成环境(例如travis-ci或docker)中,每次创建环境时都会重新生成调试密钥库。

这意味着如果某人具有您的应用程序的调试版本,则他们将无法升级到更新版本,因为密钥库将有所不同。

信用至:https://newfivefour.com/android-debug-build-constant-signed-keystore.html

还要比较两个APK是否使用相同的密钥签名: 检查:How do I find out which keystore was used to sign an app?