Gradle问题整合(持续更新)

前言

本篇文章用来记录在平时开发过程中遇到的一些关于gradle的问题,有常用的命令,有一些常见或不常见的问题,会持续更新,遇到了就会加入进来。

目录

  • 常用命令
  • 常见问题

常用命令

以下的所有命令,都是在项目的Terminal中运行

  • ls ~/.gradle/wrapper/dists/

gradle列表

用来查看下载过的所有的gradle版本。在我们gradle-wrapper.properties文件中,可以看到当前项目引用的gradle版本;在项目根目录的build.gradle中,我们可以看到当前依赖的gradle插件版本,插件版本和gradle版本是要对应的。如下图所示:

对照图

上面是Android官方文档给出的对照表,举个例子:

现在我项目用的插件版本是3.5.3

bulid.gradle

那么参照上面的对照表我对应的gradle版本是5.4.1,需要在5.4.1-5.6.4之间选择一个版本

gradle-wrapper.properties

注意:请勿在版本号中采用动态依赖项(例如 ‘com.android.tools.build:gradle:2.+’),否则可能会导致意外的版本更新和难以解析的版本差异。

有了上面的命令,你就可以根据你当前项目的插件版本,在已经下载的gradle版本中选择了,当然如果列表中没有,还是需要单独下载。

常见问题

gradlew: command not found(Mac版)

这个问题是发生在mac上,我在项目的Terminal中,执行gradlew assembleDebug --info想查看下编译打包时的日志信息,结果报出了:

zsh: command not found: gradlew

刚开始以为是自己的环境配置有问题,试了试自己的adb命令是好使的。最后在搜了一下,原来在LinuxUnix上执行需要加上./,命令就变成了这样:

./gradlew assembleDebug --info

具体的原因是这样的:

你直接执行脚本的话,shell会在变量包含的路径里去找文件。但是,linux/unix为了安全的问题,并没有把当前路径放到PAHT中,并且也不推荐这样做.

当然我看网上也有避免这个错误的方法,配置一下path就可以了,具体的配置方式,去网上搜一下就好了。
可能在你加上./之后,执行命令的时候,又有新的问题出现了:

zsh: ./gradlew: Permission denied

没权限!

这个我们需要在执行下一个命令

chmod +x gradlew

就在当前的目录执行就好,之后再次执行gradlew assembleDebug --info就可以了。

放一张图

执行流程

说一点,但是我在一个项目中,执行了chmod +x gradlew命令以后,还是说没权限,然后我就把命令变成了chmod +x *,之后就好使了,不知道什么原因。只在一个项目中出现了这个问题,不建议直接使用这种方式,因为我不知道会不会有什么影响,但如果上面的命令你试了以后确实不好使,可以尝试一下这种方式。当然如果有知道原因的小伙伴可以告诉我一下。

-------------The End-------------