Unity apk打包失败的解决方法
Posted qq_45870222
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity apk打包失败的解决方法相关的知识,希望对你有一定的参考价值。
1.遇到无法打包首先检查一下Edit-External Tools-android下的JDK、SDK、NDK、Gradle是否下载完整
2.遇到
打包安卓APK 时报错:
Configure project :launcher
WARNING: The option ‘android.enableR8’ is deprecated and should not be used anymore.
It will be removed in a future version of the Android Gradle plugin, and will no longer allow you to disable R8.
请查看
原文链接:Unity发布安卓 :launcherWARNING: The option setting ‘android.enableR8=false‘ is depre - 游戏编程 🕹️ (233tw.com)
3.遇到
Failed to query the value of task 'xx:compileDebugJavaWithJavac'
要保证自己的gradle的版本和build:gradle相匹配,比如我的com.android.tools.build:gradle:4.0.1要与gradle6.1.1匹配
gradle下载链接Gradle Distributions
4.遇到
building gradle project 卡住(>20分钟)
(1)修改E:\\Unity1\\Editor\\2020.3.24f1c2\\Editor\\Data\\PlaybackEngines\\AndroidPlayer\\Tools\\GradleTemplates\\gradleTemplate.properties里的内容
或者
(2)下载新的gradle,同时将他安装在Edit-External Tools-Gradle Installed with Unity所对应的目录下
Unity打包apk提审应用宝渠道提示暂不支持APK Signature Scheme v2的解决办法
一、问题描述
Unity
项目打包apk
提审应用宝渠道,提示暂不支持APK Signature Scheme v2
,如下:
记录下解决过程。
二、解决办法
1、查看apk是否含有V2签名
命令:
apksigner verify -v 你的apk文件
运行效果:
可以看到用了v2
和v3
签名。
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
压缩工具,它是开源无广告的,推荐大家使用。
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打包失败的解决方法的主要内容,如果未能解决你的问题,请参考以下文章