一、前言作为Android开发者,你有没有羡慕过node.js导入第三方库的方式?node.js社区为开发人员库准备了一个快速可靠的依赖管理。这样一个依赖管理库,让node.js引入依赖库,非常方便,一行代码,npminstall。为了解决这个问题,国外的程序员@cesarferreira做了一个库来支持这样的功能无人机。Github地址:https://github.com/cesarferreira/drone接下来我们来看看drone的使用和细节。2、drone的使用细节2.1dronedrone是什么在Android项目中,npm已经实现了node.js的功能。维护了50个常用的第三方依赖库,几乎可以覆盖我们常用开源库的90%,比如:rxjava、Gson、Picasso、recyclerview-v7等。当我们需要使用某个库时,我们只需要一行命令就可以将这个库导入到我们项目的build.gradle的依赖中。在这个过程中,默认会为我们导入最新版本,我们不需要关心应该导入的第三方库的最新版本号。是一款非常实用的Android引导工具。因为无人机本身是使用node.js实现的,所以需要npm环境来安装。Node.js基本上是一个简单的安装。这里,你已经默认安装好了node.js环境。安装drone也很简单,一行代码即可。npminstall-gdrone安装完成后,我们就可以正常使用了。2.2使用drone使用drone添加依赖库,只需要使用droneadd命令即可。droneaddcreator/librarymoduledroneadd需要指定library的别名和需要导入的AppModule。可以看到,它会主动查询我们需要的库,并插入到build.gradle的依赖中。无人机还支持许多其他功能。增删改查是最正常的操作。其他操作可以参考其帮助文档。无人机的使用还是很方便简单的。基本上看帮助文档就可以搞定,就不展开了。3.无人机的原理无人机的使用非常简单。不知大家是否好奇它是如何维护这些库的。我们只需指定一个库的名称,它就会立即确定其最新的稳定版本号。接下来,让我们继续探索无人机的原理,满足一下我们的好奇心。先看drone的整个项目结构,完全使用node.js开发,其支持的命令都定义在tasks目录下。drone的入口是router.js,所有命令都需要通过router.js下发。我们找一个最常用的命令add看看它的具体细节。可以看到,它首先使用QuickSearch.search()查找我们输入的库的详细信息,然后使用hive.getWithVersions()查找我们输入的三方库的***稳定版本的版本号需要。最后使用handleGradleDependencyInjection()方法将其输入到我们指定的Module的build.gradle的具体位置。handleGradleDependencyInjection()方法不用看,应该是写build.gradle文件的io操作。让我们从查看QuickSearch.search()方法开始。这里我们使用string-similarity这个字符串相似度比较库,来找出我们需要导入的库的详细信息。此信息在constants.js文件中配置。可以看到,这是由另一个github开源库drone-hive维护的。https://github.com/cesarferreira/drone-hivedrone-hive维护着50个常用开源库的信息。随便看看,这里是airbnb/lottie-android。可以看出,它维护了开源库的各种信息,repository指定了开源库的类型,最终可以用来区分我们是如何获取最新版本号的。此逻辑位于metadata.js文件中。比如这里查看的airbnb/lottie-android是通过jitpack.io查询的。当然,无人机是使用jitpack.io的查询Api来查询***版本号的,这里就不赘述了。4.总结至此,我的好奇心已经解决了,下面我们来回顾一下这些细节。drone主要用于Android开源库的管理。drone可以自动化Gradle依赖。drone维护了50+个开源库,所有的信息都维护在另一个库drone-hive中。drone-hive在不同库的xxx/xxx.json文件中维护了这些开源库的信息。根据hive中配置的repository类型,使用不同的方法获取稳定版本号。最后使用io操作修改我们指定Module的build.gradle文件。【本文为专栏作家“张扬”原创稿件,转载请微信♂联系作者获得授权】点此查看作者更多好文