2KB项目,专业的源码交易网站 帮助 收藏 每日签到

给 Android 开辟者的 Gradle 入门指南

  • 时间:2019-06-01 12:28 编辑:2KB 来源:2KB.COM 阅读:416
  • 扫一扫,手机访问
  • 分享
摘要:
Gradle Android 开辟 英文原文:Beginner’s Guide to Gradle for Android Developers

本文的目标是为您供给关于 Gradle 的初级概述,和在开辟 Android 应用次第时如何适应全部构建系统。 我将经过 Gradle 和 Gradle 的 Android 插件的根底常识,和新的 Android 项目附带的默许 build.gradle 剧本来实行讲述。

本文不会教你如何编写定制的 Gradle 剧本或任何类型的Tools。正如题目所说,这是给真正意义上的初学者的文章。 

布景故事

我先坦率一下:我主要是一位 iOS 开辟职员。在全部职业生活中,只需四分之一的时间用于开辟 Android 应用次第。正由于如斯,我历来没有真正了解 Gradle 是甚么。当我点击 Android Studio 中的绿色播放按钮时,我晓得这是“Task”,但我不晓得它实际上做了甚么。

当我看到“ Gradle Build Running ”这个词跨越 10 秒时,这让缺少相干常识的我十分不耐心。 “有甚么需求这么久?”我会问 Android Studio ,盼望有某种迹象标明它不单单是卡住了。在Task中,每当我看到一个 Android 开辟者茫然地盯着屏幕,我常常恶作剧地问他们:“你是在等 Gradle 构建吗?

超等我觉得懊丧,并决议找出要如何减少构建时间。我看了一个名为“放慢 Android 的 Gradle 构建”的 Google I/O ’17  的演讲,置信会解开一切我想要的晋升 Gradle 速度的关键。

40分钟以后,我意想到我对 Gradle 全无所闻,所以我基本没有机会做得更好。 我停下脚步,决议如今是去了解 Gradle 的时分了。

根底常识

为了处理这个问题,让我们先弄明白一些Task:

  1. Android Studio 不晓得如何将 Java&Kotlin 代码编译成 APK 文件。

  2. Gradle 不晓得如何将 Java&Kotlin 代码编译成 APK 文件。

是的,你没看错。

Gradle 自身真实不晓得如何编译 APK 文件,由于 Gradle 实际上是一个通用的构建Tools。它不限于构建 Android 应用次第。在 Gradle 的 GitHub 堆栈中,它被刻画为:

...构建Tools,侧重于构建主动化和支撑多言语开辟。假定您在任何平台上构建、测试、发布和安排软件,Gradle 供给了一个灵敏的模子,可以支撑从编译和打包代码到发布的全部开辟性命周期。 Gradle 自身实际上真实不能做太多。一切有效的功用都来自丰厚的插件生态系统。把你添加到 Android 应用次第中的一切第三方库视为插件。您可使用这些插件来扩大应用次第的功用,就像 Gradle 使用插件来扩大本人的功用一样。

有非常多与 Gradle ***在一同的插件,和更多可以下载的插件。可是,假定你浏览 Gradle 附带的插件列表,则会发明在该页面上找不到“Android”。

Android Plugin for Gradle

Android Plugin for Gradle 是一个使 Gradle 可以将您的代码编译成用你的密钥署名 APK 文件的插件,乃至将 APK 安装到你的模仿器或测试装备上。这个插件驱动你的全部构建系统。

没有它,Gradle 就没法晓得如何对代码做任何Task。这也就是我后面说的 Android Studio 和 Gradle 不晓得如何构建你的 Android 项目:这个插件是 Android Studio 和 Gradle 之间的邪术链。

深化剧本

如今我们曾经把握了一些根底常识,接下来看看如何转化为平常完成。当你在 Android Studio 中启动一个全新的项目时,会取得以下文件:


这些文件是甚么?

一切带有“ gradle ”文字的文件都用于为我们的 Android 项目建立 Gradle 。外面存在多个文件,由于它们都有分歧的用处。

Gradle Wrapper

gradle-wrapper.properties 文件有一个随便的目标:决议在构建项目时使用哪一个 Gradle 版本。它将随后会主动为你下载并保管该版本的 Gradle 。假定你在 Mac 上使用,运转下面召唤 ls ~/.gradle/wrapper/dists/ 你就能够够看到 Gradle Wrapper 曾为你下载过的一切 Gradle 版本。

(gradle-wrapper.properties)

留意你的 Gradle 版本是自力于你的 Android 插件版本的。在本文撰稿时,今朝最新的 Gradle 版本是 v4.3 。Android Studio 仍然默许使用 v4.1 ,所以假定你甘愿,你可以很平安的将版本升级到 v4.3 。

settings.gradle

