前言
本篇文章用来记录在平时开发过程中遇到的一些关于gradle的问题,有常用的命令,有一些常见或不常见的问题,会持续更新,遇到了就会加入进来。
目录
- 常用命令
- 常见问题
常用命令
以下的所有命令,都是在项目的Terminal
中运行
ls ~/.gradle/wrapper/dists/
用来查看下载过的所有的gradle版本。在我们gradle-wrapper.properties
文件中,可以看到当前项目引用的gradle
版本;在项目根目录的build.gradle
中,我们可以看到当前依赖的gradle
插件版本,插件版本和gradle
版本是要对应的。如下图所示:
上面是Android官方文档给出的对照表,举个例子:
现在我项目用的插件版本是3.5.3
那么参照上面的对照表我对应的gradle版本是5.4.1
,需要在5.4.1-5.6.4
之间选择一个版本
注意:请勿在版本号中采用动态依赖项(例如 ‘com.android.tools.build:gradle:2.+’),否则可能会导致意外的版本更新和难以解析的版本差异。
有了上面的命令,你就可以根据你当前项目的插件版本,在已经下载的gradle版本中选择了,当然如果列表中没有,还是需要单独下载。
常见问题
gradlew: command not found(Mac版)
这个问题是发生在mac上,我在项目的Terminal
中,执行gradlew assembleDebug --info
想查看下编译打包时的日志信息,结果报出了:
zsh: command not found: gradlew
刚开始以为是自己的环境配置有问题,试了试自己的adb命令是好使的。最后在搜了一下,原来在Linux
或Unix
上执行需要加上./
,命令就变成了这样:
./gradlew assembleDebug --info
具体的原因是这样的:
你直接执行脚本的话,shell会在变量包含的路径里去找文件。但是,linux/unix为了安全的问题,并没有把当前路径放到PAHT中,并且也不推荐这样做.
当然我看网上也有避免这个错误的方法,配置一下path
就可以了,具体的配置方式,去网上搜一下就好了。
可能在你加上./
之后,执行命令的时候,又有新的问题出现了:
zsh: ./gradlew: Permission denied
没权限!
这个我们需要在执行下一个命令
chmod +x gradlew
就在当前的目录执行就好,之后再次执行gradlew assembleDebug --info
就可以了。
放一张图
说一点,但是我在一个项目中,执行了chmod +x gradlew命令以后,还是说没权限,然后我就把命令变成了chmod +x *,之后就好使了,不知道什么原因。只在一个项目中出现了这个问题,不建议直接使用这种方式,因为我不知道会不会有什么影响,但如果上面的命令你试了以后确实不好使,可以尝试一下这种方式。当然如果有知道原因的小伙伴可以告诉我一下。