可能你看标题不知道什么意思。 让我解释一下什么是空白签名以及为什么需要空白签名。 那是一个阳光明媚的早晨,我愉快地敲着代码。 然后项目总监告诉我,有一个旧项目在维护,并给了我源代码。 我修复bug并运行成功后,他说会投放到应用市场。 我说你想去就去吧,很简单。 然后我发现事情并没有那么简单。 这个应用之前就已经上过平台了,那是在2016年或者2017年的时候,当时我还在上学。 而且,找不到之前平台的开发者账号,这意味着之前平台上的应用是孤儿。 如果你的平台上有这个应用程序并想将其上架,有两个选择。 首先更改包名和应用名,然后上架。 2. 领取申请。 解决方案 1 花费的时间太长,因为它不仅仅是更改包名称那么简单。 由于所连接的第三方SDK的包名发生变化,因此必须更改一次配置。 周期太长空包,太麻烦。 所以我选择了第二种,这篇文章就诞生了。
文本
如果你不去挖掘陷阱,你不会知道有多少陷阱。 领取申请的第一步是签署空包裹。 第一步是更改签名。 相信打包过APK的朋友都知道什么是签名。 我来描述一下我目前的情况。 我这里有源码,但是没有之前的jks,所以拿不到原始的签名,所以重新生成了一个新的jks来签名生成APK。 如果您想领取申请,平台必须首先确认您的签名。 下面我以VIVO开放平台为例。
1.下载空包
首先登录您的开发者平台,然后找到应用程序上传的位置。 首先检查平台是否上传了该包名的应用。 如果是这样,请主张它。 这里我使用的是VIVO开放平台。 下图为理赔申请界面。
在此插入图片描述
点击图中标注的天蓝色字体即可下载。 下载并解压后你会看到两个这样的文件。
在此插入图片描述
vivo_unsign.apk是平台上一个未签名的空包,你只需要将当前需要上架应用市场的项目的签名添加到这个apk上即可。
在此插入图片描述
您以前从未听说过吗? 你的头脑嗡嗡作响。 为了更加形象,我用之前写的demo来做这个演示。
在此插入图片描述
决定权在你,TranslateDemo,这是一个百度翻译Demo,看完这篇博客你应该还记得吧,我们先获取keystore文件。
2. 获取密钥库
其实我们生成jks文件的时候,会有一个小提示,类似下面
JKS 密钥库使用专有格式。 建议使用“keytool -importkeystore -srckeystore xxx.keystore -destkeystore xxx.keystore -deststoretype pkcs12”迁移到行业标准格式PKCS12。
假设你不符合行业标准或其他什么。 但通常我们不关心它,它只是让你生成密钥库文件。
那么在哪里生成这个密钥库呢? 首先打开您的项目,然后在底部菜单中找到“终端”。 点击后会进入自己项目的当前目录,如下图:
在此插入图片描述
然后输入
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和密码查看。
例如,如果您打开一个新终端,请在其中输入以下代码:
keytool -list -v -keystore 你的jks路径
复制
我的路径是D:\APK\translate.jks,那么这样写
keytool -list -v -keystore D:\APK\translate.jks
复制
然后按回车键,输入密码再按回车键,就可以看到创建信息了。
在此插入图片描述
然后切换到本地。 按要求输入,因为我之前创建jks的时候只输入了自己的名字空包,没有输入其他的。 如果没有,只需按 Enter 即可跳过。 最后一道题问你是否正确,输入Y。如下图:
在此插入图片描述
然后按 Enter 键。
在此插入图片描述
由于我的别名密码和keystore密钥一致,所以直接回车,然后会出现如下提示。 复制我标记的代码,根据自己的实际情况使用。
在此插入图片描述
粘贴到下面,回车,输入密码,然后keystore文件就创建成功了。
在此插入图片描述
这个文件在哪里? 如下所示:
在此插入图片描述
是不是很麻烦呢? 我不知道读了多少博客,经历了多少陷阱,才写出以上内容。
现在密钥库可用,是时候进行签名了。 这个签名也有很多陷阱。
3. 空白签名
首先,请安装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地址路径 签名文件的别名
现在让我给你举个例子:我刚刚将三个文件复制到垃圾箱中。 我希望签名后的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
在此插入图片描述
然后上传到平台
在此插入图片描述
这说明你的空包签名成功了。
总结
只有更加耐心和冷静,才能更好地解决问题。 我是初学者-学习了,山高水长,待会儿见~
以上内容均来自网络搜集,如有侵权联系客服删除