日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
像npm一樣在Andriod項(xiàng)目中引入Gradle依賴

一、前言

郫都ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

作為 Android 開發(fā)人員,有沒有羨慕過 node.js 的導(dǎo)入三方庫的方式,node.js 社區(qū)為開發(fā)者準(zhǔn)備了一個(gè)快速可靠的依賴管理庫。這樣的依賴管理庫,讓 node.js 導(dǎo)入依賴庫,非常的方便,一行代碼就搞定了,npm install 。

為了搞定這個(gè)問題,一個(gè)國外的程序員 @cesarferreira 做了一個(gè)庫來支持這樣的功能 drone。

Github 地址:

https://github.com/cesarferreira/drone

接下來我們來看看 drone 的使用和細(xì)節(jié)原理。

二、drone 的使用細(xì)節(jié)

2.1 什么是 drone

drone 在 Android 項(xiàng)目中,實(shí)現(xiàn)了 npm 對(duì) node.js 的功能。

它維護(hù)了 50 個(gè)常用的第三方依賴庫庫,差不多可以覆蓋 90% 我們常用的開源庫,例如:rxjava、Gson、Picasso、recyclelerview-v7 等。

當(dāng)我們需要使用某個(gè)庫的時(shí)候,只需要一行命令,就可以將這個(gè)庫引入到我們工程的 build.Gradle 的 dependencies 中。這個(gè)過程中,會(huì)默認(rèn)為我們引入***的版本,無需關(guān)心應(yīng)該引入的三方庫的***版本號(hào)。

算是 Android 下的一個(gè)非常好用的導(dǎo)包工具。

因?yàn)楸旧?drone 是使用 node.js 實(shí)現(xiàn)的,所以這里需要 npm 的環(huán)境才可以安裝它,node.js 基本上就是無腦安裝,這里默認(rèn)你已經(jīng)安裝了 node.js 的環(huán)境了。

安裝 drone 也非常的簡單,一行代碼搞定。

 
 
 
 
  1. npm install -g drone

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

2.2 使用 drone

使用 drone 添加依賴庫,只需要通過 drone add 命令即可。

 
 
 
 
  1. drone add creator/library module

drone add 需要指定庫的別名和需要導(dǎo)入的 App Module。

可以看到,它會(huì)主動(dòng)將我們需要庫查詢出來,插入到 build.gradle 的 dependencies 中。

drone 的支持的功能還有很多,增刪改查都是最正常的操作,其他操作可以查看它的幫助文檔。

drone 的使用還是非常方便簡單的,基本上看看幫助文檔就可以搞定了,就不再展開說了。

三、drone 的原理

drone 的使用非常的簡單,不知道你有沒有好奇它是如何維護(hù)這些庫的。我們只是指定了一個(gè)庫的名稱,它就能立刻確定它***的穩(wěn)定版版本號(hào)。

接下來我們來繼續(xù)探索一下 drone 的原理,滿足好奇心。

首先看看 drone 的整個(gè)項(xiàng)目結(jié)構(gòu),它是完全使用 node.js 開發(fā)完成的,它所有支持的命令都被定義在 tasks 目錄下。

而 drone 的入口是 router.js ,所有的命令都需要通過 router.js 進(jìn)行分發(fā)。

我們找一個(gè)最常用的命令 add 來看看它的具體細(xì)節(jié)。

可以看到,它首先使用 QuickSearch.search() 查找我們輸入的庫的細(xì)節(jié),然后使用 hive.getWithVersions() 查找到我們需要的三方庫***穩(wěn)定版的版本號(hào)。最終使用 handleGradleDependencyInjection() 方法,將它輸入到我們指定 Module 的 build.gradle 的具體位置。

handleGradleDependencyInjection() 方法不用看,應(yīng)該就是一個(gè) io 操作,去寫 build.gradle 文件。

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

這里通過 string-similarity 這個(gè)字符串相似度比較庫,去查找出我們需要引入的庫的細(xì)節(jié),這些信息,被配置在 constants.js 文件中。

可以看到,這里被另外一個(gè) github 開源庫 drone-hive 所維護(hù)。

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

drone-hive 中,維護(hù)了比較常用的 50 個(gè)開源庫的信息。

我們隨便找一個(gè)看看,這里看看 airbnb/lottie-android。

可以看到,它維護(hù)了開源庫的各項(xiàng)信息,而其中的 repository 指定了開源庫的類型,它最終可以用于區(qū)分我們使用什么方式去獲取***的版本號(hào)。

這個(gè)邏輯在 metadata.js 文件中。

例如這里查看的 airbnb/lottie-android 就是通過 jitpack.io 進(jìn)行查詢,當(dāng)然 drone 是使用 jitpack.io 的查詢 Api 去查詢到***的版本號(hào),這里不再展開細(xì)節(jié)看了。

四、小結(jié)

到這里,我好奇的地方就得到了解決,在來回顧一下這些細(xì)節(jié)。

drone 主要用于 Android 開源庫的管理。

drone 可以自動(dòng)操作 Gradle dependencies。

drone 維護(hù)的 50+ 的開源庫,所有的信息維護(hù)在另外一個(gè)庫中,drone-hive。

drone-hive 維護(hù)了這些開源庫的信息,在不同庫的 xxx/xxx.json 文件中。

根據(jù)在 hive 中配置的 repository 類型,使用不同的方式,獲取穩(wěn)定版版本號(hào)。

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


本文標(biāo)題:像npm一樣在Andriod項(xiàng)目中引入Gradle依賴
本文URL:http://www.dlmjj.cn/article/dpddjgd.html