之前是不是没听说过,脑瓜子嗡嗡的吧。为了更加的生动形象,我这里用我之前写的demo来做这个演示。
就决定是你了,TranslateDemo,这是一个百度翻译Demo,看过这篇博客应该记忆犹新,下面先获取keystore文件。
其实在我们生成jks文件的时候,会有一个小提示,类似下面这样
**JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore xxx.keystore -destkeystore xxx.keystore -deststoretype pkcs12” 迁
移到行业标准格式 PKCS12。**
说你不符合行业标准什么的。但是通常我们都是不管它的,它就是让你去生成keystore文件。
那么在哪里生成这个keystore呢?首先打开你的项目,然后找到底部菜单的Terminal,点击之后就会进入到你自己项目当前的目录,如下图所示:
然后输入
keytool -genkey -alias jks别名 -keyalg RSA -validity 20000 -keystore keystore名称
比如我的别名是key0,我希望生成的keystore名称是translate.keystore,那么就可以这么写。
keytool -genkey -alias key0 -keyalg RSA -validity 20000 -keystore translate.keystore
然后输入秘钥的密码,然后验证密码,之后就是填写一些相关的资料。
如果你这些资料都忘记了,那么可以通过当前的jks和密码去查看。
比如你新开一个Terminal,在里面输入如下代码:
keytool -list -v -keystore 你的jks路径
比我的路径是D:\APK\translate.jks,那么就这么写
keytool -list -v -keystore D:\APK\translate.jks
然后回车,输入密码后再回车,你就能查看到创建时的信息了。
然后切换到Local。按照要求输入,因为我之前创建jks,只输入了自己的名字,其他都没有输入,没有的直接回车跳过,最后的问题,问你是否正确,输入Y。如下图所示:
然后回车。
由于我的别名密码和秘钥库秘钥是一致的,所以我直接回车,然后就会出现如下所示的提示,复制我标注的这句代码,以你自己的实际为主。
粘贴到下面去,然后回车,再输入密码,然后就成功创建了keystore文件。
这个文件在哪呢?如下图所示:
是不是挺麻烦的,就上面的这些内容我都不知道看了多少博客,踩了多少坑才写出来的。
现在keystore有了,下面就该来签名了,这个签名也有很多的坑。
首先请安装JDK,如果没有安装的话,请看JDK 安装与环境变量配置(Win10详细版)完成安装。
之后进入到jdk安装目录的bin目录下,比如我的目的地址是:C:\Program Files\Java\jdk1.8.0_162\bin
然后用管理员身份打开命令提示符,
管理员打开是不一样的,如下图所示:
下面把未签名的vivo_unsign.apk、translate.jks和translate.keystore三个文件都复制到这个bin目录中。都是需要管理员权限的。如下图所示就复制进来了。
然后通过 cd C:\Program Files\Java\jdk1.8.0_162\bin,进入此文件目录下:
参考格式如下:
jarsigner -verbose -keystore 签名文件路径 -signedjar 签名后APK保存地址路径 未签名APK地址路径 签名文件的别名
那我当前举例子:我刚才把三个文件复制到bin中来,我希望签名后的apk也放在bin中,于是就如下面这样。
签名文件路径 :translate.keystore
签名后APK保存地址路径 :vivo_sign.apk
未签名APK地址路径:vivo_unsign.apk
签名文件的别名:key0
我们组合一下:
jarsigner -verbose -keystore translate.keystore -signedjar vivo_sign.apk vivo_unsign.apk key0
注意区分大小写、英文和空格。
大功告成!然后去查看一下这个签名后的APK
然后上传到平台上
这样就说明你的空包签名成功了。