当尝试在设备上的另一个安装调试类型.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版本文件。仅在调试版本的情况下才会出现此问题。
您对此有任何想法吗? 预先感谢
答案 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?