像npm一样在Andriod项目中引入Gradle依赖

移动开发 Android
作为 Android 开发人员,有没有羡慕过 node.js 的导入三方库的方式,node.js 社区为开发者准备了一个快速可靠的依赖管理库。这样的依赖管理库,让 node.js 导入依赖库,非常的方便,一行代码就搞定了,npm install <library>。

 [[206604]]

一、前言

作为 Android 开发人员,有没有羡慕过 node.js 的导入三方库的方式,node.js 社区为开发者准备了一个快速可靠的依赖管理库。这样的依赖管理库,让 node.js 导入依赖库,非常的方便,一行代码就搞定了,npm install <library>。

为了搞定这个问题,一个国外的程序员 @cesarferreira 做了一个库来支持这样的功能 drone。

Github 地址:

https://github.com/cesarferreira/drone

接下来我们来看看 drone 的使用和细节原理。

二、drone 的使用细节

2.1 什么是 drone

drone 在 Android 项目中,实现了 npm 对 node.js 的功能。

它维护了 50 个常用的第三方依赖库库,差不多可以覆盖 90% 我们常用的开源库,例如:rxjava、Gson、Picasso、recyclelerview-v7 等。

当我们需要使用某个库的时候,只需要一行命令,就可以将这个库引入到我们工程的 build.gradle 的 dependencies 中。这个过程中,会默认为我们引入***的版本,无需关心应该引入的三方库的***版本号。

算是 Android 下的一个非常好用的导包工具。

因为本身 drone 是使用 node.js 实现的,所以这里需要 npm 的环境才可以安装它,node.js 基本上就是无脑安装,这里默认你已经安装了 node.js 的环境了。

安装 drone 也非常的简单,一行代码搞定。

  1. npm install -g drone 

安装完成之后,我们就可以正常使用它了。

2.2 使用 drone

使用 drone 添加依赖库,只需要通过 drone add 命令即可。

  1. drone add creator/library module 

drone add 需要指定库的别名和需要导入的 App Module。

可以看到,它会主动将我们需要库查询出来,插入到 build.gradle 的 dependencies 中。

drone 的支持的功能还有很多,增删改查都是最正常的操作,其他操作可以查看它的帮助文档。

drone 的使用还是非常方便简单的,基本上看看帮助文档就可以搞定了,就不再展开说了。

三、drone 的原理

drone 的使用非常的简单,不知道你有没有好奇它是如何维护这些库的。我们只是指定了一个库的名称,它就能立刻确定它***的稳定版版本号。

接下来我们来继续探索一下 drone 的原理,满足好奇心。

首先看看 drone 的整个项目结构,它是完全使用 node.js 开发完成的,它所有支持的命令都被定义在 tasks 目录下。

而 drone 的入口是 router.js ,所有的命令都需要通过 router.js 进行分发。

我们找一个最常用的命令 add 来看看它的具体细节。

可以看到,它首先使用 QuickSearch.search() 查找我们输入的库的细节,然后使用 hive.getWithVersions() 查找到我们需要的三方库***稳定版的版本号。最终使用 handleGradleDependencyInjection() 方法,将它输入到我们指定 Module 的 build.gradle 的具体位置。

handleGradleDependencyInjection() 方法不用看,应该就是一个 io 操作,去写 build.gradle 文件。

先来看看 QuickSearch.search() 方法。

这里通过 string-similarity 这个字符串相似度比较库,去查找出我们需要引入的库的细节,这些信息,被配置在 constants.js 文件中。

可以看到,这里被另外一个 github 开源库 drone-hive 所维护。

https://github.com/cesarferreira/drone-hive

drone-hive 中,维护了比较常用的 50 个开源库的信息。

我们随便找一个看看,这里看看 airbnb/lottie-android。

可以看到,它维护了开源库的各项信息,而其中的 repository 指定了开源库的类型,它最终可以用于区分我们使用什么方式去获取***的版本号。

这个逻辑在 metadata.js 文件中。

例如这里查看的 airbnb/lottie-android 就是通过 jitpack.io 进行查询,当然 drone 是使用 jitpack.io 的查询 Api 去查询到***的版本号,这里不再展开细节看了。

四、小结

到这里,我好奇的地方就得到了解决,在来回顾一下这些细节。

drone 主要用于 Android 开源库的管理。

drone 可以自动操作 Gradle dependencies。

drone 维护的 50+ 的开源库,所有的信息维护在另外一个库中,drone-hive。

drone-hive 维护了这些开源库的信息,在不同库的 xxx/xxx.json 文件中。

根据在 hive 中配置的 repository 类型,使用不同的方式,获取稳定版版本号。

最终使用 io 操作,修改我们指定 Module 的 build.gradle 文件。

【本文为51CTO专栏作者“张旸”的原创稿件,转载请通过微信公众号联系作者获取授权】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2023-04-05 14:19:07

FlinkRedisNoSQL

2023-02-15 08:17:20

VSCodeTypeScrip

2013-12-17 09:02:03

Python调试

2013-12-31 09:19:23

Python调试

2022-12-21 15:56:23

代码文档工具

2023-05-23 13:59:41

RustPython程序

2021-05-20 08:37:32

multiprocesPython线程

2013-08-22 10:17:51

Google大数据业务价值

2015-03-16 12:50:44

2015-02-05 13:27:02

移动开发模块SDK

2011-01-18 10:45:16

乔布斯

2012-06-08 13:47:32

Wndows 8Vista

2023-05-22 19:31:02

ldd命令Linux

2020-06-10 15:29:36

微软开发App

2021-12-14 19:40:07

Node路由Vue

2012-03-21 10:15:48

RIM越狱

2017-05-22 10:33:14

PythonJuliaCython

2021-09-07 10:29:11

JavaScript模块CSS

2022-01-10 21:00:12

LinuxGNOME截图工具

2020-03-09 10:00:35

人工智能机器学习技术
点赞
收藏

51CTO技术栈公众号