前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >杂篇:一代版本一代神[-Gradle-]

杂篇:一代版本一代神[-Gradle-]

作者头像
张风捷特烈
发布2019-03-04 11:05:17
1.2K0
发布2019-03-04 11:05:17
举报
零、前言

一、Gradle简介
1.我与Gradle的邂逅

百分之八十的Gradle使用者应该都是从AndroidStudio接触Gradle


2.构建工具

3.Gradle是什么,怎么安装?

一个基于Groovy语言的开源项目自动化构建工具 如果你用过AndroidStudio,Gradle已经被你下好了,直接打开下面的路径 你可以将bin目录加入环境变量,下面的几点就不用看了,


3.1:确保jdk已安装

3.2:下载Gradle,地址:

将解压后的bin文件夹目录加到环境变量即可,

下载Gradle.png

添加环境变量.png


3.3:查看是否安装正确

二、Groovy语言
1.Groovy简介

2.创建一个gradle项目

创建一个gradle项目


3.修改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


4.Java VS Groovy

Java VS Groovy


5.Groovy的特色

groovy简介.png



三.创建项目
1.新建项目

Idea会为我们自动生成项目结构

创建新的module.png


2.写一个方法

3.导出jar包

打jar包非常简单,点两下就行了,(其中字符集的问题后面解决,不影响jar包使用)

打jar包.png


4.使用jar包

打了jar包就用用吧,虽然实际中已经很少用jar包依赖了,这里演示一下 新建一个App的module,将jar包导入,并依赖,然后就能正常使用了

引入jar包.png


四、关于Gradle构建脚本

gradle根目录\src\core-api\org\gradle\api\Project.java是一个interface 它定义了一个项目类,而build.gradle中即使用了项目对象的属性和方法 这两个类是Gradle的核心,其中定义了很多方法,可以在.gradle文件中随意调用

实体类.png


1.解放双手task
1.1 :简单的创建文件夹任务

public interface Task extends Comparable<Task>, ExtensionAware Task是一个接口,可以助你完成一些无聊的工作,这里以创建三个文件夹为例

创建任务.png

如果上面的看懂了,这里用projectName替换一下项目名 这样就可以在任意项目里创建这三个文件夹了,


1.2:Task之间的依赖dependsOn

也就是在执行之前,先执行被依赖的Task

task依赖.png


2.构建的生命周期

构建的生命周期及回调.png


3.依赖管理
3.1.简介

关于implementation和compile的区别,这里简单说一下。可详见:

依赖管理.png


3.2:mavenCentral与依赖使用

maven仓库相比大家都知道吧,简单说一下怎么查看一个依赖(okhttp为例):仓库网址 可以看到okhttp的工件坐标(group,name,version),它确定了唯一的存在

寻找okhttp依赖.png

添加依赖.png


3.3:okhttp的使用

访问网络成功.png

缓存到本地的源码.png


3.4:使用其他的仓库

前面找不到就找下一个


4:版本冲突
4.1:版本冲突简介

okhttp:3.13.1依赖了okio:1.17.2,如果项目中再依赖okio:2.2.2就会版本冲突 默认情况下版本冲突时,Gradle会自动使用最高版本,所以我们并不怎么烦神

版本冲突.png

版本冲突-.png


4.2:自己解决版本冲突

自动使用最高版本,大多数情况都适用,但你还是有自定义解决方案的机会的 首先,显示版本冲突在哪里

显示版本冲突.png


4.3:强制使用某版本

强制使用制定版本.png


4.4:排除一个依赖中的依赖

五、项目的模块化构建及测试
0.项目的模块化

创建三个module.png


1.settings.gradle

一个项目只有一个,用来管理子模块名称


2.添加模块间依赖关系

implementation project(":模块名")-或compile 注意:项目间的传递型依赖要用compile,不然引用不到

四个模块间的依赖关系.png


3.Gradle信息的公共处理

每个build.gradle都有的东西,统一处理一下,以后改起来方便 在根项目下的build.gradle里使用allprojects


4.使用gradle.properties统一配置参数

5.测试

idea自动生成测试方法.png

build.png


6.发布

使用maven-publish插件,发表到中央仓库挺麻烦的,还是自己搭个私服,或直接本地吧

maven.png

以上是Gradle在java中的使用,现在回头看一下Android里的Gradle,你应该更有感觉


六、Gradle在Android中
1.现在新建一个Android普通项目

2.现在新建一个JNI的Android项目

