前言

在 Android 应用开发中,APK 签名是发布应用的必要步骤。签名证书用于标识应用的开发者身份,确保应用的完整性和来源可信。本文记录如何使用 JDK 自带的 keytool 工具生成签名证书,以及如何查看证书的签名信息。

生成签名证书

前置条件

确保已安装 JDK,并将 keytool 所在的 bin 目录加入环境变量。如果未配置环境变量,可以直接进入 JDK 的 bin 目录下执行命令。

生成命令

keytool -genkey -alias appname -keyalg RSA -validity 20000 -keystore appname.keystore

参数说明:

参数 含义
-alias 密钥对的别名,用于标识这条密钥记录
-keyalg 密钥算法,推荐使用 RSA
-validity 证书有效期(天),20000 天约 54 年
-keystore 生成的密钥库文件名

执行后会提示输入密钥库密码、个人信息(姓名、组织等),按提示填写即可。最终会在当前目录生成 appname.keystore 文件。

提示:发布到 Google Play 或国内应用市场时,需要妥善保管密钥库文件和密码,丢失后将无法更新已发布的应用。

查看证书签名信息

如果需要获取证书的 SHA1、MD5、SHA256 等指纹信息(例如申请第三方 SDK 的 AppKey 时经常用到),可以使用以下命令:

keytool -list -v -keystore appname.keystore

执行后会提示输入密钥库密码,输入正确后即可看到证书指纹信息:

证书指纹:
    SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
    SHA256: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:...
    MD5: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

其中最常用的是 SHA1,很多第三方平台(如高德地图、微信开放平台等)都需要用它来注册应用。

注意事项

  • 密钥库密码:建议设置强密码,切勿泄露
  • 密钥库文件:丢失或损坏将无法对应用进行升级签名,务必做好备份
  • 不同渠道:有些应用市场要求使用其专用签名,发布前需确认各渠道的签名要求
  • debug 与 release:开发调试时 Android Studio 会自动使用 debug 签名,正式发布时必须使用自己的签名证书

参考