在一些情况下,我们需要手动给apk进行签名,比如第三方加固之后,比如反编译之后,都需要给apk进行二次签名,这里记录一些手动签名步骤和命令
反编译工具下载
https://apktool.org/docs/install/
反编译
apktool.bat d int.apk -o out_dir
编译
apktool.bat b out_dir -o out.apk
4字节对齐
D:\java\androidSdk\build-tools\33.0.0\zipalign.exe -f -v -p 4 in.apk out.apk
查看是否已经签名
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat verify out.apk
生成签名
keytool -genkey -v -keystore esg.jks -keyalg RSA -keysize 2048 -validity 10000 -alias esg
签名
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat sign --ks esg.jks --ks-key-alias esg --ks-pass pass:123456 out.apk
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --v4-signing-enabled false --v1-signer-name CERT --ks esg.jks --ks-key-alias esg --ks-pass pass:123456 --in in.apk --out out.apk
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --v4-signing-enabled false --v1-signer-name CERT --ks esg.jks --ks-key-alias esg --ks-pass pass:123456 --in in.apk --out out.apk
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat sign --ks yyKey.jks --ks-key-alias yyKey --ks-pass pass:123456 out.apk
//这里启用v1、v2、v3签名,不启用v4签名,另外添加 --v1-signer-name CERT 确保生成的签名文件名称是CERT.RSA,适配第三方比如部分手机比如蒲公英读取证书信息
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat sign --v1-signing-enabled true --v2-signing-enabled true --v3-signing-enabled true --v4-signing-enabled false --v1-signer-name CERT --ks yyKey.jks --ks-key-alias yyKey --ks-pass pass:123456 --in in.apk --out out.apk
查看是否已经签名
D:\java\androidSdk\build-tools\33.0.0\apksigner.bat verify out.apk