Unity构建Android项目失败求助:CommandInvokationFailure错误
解决Unity 2017.3.1f1 Android构建CommandInvokationFailure问题(空项目也触发)
我经手过不少Unity 2017.x版本的Android构建故障,你这个空项目都触发相同错误的情况,完全可以排除代码问题,核心肯定出在Unity与Android构建环境的兼容性匹配或者系统配置的细节上——毕竟iOS构建正常,说明Unity本身的基础功能没问题。结合你已经尝试过的方案,给你几个针对性的解决步骤:
1. 严格对齐Unity 2017.3.1f1要求的环境版本
Unity 2017.x系列对Android环境的版本要求非常苛刻,不是随便换个SDK/JDK版本就行的:
- JDK必须用Oracle的1.8.x版本(别用OpenJDK,也别碰JDK9),而且要确保是和系统位数匹配的安装包(比如64位系统装64位JDK)
- SDK Tools选26.1.1版本,你之前换的25版本其实和2017.3.x不兼容,这很可能是问题根源
- Build Tools对应选26.0.2版本,和SDK Tools版本严格匹配才能避免工具链冲突
操作的时候,一定要在Unity的Edit > Preferences > External Tools里手动指定JDK、SDK的路径,别让Unity自动检测——路径里绝对不能有中文、空格或者特殊字符,这是很多人忽略的大坑。
2. 彻底清理Unity缓存与构建残留
有时候旧缓存会干扰新的构建流程,步骤如下:
- 完全关闭Unity,删除项目根目录下的
Library、Temp、Obj三个文件夹 - 重新打开Unity,让它自动生成新的项目文件
- 另外,找到系统用户目录下的
.android文件夹(比如Windows下是C:\Users\你的用户名\.android),删除里面的cache文件夹,清除SDK的旧缓存
3. 检查系统环境变量的正确性
环境变量配置错误也是常见诱因:
- 确保
JAVA_HOME指向JDK 1.8的根目录(比如C:\Program Files\Java\jdk1.8.0_202),别指向JRE文件夹 - 把
%JAVA_HOME%\bin添加到系统PATH的最前面,避免系统优先调用其他版本的JDK - 确认
ANDROID_HOME指向你的Android SDK根目录,同样路径不能有中文或特殊字符
4. 重新安装Unity的Android支持模块
有时候Unity的Android模块安装不完整会导致隐性故障:
- 如果用Unity Hub管理版本,找到2017.3.1f1版本,勾选Android Support模块重新安装
- 不用Hub的话,直接运行Unity的安装程序,选择“修复”选项重新安装Android模块
5. 查看详细错误日志定位根源
CommandInvokationFailure只是上层的笼统报错,你可以点击错误提示里的Show Log,查看具体的命令执行失败信息——比如是aapt命令出错,还是dx工具崩溃。举个例子,如果是aapt报错,大概率是SDK里的Build Tools损坏,重新下载对应版本的Build Tools就能解决。
如果以上所有步骤都试过还是不行,建议换一个系统用户账户试试,有时候系统权限或者用户配置文件损坏也会导致这类莫名其妙的构建问题。
内容的提问来源于stack exchange,提问作者Jqui
相关产品推荐
相关产品推荐

