我正在尝试为谷歌市场准备我的应用程序,但它证明比预期更具挑战性。我似乎无法掌握签署应用程序的整个概念,但更具体地说,我的问题是我已经为eclipse安装了keytool插件,但是当我想创建一个证书时,它要求我选择一个密钥库(输入文件名和密钥库密码),我不明白我应该输入什么文件,因为它实际上要我通过浏览选择文件,如何继续导出文件,谷歌已经遗憾的是没有得到非常好或明确的答案
答案 0 :(得分:23)
您需要为新密钥库文件提供位置和文件名,以备您创建新密钥库文件时使用。或者,您可以选择“使用现有密钥库”并浏览到现有密钥库文件位置。
编辑:我想我会提供详尽的答案。希望这些信息有用。
android使用的apk签名机制是应用于应用程序的字节码和资源的示例usage of digital signature,以确保:
为了更好地了解digital signature,我建议您浏览public-key cryptography。
Android使用与标准Java应用程序签名/验证相同的标准JDK工具:
private key
对数据进行签名,并使用certificate验证数据(即与您的身份绑定的公钥)keystore
中的私钥和证书。 jarsigner
。使用jarsigner
手动签署应用程序或使用IDE导出已签名的应用程序(无论如何都使用keytool
和jarsigner
),然后您可以找到与签名相关的文件放在已签名的.apk存档的META-INF
目录中:
SHA
哈希的文件和This article很好地描述了您需要遵循的步骤。
注意:在继续签名之前,请考虑重要的预发布步骤:删除日志/关键字符串文字,使用proguard进行模糊处理等。
下面我将提供该过程的一些要点:
keystore
。如果您没有keystore
,可能需要先创建keystore
。在创建Keystore password
时,您需要创建keystore
,用于确保keystore
数据的完整性(即,您将被警告您的密钥库被篡改后,某人 - 不是您 - 已添加新证书)。实际上,如果您保证private key
文件安全,则此密码不是非常关键。如果有一天你忘了它就可以逃脱。
生成PrivateKey password
时,系统还会要求您创建private key
,用于加密密钥库中的私钥。 这是您需要保留的非常重要的密码,因为它确保了
在Eclipse中生成新私钥时,还会要求您提供用于创建自签名证书的身份信息。
下一步,指定keystore
文件中的.apk
将用于对应用程序进行签名,您的alias
将使用上述签名相关文件进行更新。
密钥库只是一个二进制文件,保留了特定格式的私钥/证书列表。它可以使用KeyStore.java提供的API以编程方式访问。您的密钥库可以包含多个私钥条目,每个条目都由其keystore
标识。
在大多数情况下,您的private key
将拥有单个私钥,其中包含与此私钥匹配的单个自签名证书。
密钥库密码用于密钥库内容的完整性检查
如果您丢失了此密码,但您仍然拥有存储在其中的私钥的密码,则可以通过运行以下cmd来“克隆”您的密钥库并提供新的密钥库密码:
keytool -importkeystore -srckeystore path / to / keystore / with / forgotten / pw -destkeystore 路径/到/我的/新的/密钥库
提供新密码,并将旧密钥库密码留空 - 您只会收到警告。然后,您可以使用新的密钥库并删除旧的密钥库 还有其他方法可以在不使用密钥库密码的情况下检索私钥。
私钥密码 - 在keystore
内保护(通过加密).apk
。这非常重要,因为它允许您访问您的私钥,以便为您的应用程序签署更新。通常很难恢复它。
自签名证书 - 将您的身份(姓名/组织/电子邮件)绑定到公钥的非常简单的证书。在签名操作期间,此证书将添加到.apk
文件中,并将在用户设备上用于在安装前验证{{1}}。