- 6
- 0
- 约7.58千字
- 约 20页
- 2016-04-13 发布于浙江
- 举报
【腾讯Bugly干货分享】Android 开发必备知识:我和 Gradle 有个约会
Android 开发必备知识:我和 Gradle 有个约会
腾讯Bugly特约作者:霍丙乾
真正开始近距离接触编程其实是在2012年,年底的时候带我的大哥说,咱们这个 app 发布的时候手动构建耗时太久,研究一下 ant 脚本吧。
那个时候连 HashMap 都不知道是啥,可想开发经验几乎为零,一个小小的 ant 脚本看得我真是深深地感受到了这个世界充满的恶意。好在后来硬着头皮搞明白了什么 target 之类的鬼东西,不然就没有然后了。
Maven /`meivn/
接触 Maven,完全是因为读陈雄华的《Spring 实战》,他的源码居然是用 Maven 构建的,结果 Spring 学得一塌糊涂,Maven我倒是用顺手了。。
跟 Ant 一样,Maven 可以用来构建 Java 工程;跟 Ant 一样,Maven 的配置用 xml 来描述;但,Maven 可以管理依赖,它可以让你做到“想要什么,就是一句话的事儿”。比如我想要个 gson,Maven 说可以,你记下来我带会儿构建的时候给你去取。
真是让你当大爷呢。不过,Maven 这家伙学起来有点儿费劲,很多初学的时候在搭建环境的时候就被搞死了——你以为是因为 Maven 的学习曲线陡峭吗?当然不是,是因为当初 Maven 的中央仓库被 x 了,所以你就天天看着 cannot resovle dependencies 玩就好了。
后来 OSChina 傍上了阿里这个爸爸,就有了 。我去年找工作落定之后,想着做点儿什么的时候,发现 估计被阿里爸爸关禁闭,死了几天,现在又活过来了。那又怎样呢,反正中央仓库被 x 的事情也已经成为过去。
13年的时候,我兴奋地跟前面提到的大哥说 Maven 是个好同志的时候,大哥说,Google 推荐用 Gradle。。所以,我想 Gradle,你爹是不是 Google。。或者至少是个干爹吧。
其实这都不重要了,毕竟 Gradle 实在是好用。比起前面两位的 xml 配置的手段,直接用代码的方式上阵必然是灵活得多。不仅如此,Gradle 居然可以使用 Maven 仓库来管理依赖,就像是一个简易版的 Maven 一样,如果不是看不到 pom 文件,你都还以为你仍然在使用 Maven(当然,由于你在用 Maven 的仓库,所以你自然也是离不开 Maven 的)。哦,你是 Ant 用户啊,那也没关系啊,不信你看:
1、用 Gradle 构建
1.1 工程结构
如图所示,这是一个不能更普通的 android 的 gradle 工程了。
根目录下面的 settings.gradle 当中主要是用来 include 子模块的,比如我们这个工程有一个叫做 app 的子模块,那么 settings.gradle 的内容如下:
根目录下面的 build.gradle 包含一些通用的配置,这些配置可以在各个子模块当中使用。
perties 文件包含的属性,会成为 project 的 properties 的成员,例如我们添加了属性 hello,
然后我们在 build.gradle 当中创建 task:
输出地结果是一样的:
perties 这个文件在 android 工程当中会遇到,我们通常在其中设置 android 的 sdk 和 ndk 路径。当然,这个 android studio 会帮我们设置好的。为了更清楚地了解这一点,我把 android 的 gradle 插件的部分源码摘录出来:
SDK.groovy,下面的代码主要包含了加载 sdk、ndk 路径的操作。
BasePlugin.groovy,通过这两个方法,我们可以在 gradle 脚本当中获取 sdk 和 ndk 的路径
例如:
上面给出的只是最常见的 hierarchy 结构,还有 flat 结构,如下图1为 flat 结构,2为 hierarchy 结构。有兴趣的话可以 Google 一下。
这一小节的出场顺序基本上跟 build.gradle 的顺序一致。
1.2.1 Repository和Dependency
如果你只是写 Android 程序,那么依赖问题可能还不是那么的烦人——如果你用 Java 写服务端程序,那可就是一把辛酸一把泪了。
仓库的出现,完美的解决了这个问题,我们在开发时只需要知道依赖的 id 和版本,至于它存放在哪里,我不关心;它又依赖了哪些,构建工具都可以在仓库中帮我们找到并搞定。这一切都是那么自然,要不要来一杯拿铁,让代码构建一会儿?
据说在 Java 发展史上,涌现出非常多的仓库,不过最著名的当然是 Maven 了。Maven 通过 groupId 和 artifactId 来锁定构件,再配置好版本,那么 Maven 仓库就可以最终锁定一个确定版本的构件供你使用了。
您可能关注的文档
- ps教程:保留细节磨皮法.doc
- Python处理JSON.doc
- PullSDK接口使用指南_中文.doc
- QP15A0监视和测量设备控制程序.doc
- QQ被忽视的营销神器 最新实操干货分享.doc
- qtp测试动态对象识别-描述性编程(实验6).doc
- OptiX OSN1500&2500&3500日常维护.ppt
- QTP(UFT)手册.doc
- Rogues G男装 时尚的无限可能[品潮网].doc
- Science:新型艾滋病预防药物问世.ppt
- 全过程工程管理造价咨询工程监理项目服务方案投标方案(技术部分).doc
- 招标代理服务投标技术服务方案(技术方案).doc
- AI大模型与AIGC技术在公安领域的应用解决方案(99页 PPT).pptx
- 工业4.0智能制造数字工厂规划方案.pptx
- 树立社会主义核心价值观.docx
- 三年(2023-2025)中考历史真题分类汇编(全国)专题21 科技文化与社会生活(解析版).docx
- 2025年中考道德与法治真题完全解读(吉林卷).pdf
- 2025年中考道德与法治真题完全解读(安徽卷).pdf
- 三年(2023-2025)中考历史真题分类汇编(全国)专题14 人民解放战争(解析版).pdf
- 三年(2023-2025)广东中考历史真题分类汇编:专题03 中国近代史(八年级上册)(解析版).docx
最近下载
- B0205精密自动车床操作说明书.pdf VIP
- 山东省济南市历下区四年级(上)期末数学试卷.pdf VIP
- 统编人教版六年级语文上册全册课后习题答案.pdf VIP
- 苏州中学伟长试验部历年招生试题.docx VIP
- 2025湖北荆州市公安县事业单位急需紧缺人才引进86人笔试备考试题及答案解析.docx VIP
- 2024届四川省成都市金堂县中考联考历史试题含解析.doc VIP
- 丹佛斯磁悬浮压缩机轴承原理及控制.pdf VIP
- 2026人教版小学三年级下册英语期末综合试卷(4套含答案解析).pdf
- 山东省济南市历下区2023-2024学年四年级上学期语文期末考试试卷(含答案).pdf VIP
- 2025湖北荆州市公安县事业单位急需紧缺人才引进86人笔试备考题库及答案解析.docx VIP
原创力文档

文档评论(0)