【游戏开发问题】Unity打包apk提审应用宝渠道提示【暂不支持APK Signature Scheme v2】的解决办法

一、问题描述

Unity项目打包apk提审应用宝渠道,提示暂不支持APK Signature Scheme v2,如下:
在这里插入图片描述
记录下解决过程。

二、解决办法

1、查看apk是否含有V2签名

命令:

apksigner verify -v 你的apk文件

运行效果:
在这里插入图片描述
可以看到用了v2v3签名。

2、重签名

命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 【keystore文件】【你的apk文件】【keystore别名】

运行效果:
在这里插入图片描述
嗯?没有成功。
解决办法:把.apk改为.zip,进入.zip内部把META-INF文件夹删除,然后重新把.zip改为.apk,重新执行签名。
在这里插入图片描述
最后执行重签成功:
在这里插入图片描述

3、写个python自动处理

作为一个懒人,是不能接收手动操作的,写个python脚本自动处理,把apk放到下面这个python统计目录中,执行python脚本即可。
注:里面我用了7z压缩工具,它是开源无广告的,推荐大家使用。

7z官网:https://www.7-zip.org/

python代码如下:

import os
import subprocess

# 执行命令行
def run_cmd(cmd):
    # 常用编码
    GBK = 'gbk'
    UTF8 = 'utf-8'

    # 解码方式,一般 py 文件执行为utf-8 ,cmd 命令为 gbk
    current_encoding = GBK
    # 构造popen
    p = subprocess.Popen(cmd, shell = True,
                             stdout = subprocess.PIPE,
                             stderr = subprocess.PIPE)       

    # 执行
    while True:
    	line = p.stdout.readline()
    	if not line:
    		break
    	print(line)

# 遍历apk文件
def walk_apks():
    for root, dirs, fs in os.walk('.'):
        for f in fs:
            if f.endswith('.apk'):
                yield os.path.join(root, f)

# 使用7z工具把zip中的目标文件删除,你可以改成winrar或者好压等工具
def zip_del_file(apk_f, del_f):
    print('zip_del_file:', apk_f, del_f)
    zip_f = apk_f.replace('.apk', '.zip')
    os.rename(apk_f, zip_f)
    run_cmd("7z d \"%s\" %s"%(zip_f, del_f))
    os.rename(zip_f, apk_f)

# 重签名    
def resign_apk(apk):
	keystore = '你的证书.keystore'
	pwd = '你的keystore密码'
	alias = '证书别名'
    cmd = 'jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %s -storepass %s %s %s'%(keystore, pwd, apk, alias)
    run_cmd(cmd)
    
if __name__ == '__main__':
    for apk in walk_apks():
        zip_del_file(apk, "META-INF")
        resign_apk(apk)

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值