迁移Android应用程序版本的密钥库(通过签名两次?)



如果我可以访问用于签署Android APK的原始密钥库好像第二个密钥库一直使用?

从我能够找到的东西来看,看来我们应该能够使用Jarsigner用两个不同的密钥店两次签名到APK文件的第一个更新。然后,将来可以用任何一个键完成任何更新,让客户端完全接管应用程序维护。

Version         Keystore
1.0             A
2.0             A & B
3.0                 B
4.0                 B
...              ...

我希望客户端能够使用ADT导出与Keystore B签名的2.0 APK文件。到钥匙店A。

当我尝试此操作时,我仍然会收到错误:

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

我注意到,当APK导出时,它在其Meta-Inf目录中包含CERT.SF。当我第二次使用Jarsigner签署时...

jarsigner -keystore /path/to/keystore_b -storepass STOREPASS -keypass KEYPASS ./AndroidApp.apk ALIAS

...元I-Inf现在还包含alias.sf。

此Android升级是由于.SF文件而抱怨的吗?尽管Alias.sf确实包含了它要寻找的钥匙,但CERT.SF也被映射到两个不同的键。

(学习的课程:尽早为客户创建新的密钥库)

如果我可以访问用于签署Android APK的原始密钥库用过?

a,不。它需要修改以支持这一点。去年,我对这个问题进行了一些戳戳,结合了一位有关该论文的研究人员。

从我能够找到的东西来看,似乎我们应该能够使用Jarsigner使用两个不同的密钥店签名到APK文件的第一个更新

是的,但是所有签名都需要匹配。

将来可以使用任何一个键进行任何更新,让客户端完全接管应用程序维护。

否,因为所有签名都需要匹配。这是Android中需要的更改。在您的示例中,版本2.0将失败,因为原始应用程序未使用B签名,即使它使用A。

签名

学习的课程:尽早为客户创建新的钥匙店

顾问,或其他任何为他人创建应用程序的人,可能应该考虑按下每个钥匙店的应用方法,或者至少是按下键店的方法。

最新更新