生成Android签名文件,目前有两种一种是eclipse开发工具生成的后缀名.keystore签名文件,一种是Androidstudio开发工具生成的后缀名.jks签名文件,那它们有什么不同?
1、一个是eclipse生成的签名,用于eclipse开发的APP应用打包
2、一个是Androidstudio就生成的签名,用于Androidstudio开发的APP应用打包
eclipse和Androidstudio都是用来开发安卓应用的工具,eclipse因为各种原因被谷歌公司抛弃了,谷歌公司推出新的Androidstudio安卓开发工具,更方便,更容易上手。
因为我们没有使用到Androidstudio开发APP或用于离线打包APP,所以.jks签名比较少用。
目前我们比较常用的是.keystore因为很多第三方工具还是使用.keystore来进行签名,像腾讯或360的应用加固,都是使用.keystore,包括我们这里介绍的DCloud在线打包APP,也是使用.keystore来进行签名。
Android平台打包发布apk应用,需要使用数字证书(.keystore文件)进行签名,用于表明开发者身份。
Android证书的生成是自助和免费的,不需要审批或付费。
可以使用JRE环境中的keytool命令生成。
以下是windows平台生成证书的方法:
下面以安装目录为“C:\ProgramFiles\Java\jre1.8.0_201”为例,实际操作时请修改为自己安装目录
建议将JRE安装路径添加到系统环境变量,已配置可跳过此章节
打开命令行(cmd),输入以下命令:
d:setPATH=%PATH%;"C:\ProgramFiles\Java\jre1.8.0_201\bin"我的环境变量里之前就配置过java环境,所以无需此步
在D盘先设个.keystore文件的存储目录
使用keytool-genkey命令生成证书:
keytool-genkey-aliastestalias-keyalgRSA-keysize2048-validity36500-keystoretest.keystore回车后会提示:
Enterkeystorepassword://输入证书文件密码,输入完成回车Re-enternewpassword://再次输入证书文件密码,输入完成回车Whatisyourfirstandlastname[Unknown]://输入名字和姓氏,输入完成回车Whatisthenameofyourorganizationalunit[Unknown]://输入组织单位名称,输入完成回车Whatisthenameofyourorganization[Unknown]://输入组织名称,输入完成回车WhatisthenameofyourCityorLocality[Unknown]://输入城市或区域名称,输入完成回车WhatisthenameofyourStateorProvince[Unknown]://输入省/市/自治区名称,输入完成回车Whatisthetwo-lettercountrycodeforthisunit[Unknown]://输入国家/地区代号(两个字母),中国为CN,输入完成回车IsCN=XX,OU=XX,O=XX,L=XX,ST=XX,C=XXcorrect[no]://确认上面输入的内容是否正确,输入y,回车Enterkeypasswordfor
可以使用以下命令查看:
keytool-list-v-keystoretest.keystoreEnterkeystorepassword://输入密码,回车Keystoretype:PKCS12Keystoreprovider:SUNYourkeystorecontains1entryAliasname:testCreationdate:2019-10-28Entrytype:PrivateKeyEntryCertificatechainlength:1Certificate[1]:Owner:CN=Tester,OU=Test,O=Test,L=HD,ST=BJ,C=CNIssuer:CN=Tester,OU=Test,O=Test,L=HD,ST=BJ,C=CNSerialnumber:7dd12840Validfrom:FriJul2620:52:56CST2019until:SunJul0220:52:56CST2119Certificatefingerprints:MD5:F9:F6:C8:1F:DB:AB:50:14:7D:6F:2C:4F:CE:E6:0A:A5SHA1:BB:AC:E2:2F:97:3B:18:02:E7:D6:69:A3:7A:28:EF:D2:3F:A3:68:E7SHA256:24:11:7D:E7:36:12:BC:FE:AF:2A:6A:24:BD:04:4F:2E:33:E5:2D:41:96:5F:50:4D:74:17:7F:4F:E2:55:EB:26Signaturealgorithmname:SHA256withRSASubjectPublicKeyAlgorithm:2048-bitRSAkeyVersion:3其中证书指纹信息(Certificatefingerprints):
(1)修改keystore的查询密码
当想更改ketstote的密码时,可以用命令:keytool-storepasswd-keystore例如
keytool-storepasswd-keystoreD:\key\test.keystore会提示输入原来的密码,然后提示输入新的密码,重复输入密码,回车键就完成了。
(2)修改keystore的alias密钥密码
如果需要修改alias密钥密码,可以用命令:
keytool-keypasswd-keystoreD:\key\test.keystore-aliastestkey-aliastestkey,testkey是原来填写的别名
首先输入,查询密码,验证通过后,要求输入原来的alias密钥密码,然后输入新密码,回车键完成
(3)修改keystore的alias别名
当你需要修改别名时,可以用命令:
keytool-changealias-keystored:\test\test.keystore-aliastestkey-destaliasnewkeyname命令中的testkey是原来的别名,newkeyname是新的别名称,需要输入查询密码和alias密钥密码,输完回车键完成。
将上面的安卓签名获取工具下载到手机,安装之后,输入包名,获取,报错:NameNotFoundException:Signsisnull
起初一直不知道什么原因,因为uniapp的manifest.json里的包名设置的就是对的,但是自定义打包的时候包名没有同步修改,所以导致这个错误。