成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

像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程序

2013-08-22 10:17:51

Google大數據業務價值

2021-05-20 08:37:32

multiprocesPython線程

2015-03-16 12:50:44

2015-02-05 13:27:02

移動開發模塊SDK

2012-06-08 13:47:32

Wndows 8Vista

2011-01-18 10:45:16

喬布斯

2021-09-07 10:29:11

JavaScript模塊CSS

2021-12-14 19:40:07

Node路由Vue

2012-03-21 10:15:48

RIM越獄

2017-05-22 10:33:14

PythonJuliaCython

2020-06-10 15:29:36

微軟開發App

2023-05-22 19:31:02

ldd命令Linux

2020-03-09 10:00:35

人工智能機器學習技術

2015-04-09 11:27:34

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区在线 | 亚洲综合大片69999 | 国产999精品久久久久久 | 日韩不卡一二区 | 久久69精品久久久久久国产越南 | 午夜视频一区二区 | 国产成人啪免费观看软件 | 激情av网站| 91视视频在线观看入口直接观看 | 国产女人与拘做视频免费 | 国产精品一区二区电影 | 老司机免费视频 | 精精国产xxxx视频在线 | 久久久91精品国产一区二区三区 | 中午字幕在线观看 | 欧美精品在线播放 | 超黄毛片| 欧美欧美欧美 | 国产成人精品一区二区三 | 久久99久久99精品免视看婷婷 | 久久91精品久久久久久9鸭 | 中文福利视频 | 国产精品日韩欧美一区二区三区 | 亚洲大片 | 日韩精品在线免费观看视频 | 在线观看av网站永久 | 中文字幕免费在线 | 久久国内 | 天堂一区二区三区 | 98久久| 妖精视频一区二区三区 | 久久机热| 久久久久久久久久久久亚洲 | 亚洲人成网站777色婷婷 | 欧美日韩久久 | 99久久免费精品视频 | 国产亚洲一区二区三区 | 日本精品视频 | 日本小电影网站 | 日本久久一区二区三区 | 精品国产一区二区三区性色av |