大家好,又见面了,我是你们的朋友全栈君。
生成签名文件:其实是有很多工具可以做到,这里不过是想用命令来生成 其命令如下:生成的签名默认在c盘根目录下 keytool -genkey -alias aaaa.keystore -keyalg RSA -validity 2000 -keystore newandroid.keystore 备注说明:-alias后面跟着的是别名(android.keystore) -keystore后面跟着的是具体的签名文件(及签名文件的命名–newandroid.keystore) 当使用这个命令生成后,会有个警告,不符合pkcs12标准,需要消除掉(也可以不消除),使用如下命名: keytool -importkeystore -srckeystore android.keystore -destkeystore newandroid.keystore -deststoretype pkcs12 将上面的android.keystore签名迁移到newandroid.keystore中,其各种参数不变。 截图如下
标题实际上说了二个问题:查看签名和重签名 首先说:如果对方给了你.keystore之类的文件格式的签名文件后,实际上时可以查看相关的签名的信息的,只需要在cmd控制台运行如下命令即可: 直接运行keytool命令时不可行的 需要配置环境,将keytool.exe所在的目录配置到环境变量中 可以直接下jdk安装配置,也可以用as自带的目录:jrebin 命令:keytool -list -v -keystore xxxx.keystore 即可得到如下示意图信息:
非解包的情况下:查看签名 keytool -list -printcert -jarfile app-release-sign.apk
先说一个简单的查看apk的签名信息: 第一步:将apk解压 第二步:找到META-INF 下的.RSA文件 第三步:在mac终端或者window控制器上输入命令: keytool -printcert -file xxx.RSA回车,即可查看签名文件.将.RSA文件拖入到-file后面,即可查看:如下图
其中:MD5的值就是签名的信息(已被隐藏)
去掉apk的签名就比较简单了: 反编译apk后 去掉original里面的META-INF文件夹即可 然后回编译出来即正常apk
重新签名就有点复制了: 首先我们必须拿到未签名的apk 和需要签名的keystore文件 以及别名和key password 和 key store password信息. 最简单的办法:使用360签名工具,但是只适用于window系统,其签名工具下载地址如下: http://www.pc6.com/softview/SoftView_230893.html
但是mac只能使用命令进行签名 签名命令如图下: 使用jarsigner进行签名 jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称] 或者直接把密码给带进签名里面去,就不用手动输入密码库密码了:命令如下 jarsigner -verbose -keystore [您的私钥存放路径] -storepass 密码库密码 -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称] 或者 jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存放路径] [未签名的文件路径] [您的证书名称] -storepass 密码库密码
jarsigner的参数说明,以上的路径都是我自己电脑里面的路径
您的私钥的存放路径,指的是 keystore文件 即路径为/Users/liangzijishu/Desktop/keys/okGame.jks 签名后文件存放路径,指点是签名后 产生的新的apk文件 即存放路径为/Users/liangzijshu/Desktop/abc.apk(并重新命名了) [未签名的文件路径] 指定要签名apk文件的绝对路径,也就是别人给你的未签名的apk文件 /Users/liangzijishu/Desktop/天涯明月刀.apk [您的证书名称] 是指您创建密钥时您设置的证书名称 即仓库的别名 即sihaoGame 密码库密码是指 仓库密码 命令如下图:
同时输入的密钥库密码短语:就是key store password(此时不会显示密码 直接输入 回车即可)
可能会报的错如下: 第一:jarsigner 错误: java.lang.RuntimeException: 密钥库加载: /Users/liangzijishu/okGame.jks(No such file or directory)
代码语言:javascript复制keystroe的拓展名 可以为.jks(或者是.store 未验证) 但是不能为.txt 否则会报错误
第二种报错: jarsigner: 找不到kaoyan_keystore的证书链 即:由于证书名称写错了,证书名称即Alias(你设置的别名)
第三种报错: jarsigner 只能使用一种别名 即在签名的时候 即某个路径下面出现了空格 例如:C:UsersAdministratorqyysnew newdist 则qyysnew new中间出现了空格 实际上是一个目录
第四种报错: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Failed to collect certificates from /data/app/vmdl1272757617.tmp/base.apk: META-INF/CERT.SF indicates /data/app/vmdl1272757617.tmp/base.apk is signed using APK Signature Scheme v2, but no such signature was found. Signature stripped?] 签名后安装时出现此问题:是因为原来的apk带有v2签名,即首先需要去掉v2签名,然后再签名即可 以上信息:还要感谢我的好盆友及一位博主: 博主博客如下: https://www.jianshu.com/p/dbcfff997ccb
手动对齐操作: 手动对齐apk:zipalign 4 unaligned.apk aligned.apk (或者zipalign -v 4 unaligned.apk aligned.apk) 验证是否对齐:zipalign -c -v 4 application.apk。
以上:非常感谢
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130147.html原文链接:https://javaforall.cn