【腾讯Bugly干货分享】Android 开发必备知识:我和 Gradle 有个约会.docVIP

  • 6
  • 0
  • 约7.58千字
  • 约 20页
  • 2016-04-13 发布于浙江
  • 举报

【腾讯Bugly干货分享】Android 开发必备知识:我和 Gradle 有个约会.doc

【腾讯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 仓库就可以最终锁定一个确定版本的构件供你使用了。

文档评论(0)

1亿VIP精品文档

相关文档