我正试图为谷歌市场准备我的应用程序,但这比预期的要具有挑战性得多。我似乎无法掌握签署应用程序的整个概念,但更具体地说,我的问题是,我已经在Eclipse中安装了keytool插件,但当我想创建证书时,它要求我选择密钥库(输入文件名和密钥库密码),我不明白我应该输入什么文件,因为它实际上希望我通过浏览选择文件,而我该如何继续导出文件,可惜谷歌没有提供非常好或清晰的答案。
如果您要创建新的密钥库文件,则需要提供位置和文件名。或者,您可以选择“使用现有的密钥库”,并浏览到现有的密钥库文件位置。
编辑: 我想提供详细的答案。希望这些信息对您有用。
Android使用apk签名机制,这是一个示例数字签名的用法应用于应用程序的字节代码和资源,以确保:
Android使用与标准Java应用程序签名/验证相同的标准JDK工具:
私钥
对数据进行签名,并使用certificate(即绑定到您身份的公钥)验证数据密钥库
中管理私钥和证书。这些密钥是jarsigner
所需的。手动使用jarsigner
签署应用程序或使用您的IDE导出已签名的应用程序后(IDE在幕后使用keytool
和jarsigner
),您可以找到放置在已签名.apk归档的META-INF
目录中的与签名相关的文件:
SHA
散列的文件本文非常好地描述了您需要遵循的步骤。
注意: 请在进行签名之前考虑重要的预发布步骤:日志/关键字符串文字的删除,使用proguard混淆等。
下面我将提供一些该过程的关键点:
keystore
中。keystore
first if you don't have one. When creating keystore
, you need to create a Keystore password
that is used to ensure the integrity of the keystore
data (i.e. you will be warned that your keystore is tampered with after someone - not you - has added a new certificate to it). Practically, this password is not super crucial if you keep your keystore
file safe. You can get away if you forget it someday.private key
, you will also be asked to create a PrivateKey password
that will be used to encrypt your private key inside the keystore. This is the very important password you need to keep as it ensures:
keystore
文件中的private key
来签名应用程序,您的.apk
将更新为上面解释的与签名相关的文件。
Keystore只是一个单一的二进制文件,以特定格式保留您的私钥/证书列表。它可以使用KeyStore.java提供的API进行编程访问。您的密钥库可以包含多个私钥条目,每个私钥条目都由其alias
标识。
在大多数情况下,您的keystore
将具有单个私钥和匹配此私钥的单个自签名证书。
Keystore密码用于完整性检查密钥库内容。
如果您丢失了此密码,但仍然拥有存储在其中的私钥的密码,则可以通过运行以下cmd“克隆”您的密钥库并提供新的密钥库密码:
提供新密码,将旧密钥库密码留空 - 您只会收到警告。然后,您可以使用新密钥库并摆脱旧密钥库。keytool -importkeystore -srckeystore path/to/keystore/with/forgotten/pw -destkeystore path/to/my/new/keystore
密钥库
内部的私钥
。它非常重要,因为它允许您访问私钥,以便签署应用程序的更新等操作。通常很难恢复它。
自签名证书 - 非常简单的证书,将您的身份(名称/组织/电子邮件)与您的公钥绑定。在签名操作期间,此证书将添加到.apk
文件中,并将在用户设备上用于验证.apk
文件,以确保安装安全。