'''
apksigner sign //执行签名操作
--ks 你的jks路径 //jks签名证书路径
--ks-key-alias 你的alias //生成jks时指定的alias
--ks-pass pass:你的密码 //KeyStore密码
--key-pass pass:你的密码 //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk //输出路径
input.apk //需要签名的APK
'''
'''
apksigner verify -v --print-certs xxx.apk
参数:
-v, --verbose 显示详情(显示是否使用V1和V2签名)
--print-certs 显示签名证书信息
例如:
apksigner verify -v xxx.apk
Verifies
Verified using v1 scheme (JAR signing): true
Verified using v2 scheme (APK Signature Scheme v2): true
Number of signers: 1
'''
import shutil
import os
"""
1.安装Python3.10,配置环境变量。
2.配置apksinger的环境变量。
3.把xxx.jks、xxx.apk(支持多个)放入和apk_sign.py同目录下。
4.双击apk_sign.py,出现命令行窗体,等待。
5.按任意键结束。
6.查看output目录下已签好的apk文件。
"""
jksFile = 'xxx.jks'
storePassword = '123456'
keyAlias = 'xxx'
keyPassword = '123456'
src_apks = []
def apk_sign():
for file in os.listdir('.'):
if os.path.isfile(file):
extension = os.path.splitext(file)[1][1:]
if extension in 'apk':
src_apks.append(file)
for src_apk in src_apks:
src_apk_file_name = os.path.basename(src_apk)
temp_list = os.path.splitext(src_apk_file_name)
src_apk_name = temp_list[0]
src_apk_extension = temp_list[1]
output_dir = 'output/'
if not os.path.exists(output_dir):
os.mkdir(output_dir)
target_apk = output_dir + src_apk_name + src_apk_extension
signer_apk = output_dir + src_apk_name + '_signer' + src_apk_extension
signer_str = 'apksigner sign --ks ' + jksFile + ' --ks-pass pass:' + storePassword + ' --ks-key-alias ' + keyAlias + ' --key-pass pass:' + keyPassword + ' --out ' + signer_apk + ' ' + src_apk
with os.popen(signer_str, "r") as p:
r = p.read()
print('### signer success ###: %s' % r)
verify_str = 'apksigner verify -v --print-certs ' + signer_apk
with os.popen(verify_str, "r") as p:
r = p.read()
print('verify_result:\t', r)
if __name__ == '__main__':
apk_sign()