百分之八十的Gradle使用者应该都是从
AndroidStudio
接触Gradle
的
一个基于
Groovy语言
的开源项目自动化构建工具
如果你用过AndroidStudio,Gradle已经被你下好了,直接打开下面的路径 你可以将bin目录加入环境变量,下面的几点就不用看了,
将解压后的bin文件夹目录加到环境变量即可,
下载Gradle.png
添加环境变量.png
创建一个gradle项目
注:目前2019-2-7日:
gradle-5.2
在Idea里Build失败,gradle-4.10.1
没问题 估计是Idea插件的版本未更新,PS(Android目前也是用的gradle-4.10.1
)
Idea插件报错.png
修改Gradle配置,出现下面的界面,Gradle插件就运行ok了
成功.png
Java VS Groovy
groovy简介.png
Idea会为我们自动生成项目结构
创建新的module.png
打jar包非常简单,点两下就行了,(其中字符集的问题
后面解决
,不影响jar包使用)
打jar包.png
打了jar包就用用吧,虽然实际中已经很少用jar包依赖了,这里演示一下 新建一个App的module,将jar包导入,并依赖,然后就能正常使用了
引入jar包.png
在
gradle根目录\src\core-api\org\gradle\api\Project.java
是一个interface
它定义了一个项目类,而build.gradle
中即使用了项目对象的属性和方法 这两个类是Gradle的核心,其中定义了很多方法,可以在.gradle文件中随意调用
实体类.png
task
public interface Task extends Comparable<Task>, ExtensionAware
Task是一个接口,可以助你完成一些无聊的工作,这里以创建三个文件夹为例
创建任务.png
如果上面的看懂了,这里用projectName替换一下项目名 这样就可以在任意项目里创建这三个文件夹了,
dependsOn
也就是在执行之前,先执行被依赖的Task
task依赖.png
构建的生命周期及回调.png
关于implementation和compile的区别,这里简单说一下。可详见:
依赖管理.png
maven仓库相比大家都知道吧,简单说一下怎么查看一个依赖(okhttp为例):仓库网址 可以看到okhttp的工件坐标(group,name,version),它确定了唯一的存在
寻找okhttp依赖.png
添加依赖.png
访问网络成功.png
缓存到本地的源码.png
前面找不到就找下一个
okhttp:3.13.1
依赖了okio:1.17.2
,如果项目中再依赖okio:2.2.2
就会版本冲突 默认情况下版本冲突时,Gradle会自动使用最高版本,所以我们并不怎么烦神
版本冲突.png
版本冲突-.png
自动使用最高版本,大多数情况都适用,但你还是有自定义解决方案的机会的 首先,显示版本冲突在哪里
显示版本冲突.png
强制使用制定版本.png
创建三个module.png
一个项目只有一个,用来管理子模块名称
implementation project(":模块名")
-或compile 注意:项目间的传递型依赖要用compile,不然引用不到
四个模块间的依赖关系.png
每个
build.gradle
都有的东西,统一处理一下,以后改起来方便 在根项目下的build.gradle
里使用allprojects
gradle.properties
统一配置参数idea自动生成测试方法.png
build.png
使用maven-publish插件,发表到中央仓库挺麻烦的,还是自己搭个私服,或直接本地吧
maven.png
以上是Gradle在java中的使用,现在回头看一下Android里的Gradle,你应该更有感觉
模块级的gradle文件多了
externalNativeBuild
将
stringFromJNI
抽取出来放在一个类中作为静态方法,然后生成so文件
jni目录结构.png
生成so文件.png
注意so文件在其他工程下需要保证接口名的一致,比不刚才的C++中的函数:
Java_com_toly1994_jni_HelloJNI_stringFromJNI
该函数只能用在:com.toly1994.jni下的HelloJNI类中的stringFromJNI方法,错一个字都不行
使用so.png
使用so文件.png
这里以布局为例,其他资源文件夹也一样
布局分包.png
public interface AndroidSourceSet
接口定义很多文件的位置 都可以根据自己的需要,自行修改
提一下:
gradle.properties
里的键值对可以在.gradle里直接使用 你可以将密码写在里面,.gitignore
配置一下,不上传到github就行了
签名.png
发布.png
ext
对于很多公共的东西,提取出来容易统一管理和修改,特别对于多模块项目而言
自定义参数.png
.gradle 文件一直被我认为是神圣的存在,不能乱改,更别提自己创建了 骑士gradle文件是可以相互引用的,下面通过创建文件夹小插件来说明
文件夹插件.png
插件部分你不用Groovy,全部用java写都可以,Groovy对java是兼容的 插件你也可以
新建一个项目来制作
,可以发布一下,给更多人使用 所以燃烧你的小宇宙,用gradle尽情偷懒吧!相信你会发现另一片天地!
项目源码 | 日期 | 附录 |
---|---|---|
V0.1-- | 2018-2-12 | 无 |
发布名:
一代版本一代神[-Gradle-]
捷文链接:https://cloud.tencent.com/developer/article/1397785
笔名 | 微信 | |
---|---|---|
张风捷特烈 | 1981462002 | zdl1994328 |
我的github:https://github.com/toly1994328 我的简书:https://www.jianshu.com/u/e4e52c116681 我的掘金:https://juejin.im/user/5b42c0656fb9a04fe727eb37 个人网站:http://www.toly1994.com
1----本文由张风捷特烈原创,转载请注明
2----欢迎广大编程爱好者共同交流
3----个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
4----看到这里,我在此感谢你的喜欢与支持