settings.gradle 文件是保管在你告诉 Gradle 的地方,即你的工程一切的子工程 /module 目次下。这是经过 include 召唤完成的。假定你将此外一个模块添加到你的工程中,Android Studio 将会主动将其添加到这个文件中。

build.gradle

从 Gradle 的角度来看,我们的工程被以为是一个多工程构建,此中你具有一个根项目和一个到多个子工程。从 Android 开辟者的角度来看,这些子工程被称为 module(模块)。

这就是为何你会看到两个 build.gradle 文件的启事。一个是给根项目标,此外一个是给随同着你的项目标 app 模块的。让我们先看看你的根项目标格局吧。

(根项目标 build.gradle )

  1. 这个完整的 buildscript{} 块用于告诉 Gradle 剧本自身,关于编译本项目需求的那些。

  2. 我们在这个 buildscript 中声了然 Android Gradle 插件的依托性。“3.0.0” 表现要使用的插件版本。

  3. 我们告诉 Gradle 我们需求到 谷歌() Maven 代码库和 jcenter() 代码库中检索一些事项。

  4.  在Gradle 项目中添加额定的属性,以支撑它可以在全部 Gradle 项目中是可拜访的。换言之,这是 Gradle 风格的全局变量。我们可以经过使用决议所导入的 kotlin-gradle-plugin 的版本的方法来检查该变量的值。

  5. 正如名字所表示的,allprojects{} 块被用于告诉 Gradle 关于一切需求编译的子项目,并使用这个代码库聚集来处理一切需求的依托项。

(app 模块的 build.gradle)

  1. 起首,我们应用真实的 Android 插件,然后我们使用其扩大插件来应用 Kotlin Android 插件。

  2. 此完整的 android{} 块Task的独一启事是由于我们央求 Gradle 使用之条件到的 Android 插件。我坚信你对修正该模块外部的值十分熟习,但你能否对一切可能放入该块的值有过猎奇呢?善任务是它在此都被文档化了!

  3. 这里就是你添加 Gradle 所依托的第三方库的地位。留意在你的 app 的 build.gradle 中并没有 repositories{} 块。既然我们曾经在根项目标 allprojects{} 块中声了然,这里就没有需求了。

  4. 还记得我们在根构建文件中的全局变量吗?是的,这里就是起沾染的地方。最好采取相似管理你所支撑库的版本一样的计策多是个不错的主义,这可以包管他们都是用一致个版本。

Gradle Task

如今我们透过剧本,另有一件你必需晓得的关于 Gradle 的事:Task。

Task是根本的Tools,Gradle 可以每当被触发时生成,记得早前(上文)我说 Android Studio 真实不晓得如何编译你的代码?由于在 Android Studio 点击大绿色的 play 按钮会触发一个详细的Task在 Gradle 履行。

在右下角,点击 “Gradle Console” 按钮去翻开 Gradle Console ,然后点击 play 按钮运转 app ,一大堆召唤会呈现,但我们只关怀顶部的:

Executing tasks: [:app:assembleDebug]

我们只会谈 Gradle 履行的 assembleDebug Task,我们可以经过召唤行来做类似的事,点击右边的 Terminal 按钮并运转本段代码:./gradlew assembleDebug --console plain

其它翻译版本 (1) 加载中

瞧!你只是让 Gradle 运转与播放按钮残缺类似的召唤。有几件事要留意:

  1. ./gradlew 意味着使用 Gradle Wrapper 来交换 “vanilla” Gradle 。猛烈建议您不时使用 Wrapper 版本。

  2. assembleDebug 是你方才央求它运转的Task的称谓。

  3. --console plain 通知 Gradle 打印生成日记,就像你在 Android Studio 中看到的一样。残缺是可选的。

让我们运转最初一个召唤:./gradlew tasks

这个召唤将列出 Gradle 今朝在这个项目中所晓得的一切Task,并供给每一个Task的精练刻画。很酷吧?

如今,点击 Android Studio 右上角的 Gradle 标签。



哈哈!这是一样的Tools。这一部分只是列出了 Gradle 可认为这个项目运转的一切可能的Task。在这里双击 assembleDebug ,就能够够做到与方才在召唤行上做的一样的Task,而且和播放按钮做异样的Task。

假定您在 Android Studio 中运转“重建项目”召唤,同时坚持 Gradle 终端处于翻开外形,你将会心识到它所做的只是运转 clean Task,然后运转 assembleDebug 召唤。这就是我发明在重建项目之前运转清算项目是残缺不必要的,由于重建项目不管如何都会运转类似的 clean Task。

终了时的思考

我盼望这篇文章可以让你更好地了解 Gradle 如何适应你的开辟流程。为依照你们惯例的思考方法来写,这破费了我更长的时间,可是这对我来讲长短常值得的。我曾经从头看了“减速 Android Gradle 构建”的视频,我很骄傲地说,在看完后我不会再残缺迷失了。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译Task按照 CC 协议,假定我们的Task有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部