Gradle构建报错:指定初始化脚本不存在问题求助
解决Gradle初始化脚本不存在的问题
1. 排查构建命令的初始化脚本参数
这个报错大概率是构建命令里指定了-I或--init-script参数指向/tmp下的临时脚本,但该脚本已经被系统清理了。先检查你执行构建时的完整命令,比如有没有类似:
./gradlew build -I /tmp/xxx.gradle
如果是CI环境,确认CI工具是不是自动加了这个参数——可能是缓存或临时脚本生成逻辑出问题了,要么禁用这个自动配置,要么重新生成对应的脚本。
2. 改用项目内的固定初始化脚本(如果需要)
如果你的构建确实依赖自定义初始化脚本,别用/tmp里的临时文件,把脚本放到项目目录下(比如项目根目录/init.gradle),然后修改构建命令:
./gradlew build -I ./init.gradle
或者在gradle.properties里配置默认的初始化脚本路径,省得每次命令里加参数:
org.gradle.init.script=./init.gradle
3. 杀掉残留的Gradle守护进程
有时候临时脚本被删了,但Gradle daemon进程还在引用它,直接杀掉所有daemon进程再重新构建:
./gradlew --stop
4. 修复系统临时目录权限
Linux下/tmp目录的权限可能导致Gradle没法创建或读取临时脚本,执行下面的命令修复权限:
sudo chmod 1777 /tmp
1777权限能保证所有用户都能读写临时文件,同时防止误删他人的文件。
5. 绕开Flutter的中间处理(针对Flutter项目)
如果是用flutter build触发的报错,直接进入Android模块目录执行Gradle命令,绕开Flutter的中间脚本生成逻辑试试:
cd android ./gradlew clean app:assembleRelease
或者用Flutter命令时强制禁用构建缓存:
flutter build appbundle --no-build-cache
6. 检查项目内的动态脚本生成逻辑
看看项目根目录、gradle文件夹下的脚本(比如settings.gradle),有没有代码在动态生成并引用/tmp下的初始化脚本,如果有的话,改成用项目内的固定路径。
内容的提问来源于stack exchange,提问作者Magnus Just Carlsen
相关产品推荐
相关产品推荐

