先说结论:如果oldkey.jks 泄漏了,可以直接换一个新的签名newkey.jks,然后使用oldkey.jks和newkey.jks共同对新APK进行签名。效果如下:
一、覆盖安装效果是:
(一)可覆盖安装情况:
1.oldkey签名的包可以被oldkey和newkey共同签名的包覆盖安装。
2.共同签名的包和使用newkey.jks签名的包可以互相覆盖。
(二)不可覆盖安装的情况:
1.共同签名的包不能被oldkey签名的包覆盖
二、签名md5信息情况是:
(一)oldkey和newkey共同签名的包的签名MD5 和 oldkey签名MD5一致
三、实操步骤是:
(一)创建一个新的签名 newkey.jks。(生成key方法自行百度)
(二)用新签名和旧签名一起生成一个沿袭签名(lineage key)
1.环境是:安卓9及以上的build-tool中的apksigner.bat
2.切换到build-tool目录,生成沿袭签名
输入命令:
apksigner rotate --out keyline --old-signer --ks oldkey.jks --new-signer --ks newkey.jks
然后会让你输入旧证书和新证书的密码
Keystore password for old signer:
Keystore password for new signer:
会生成keyline文件
(三)生成一个共同签名的apk:
apksigner sign --ks oldkey.jks --ks-key-alias youOldAlias --next-signer --ks newkey.jks --lineage keyline --out result.apk app-release-unsigned.apk
然后会让你输入旧证书和新证书的密码
Keystore password for signer #1:
Keystore password for signer #2:
生成的result.apk就是共同签名Apk