Android 空包签名(详细版)

简介: Android 空包签名(详细版)

空包签名


前言


可能一看标题你不知道是什么意思,我这里解释一下什么是空包签名,为什么要空包签名。那是一个风和日丽的早晨,我愉快地敲着代码,于是项目总监告诉有一个老项目维护,给了我源代码,在我修复bug运行成功之后,说要上架到应用市场,我说要上那就上呗,简简单单。然后我发现事情并不是那么简单,平台上之前上架过此应用,那还是16、17年的事情,那时我还在学校呢。而且之前的平台开发者账号找不到了,也就是那之前平台上的应用是个孤儿。平台上有这个应用再想上架的话有两个方案,一、更改包名,应用名,然后上架。二、认领应用。方案一花费的时间太长,因为不仅仅是改一个包名那么简单,里面对接的第三方SDK因为这个包名改动,那么就都要改一次配置才行,周期太长,太繁琐。于是走方案二,就有了本文。


正文


 不采坑你就不知道有多少坑,认领应用的第一步就是空包签名,首先是改签名,相信打包过APK的朋友都知道签名是什么。我现在的情况我来描述一下,就是我这里有源码,但是没有之前的jks,所以无法获得原来的签名,于是我就重新生成新的jks去进行签名,生成APK。而如果要认领应用,平台就必须先肯定你的签名。下面我就用VIVO开放平台来举例子。


一、下载空包


首先登陆你的开发者平台,然后找到上传应用的地方,先看一下平台是否用这个包名上传过应用,是的话就进行认领,这里我使用的是VIVO开放平台。如下图为认领应用界面。


20210323090708863.png


点击图中的标注的天蓝色字体,进行下载。下载后解压你会看到这样两个文件。


20210323091106813.png


vivo_unsign.apk就是平台上未签名的空包,而你要做的就是把你当前需要上架应用市场的项目的签名打到这个apk上面。


20210323091339710.png


之前是不是没听说过,脑瓜子嗡嗡的吧。为了更加的生动形象,我这里用我之前写的demo来做这个演示。


20210323091648774.gif


就决定是你了,TranslateDemo,这是一个百度翻译Demo,看过这篇博客应该记忆犹新,下面先获取keystore文件。


二、获取keystore


 其实在我们生成jks文件的时候,会有一个小提示,类似下面这样


JKS 密钥库使用专用格式。建议使用 “keytool -importkeystore -srckeystore xxx.keystore -destkeystore xxx.keystore -deststoretype pkcs12” 迁

移到行业标准格式 PKCS12。


说你不符合行业标准什么的。但是通常我们都是不管它的,它就是让你去生成keystore文件。


那么在哪里生成这个keystore呢?首先打开你的项目,然后找到底部菜单的Terminal,点击之后就会进入到你自己项目当前的目录,如下图所示:


20210323092519423.png


然后输入


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


然后输入秘钥的密码,然后验证密码,之后就是填写一些相关的资料。


20210323093651382.png


如果你这些资料都忘记了,那么可以通过当前的jks和密码去查看。


比如你新开一个Terminal,在里面输入如下代码:


keytool -list -v -keystore 你的jks路径
1


比我的路径是D:\APK\translate.jks,那么就这么写



keytool -list -v -keystore D:\APK\translate.jks


然后回车,输入密码后再回车,你就能查看到创建时的信息了。


20210323094621976.png


然后切换到Local。按照要求输入,因为我之前创建jks,只输入了自己的名字,其他都没有输入,没有的直接回车跳过,最后的问题,问你是否正确,输入Y。如下图所示:


20210323094727472.png


然后回车。


20210323094916727.png


由于我的别名密码和秘钥库秘钥是一致的,所以我直接回车,然后就会出现如下所示的提示,复制我标注的这句代码,以你自己的实际为主。


20210323095042872.png


粘贴到下面去,然后回车,再输入密码,然后就成功创建了keystore文件。


20210323095227694.png


这个文件在哪呢?如下图所示:


20210323095400841.png


是不是挺麻烦的,就上面的这些内容我都不知道看了多少博客,踩了多少坑才写出来的。


现在keystore有了,下面就该来签名了,这个签名也有很多的坑。


三、空包签名


 首先请安装JDK,如果没有安装的话,请看JDK 安装与环境变量配置(Win10详细版)完成安装。


之后进入到jdk安装目录的bin目录下,比如我的目的地址是:C:\Program Files\Java\jdk1.8.0_162\bin


20210323100032952.png


然后用管理员身份打开命令提示符,


20210323100140651.png


管理员打开是不一样的,如下图所示:


20210323100227669.png


下面把未签名的vivo_unsign.apk、translate.jks和translate.keystore三个文件都复制到这个bin目录中。都是需要管理员权限的。如下图所示就复制进来了。


20210323100552565.png


然后通过 cd C:\Program Files\Java\jdk1.8.0_162\bin,进入此文件目录下:


20210323100801696.png


参考格式如下:


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

注意区分大小写、英文和空格。


20210323101640137.png


大功告成!然后去查看一下这个签名后的APK


20210323101727273.png


然后上传到平台上


20210323102125486.png


这样就说明你的空包签名成功了。


总结


 多一些耐心,心平气和,才能更好地解决问题。我是初学者-Study,山高水长,后会有期~


相关文章
|
9月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
642 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
723 2
|
11月前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
530 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
安全 Java Android开发
05. 【Android教程】Android 程序签名打包
05. 【Android教程】Android 程序签名打包
261 1
|
Java 开发工具 Android开发
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
如何在Eclipse中查看Android源码或者第三方组件包源码(转)
190 4
|
11月前
|
测试技术 Android开发 开发者
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
【03】优雅草央千澈详解关于APP签名以及分发-上架完整流程-第三篇安卓APP上架华为商店后面的步骤-华为应用商店相对比较麻烦一些-华为商店安卓上架
192 16
|
安全 Java Android开发
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
如何解压OTA升级包、编辑升级包内容(例如移除不需要更新的分区)、重新打包、签名以及验证OTA文件的过程。
1534 2
【Android P】OTA升级包定制,移除不需要更新的分区,重新打包签名
|
Java Android开发 Windows
使用keytool查看Android APK签名
本文介绍了如何使用Windows命令行工具和keytool查看APK的签名信息,并提供了使用AOSP环境中的signapk.jar工具对APK进行系统签名的方法。
1828 0
使用keytool查看Android APK签名
|
Android开发 数据安全/隐私保护
Android Studio创建JKS签名遇到的坑
Android Studio创建JKS签名遇到的坑
699 1
|
Android开发 开发者
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
Android、Flutter为不同的CPU架构包打包APK(v7a、v8a、x86)
1444 1

热门文章

最新文章