最稳方式是用keytool查本地.keystore文件的MD5:进入证书目录执行keytool -list -v -keystore myapp.keystore -alias myalias,输入密码后从输出中复制MD5:后带冒号的十六进制值。

直接用 keytool 命令查最稳,别依赖运行时 JS 函数——它只在真机 Android 环境下有效,且容易因权限、Context 或签名字段缺失返回 null。
用 keytool 查本地 .keystore 文件的 MD5
这是最常用、最可靠的方式,适用于你有打包用的 .keystore 或 .jks 文件的情况。
- 确保已安装 JDK,并在终端/命令行中能执行
java -version - 进入证书所在目录,运行(替换为你的实际路径和别名):
keytool -list -v -keystore myapp.keystore -alias myalias
- 输入密钥库密码后,输出中会包含
MD5:、SHA1:、SHA256:三行,复制MD5:后面那一串带冒号分隔的十六进制值即可 - 如果没指定
-alias,且 keystore 里只有一个条目,命令仍可执行;但若有多个 alias,不加会报错
从云端证书(DCloud)下载后查 MD5
如果你用的是 uni-app 云打包,证书由 DCloud 后台托管,需先下载再查。
- 登录 DCloud 后台 → 应用管理 → 进入应用详情 → 找到「Android 云端证书」→ 点击「下载证书」
- 下载得到的文件名通常是
xxx.keystore,同时在证书详情页能看到「别名」和「密码」,这两个必须记下来 - 用上一节的
keytool命令,把myapp.keystore和myalias替换成你看到的实际值 - 注意:不要用浏览器直接打开 .keystore 文件——它是二进制格式,打不开也读不了
运行时 JS 获取(仅限 Android 真机,慎用)
这个方法写在 uni-app 的 getAppSignatureMD5() 函数里,但实际落地限制很多。
- 仅在 Android 真机上生效,模拟器、iOS、H5、微信小程序全都不支持
- 依赖
plus.androidAPI,所以必须是 5+ App 环境,且不能在条件编译为非 App 平台时调用 - 常见失败点:
MainActivity为空、getPackageManager调用失败、packageInfo.signatures取不到(尤其某些定制 ROM 或 Android 14+ 权限收紧后) - 如果返回
null或控制台报"Signatures is empty",基本说明运行时不可靠,应立刻切回keytool方式
真正卡住人的往往不是命令怎么敲,而是搞混了「调试证书」和「发布证书」——备案必须用你最终上架 APK 所用的那个 .keystore,不是 debug.keystore,也不是随便生成的一个测试证书。别名、密码、文件路径,三个缺一不可,输错一个就看不到 MD5。


















