之前UNITY安卓无法打包的问题处理总结
约两周前用UNITY打包安卓的时候出了莫名其妙的BUG,浪费了好多天时间最终用不情愿的方法将其修复。这里总结一下:
(1)首先问题发生的起因某一天打包的时候我人离开了一会儿,回来就发现报错了。报错信息是:
CommandInvokationFailure: Failed to sign APK package.
D:\Program Files\android-sdk-windows\build-tools\27.0.1\apksigner.bat sign --ks "D:/Unity Projects/********.keystore" --ks-pass pass:"********" --ks-key-alias "********" --key-pass pass:"********" "D:\Unity Projects\i_am_bag\Temp/StagingArea/Package.apk"
stderr[
'C:\WINDOWS\system32\reg' �����ڲ����ⲿ���Ҳ���ǿ����еij���
�����������
]
stdout[
]
exit code: 255
明明一周前都好的,现在怎么就错了?我回忆了下这两天的操作,唯一做的相关的事情就是安装了YOMOB的广告SDK。
但问题是,SDK的导入是针对某个具体项目的,而我现在打包的项目并没有导入这个SDK,怎么可能会出错呢?
(2)所以我初步可以认为不是SDK导致的。首先怀疑签名文件是否过期。结果命令行下查了一下,还能用几十年,显然不是这个签名文件过期问题。然后我又重新新建了一个签名文件,依旧不行。然后我用重新建了一个空白项目并重新新建了一个签名文件,依旧不行。
(3)然后我分别发求助给UNITY总部的官方和UNITY中国区的官方。总部回复我说我用的2017版本太旧了,让我升级后再说。中国区官方说我的报错信息都是乱码他们怎么给我查。
于是我没办法只好升级到2018的一个LTS版本。结果报错信息和之前几乎一样。我再次求助了官方。
(4)在此期间我尝试了其它方法。例如把安卓SDK和JAVA卸载干净并重新安装并重新配置环境。相关步骤大家网上可以搜出一大堆,我就不赘述了。命令行下检查发现安卓环境和JAVA环境都OK的。至少相关文件都在且都可以被调用运行。
(5)我开始怀疑报错信息里的那个reg.exe。可能我最近后台安装了什么程序把这个文件给覆盖掉了。于是我在群里问群友大家的windows10的reg.exe文件大小和版本和我的有什么区别。结果查下来大家都不一样。然后我选了1个版本比我的新的reg.exe的文件复制到system32文件夹。显然操作系统不让复制,因为权限不够。我试了网络上公认的一些获取权限的方法,都不好用。最后没办法我只好通过powershell用命令行的方式直接用管理员权限复制文件,终于成功了。
然后UNITY继续尝试打包,还是失败了……
(6)考虑到我提交BUG的时候正好是圣诞节……所以直到2天后官方才给我回复(不得不说已经很敬业了)。其中UNITY总部给我的答复是“我们无法解决此问题,请重新尝试问题是否已自动解决”。中国部官方让我先安装android studio,然后UNITY这边选择导出安卓工程。
于是我照着试了一下,导出工程后在android studio里编译。结果报错,说是gradle不对,然后尝试更新gradle也失败。
(7)然后我手动更新了一个gradle版本,还是不行。反馈给官方,他们说我的安卓系统有问题。但是我安卓系统完全按步骤安装,不太可能有什么问题。各种检测都是对的。
(8)最后我没办法,只好认定为是windows系统出了问题。于是我备份了一下文档,然后将windows恢复到出厂设置。
然后重装JAVA和安卓SDK和UNITY,然后问题就解决了……
综上所述。很多时候,具体定位问题并将其解决是极其困难的,除非是相关领域的技术人员,不然花时间在这个上面就是浪费生命。重置一切才是最高效率的做法。
相关其它文章《操作系统还原与长生不老》https://www.bilibili.com/read/cv4285111
紫数 2020.1.14于闵行