Unity打包apk提审应用宝渠道提示暂不支持APK Signature Scheme v2的解决办法

Posted 林新发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

以上是关于Unity打包apk提审应用宝渠道提示暂不支持APK Signature Scheme v2的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

腾讯应用宝上传应用步骤

Unity打包安卓项目问题汇总(持续更新)

windows下PHP批量生成打包android程序APK-渠道txt植入apk文件

Android 新一代多渠道打包神器

安卓转战React-Native之签名打包成Apk并极速多渠道打包

安卓转战React-Native之签名打包成Apk并极速多渠道打包