上线了3年多的项目,最近为了进行市场推广,在现在主流的vivo,oppo,华为及百度和阿里进行上传应用.因为有些市场是因为有抓取包的行为(比如在oppo应用市场,以前从未在oppo市场上传过应用,但是能在他的市场中搜索到,这就是因为在其他市场比如应用宝这些市场抓取过包),因此在诸如oppo这样有过抓包行为的市场,在第一次上传apk时,需要进行应用认领,认领时一般会需要对这些平台提供的空包进行签名,一般都是用jarsigner进行签名的.

 一. 进行jarsigner签名的环境: 需要检测JDK环境变量是否配置正确:

1:打开cmd

2:在命令行窗口输入javac,出现下图所示:

3:再次输入java,出现下图所示:

JNLP 文件中的JAR 资源签名证书不一致 jar包 签名_jar

4:最后输入java -version,出现下图所示:

JNLP 文件中的JAR 资源签名证书不一致 jar包 签名_java_02

如果出现上面的前两个图片显示的内容就说明jdk的环境变量配置是正确的,第三个命令是检查当前电脑中使用的jdk的版本及位数。

二. jarsigner 的签名格式

jarsigner  -verbose  -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称]

#jarsigner的参数说明

-keystore 参数指定您的私钥的绝对路径,例如: C:\Users\wz\Desktop\sign_verification\abcAndroidKey.jks

-signedjar 参数指定签名后apk文件存放绝对的路径,例如 C:\Users\wz\Desktop\sign_verification\oppoemptyapk-      release-signed.apk

[未签名的文件路径] 指定要签名apk文件的绝对路径,也就是从要认领应用的平台下载到的,例如  C:\Users\wz\Desktop\sign_verification\oppoemptyapk-release-unsigned.apk

[您的证书名称] 是指您创建密钥时,您设置的证书名称,其实就是签名中的别名(即:keyAlias)

模板如下图:

JNLP 文件中的JAR 资源签名证书不一致 jar包 签名_jarsigner_03

三.接下来回车

1.回车后会出现:输入密钥库密码短语: ,然后你就输入签名中的storePassword就可以了,不过在输入时是不显示的.

2.输入完成后回车,会出现 输入xxxx(xxx:其实就是别名)的密钥口令: ,然后你就输入签名中的keyPassword,然后回车就可以了,此时输入的密码也是不显示的.

3.当你看到jar已签名这些的时候,就证明你已经成功签名了,就可以在对应目录下找到已签名的文件了!

JNLP 文件中的JAR 资源签名证书不一致 jar包 签名_jar_04