模块级的gradle文件多了externalNativeBuild

stringFromJNI抽取出来放在一个类中作为静态方法,然后生成so文件

jni目录结构.png

生成so文件.png


3.回到前一个工程,使用so文件

注意so文件在其他工程下需要保证接口名的一致,比不刚才的C++中的函数: Java_com_toly1994_jni_HelloJNI_stringFromJNI 该函数只能用在:com.toly1994.jni下的HelloJNI类中的stringFromJNI方法,错一个字都不行

使用so.png

使用so文件.png


4.资源分包

这里以布局为例,其他资源文件夹也一样

布局分包.png

public interface AndroidSourceSet接口定义很多文件的位置 都可以根据自己的需要,自行修改


5.混淆与发布

提一下:gradle.properties里的键值对可以在.gradle里直接使用 你可以将密码写在里面,.gitignore配置一下,不上传到github就行了

签名.png

发布.png


6.公共信息提取:ext

对于很多公共的东西,提取出来容易统一管理和修改,特别对于多模块项目而言

自定义参数.png


7.引用其他的.gradle文件

.gradle 文件一直被我认为是神圣的存在,不能乱改,更别提自己创建了 骑士gradle文件是可以相互引用的,下面通过创建文件夹小插件来说明

文件夹插件.png

插件部分你不用Groovy,全部用java写都可以,Groovy对java是兼容的 插件你也可以新建一个项目来制作,可以发布一下,给更多人使用 所以燃烧你的小宇宙,用gradle尽情偷懒吧!相信你会发现另一片天地!


后记:捷文规范
1.本文成长记录及勘误表

项目源码

日期

附录

V0.1--

2018-2-12

发布名:一代版本一代神[-Gradle-] 捷文链接:https://cloud.tencent.com/developer/article/1397785

2.更多关于我

笔名

QQ

微信

张风捷特烈

1981462002

zdl1994328

我的github:https://github.com/toly1994328 我的简书:https://www.jianshu.com/u/e4e52c116681 我的掘金:https://juejin.im/user/5b42c0656fb9a04fe727eb37 个人网站:http://www.toly1994.com

3.声明

1----本文由张风捷特烈原创,转载请注明

2----欢迎广大编程爱好者共同交流

3----个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正

4----看到这里,我在此感谢你的喜欢与支持

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.02.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 零、前言
  • 一、Gradle简介
    • 1.我与Gradle的邂逅
      • 2.构建工具
        • 3.Gradle是什么,怎么安装?
          • 3.1:确保jdk已安装
          • 3.2:下载Gradle,地址:
        • 3.3:查看是否安装正确
        • 二、Groovy语言
          • 1.Groovy简介
            • 2.创建一个gradle项目
              • 3.修改Gradle配置的方法
                • 4.Java VS Groovy
                  • 5.Groovy的特色
                  • 三.创建项目
                    • 1.新建项目
                      • 2.写一个方法
                        • 3.导出jar包
                          • 4.使用jar包
                          • 四、关于Gradle构建脚本
                            • 1.解放双手task
                              • 1.1 :简单的创建文件夹任务
                              • 1.2:Task之间的依赖dependsOn
                            • 2.构建的生命周期
                              • 3.依赖管理
                                • 3.1.简介
                                • 3.2:mavenCentral与依赖使用
                                • 3.3:okhttp的使用
                                • 3.4:使用其他的仓库
                              • 4:版本冲突
                                • 4.1:版本冲突简介
                                • 4.2:自己解决版本冲突
                                • 4.3:强制使用某版本
                                • 4.4:排除一个依赖中的依赖
                            • 五、项目的模块化构建及测试
                              • 0.项目的模块化
                                • 1.settings.gradle
                                  • 2.添加模块间依赖关系
                                    • 3.Gradle信息的公共处理
                                      • 4.使用gradle.properties统一配置参数
                                        • 5.测试
                                          • 6.发布
                                          • 六、Gradle在Android中
                                            • 1.现在新建一个Android普通项目
                                              • 2.现在新建一个JNI的Android项目
                                                • 3.回到前一个工程,使用so文件
                                                  • 4.资源分包
                                                    • 5.混淆与发布
                                                      • 6.公共信息提取:ext
                                                        • 7.引用其他的.gradle文件
                                                        • 后记:捷文规范
                                                          • 1.本文成长记录及勘误表
                                                            • 2.更多关于我
                                                              • 3.声明
                                                              领券
                                                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档