【发布时间】:2021-10-26 03:07:26
【问题描述】:
我从 git 加载一个项目并在 MacBook 上成功构建它。当我在终端窗口中输入“./gradlew assembleRelease”时,出现错误:
bash: ./gradlew: No such file or directory
所以我检查了 gradlew 是否在项目目录下,但我找不到它。 但我仍然可以从“Gradle 项目”窗口运行任务。
怎么了?
【问题讨论】:
我从 git 加载一个项目并在 MacBook 上成功构建它。当我在终端窗口中输入“./gradlew assembleRelease”时,出现错误:
bash: ./gradlew: No such file or directory
所以我检查了 gradlew 是否在项目目录下,但我找不到它。 但我仍然可以从“Gradle 项目”窗口运行任务。
怎么了?
【问题讨论】:
gradlew 脚本是所谓的 Gradle 包装器,一个独立的脚本,允许人们在不安装 gradle 的情况下运行 Gradle 任务。然而,它不必来执行 Gradle 任务,它绝对是可选的。
你可以通过执行任务在你的项目中生成 Wrapper
gradle wrapper
之后,您可以使用./gradlew 脚本而不是来自PATH 的gradle
要指定 Gradle 版本,请在命令行上使用 --gradle-version。 只需执行命令:
gradle wrapper --gradle-version <your gradle version>
在这里查看更详尽和全面的解释:https://docs.gradle.org/current/userguide/gradle_wrapper.html
【讨论】:
build 任务不依赖于wrapper 任务,这是有道理的:构建项目不应该包括构建 gradle 包装器,它应该使用现成的包装器
gradlew 文件并且您没有安装gradle,则您必须安装gradle。然后,如果你愿意,你可以生成gradle wrapper。
brew install gradle,然后运行这个答案中的命令。
就我而言,我将 gradlew 文件从 windows(10) 复制到 linux(centos7)。
所以不得不跑
[user@server]$ dos2unix gradlew
它奏效了。
更新:
如果您像我一样从 Windows 复制。
做一件事,在记事本++中打开它,转到查看->显示符号->显示行尾。
您可以注意到CRLF 这是 Windows EOL。现在转换它,这样您就不必重做它。
转换记事本++ -> 编辑 -> EOL 转换 -> Unix (LF)
就是这样,同时推动 git fiddle .gitattributes
【讨论】:
没有这样的文件或目录(bash: ./gradlew)
将所有用户的执行权限添加到现有权限中
chmod +x gradlew
【讨论】:
检查android目录是否存在gradlew。
如果 gradlew 不存在,则执行以下命令。
在命令行工具上,将目录更改为 android
$ cd 安卓
$ gradle wrapper --gradle-version 6.0.1(你可以保留你想要的版本)
这将使用默认配置生成与 gradle 相关的所有内容。
【讨论】:
对我来说,其中一个 XML 文件中缺少数据绑定变量的名称。
【讨论】:
在我的例子中,我已将项目从 Windows 机器移动到 Mac,它包含回车符“\r”。
brew install dos2unix
find . -type f -exec dos2unix {} \;
./gradlew clean build
【讨论】:
您应该添加执行权限。
使用chmod 777 gradlew 或chmod +x gradlew。
【讨论】: