標籤:
在開發中用第三方庫是很常見的事,如何在AndroidStudio下管理這些依賴呢?這就是這篇文章的目的。
目錄
- Maven/Ivy倉庫依賴
- Module依賴
- aar檔案依賴
- jar檔案依賴
- 例子完整代碼
一、Maven/Ivy倉庫依賴
這中依賴在AndroidStudio中應用最廣泛,也是相比於Eclipse+ADT開發來說的閃光點之一。先給出一個例子:
dependencies { //省略了一下預設配置 compile ‘com.android.support:appcompat-v7:23.4.0‘ compile ‘com.jakewharton:butterknife:7.0.1‘ //其他依賴項}
上面就是一個Maven倉庫依賴的例子,項目依賴於相容包和jakewharton大大的‘黃油刀’,為了突出重點省略了其他類型的依賴項(後面會講到)。
1)配置倉庫
(這段這是基礎概念,可以選擇略過)在配置Maven依賴之前我們得明白一下什麼是倉庫(repositories)和如何配置倉庫,那什麼是倉庫呢?倉庫說白了就是存放代碼的地方,它能很好的進資料列版本設定和訪問。應用廣泛的倉庫類型有兩種:Ivy和Maven,Ivy在以Ant為構建的系統中應用比較廣;相比於Ivy,Maven倉庫就比較出名了。現在為廣大程式員所知的Maven倉庫有Jcenter和Maven Central,它們都是Maven倉庫的實現。而這兩種類型的倉庫在以Gradle為構建工具的AndroidStudio中都能使用,且使用很簡單,只需要在相應的設定檔中添加幾行代碼就行。
a.配置Maven倉庫
這AndroidStudio下建立的項目,在項目根目錄下的build.gradle裡又這樣一段代碼:
allprojects { repositories { jcenter() }}
這指定了所有module(包括appilcation module和library module,關於module的概念後面會將到)的預設倉庫是Jcenter。這就有疑問了,同樣是maven倉庫為什麼AndroidStudio預設指定不是Maven Central呢?Jcenter和Maven Central都是maven庫沒錯,但是Jcenter是Maven Central的超集,也就是說你能在Maven Central中找到的依賴在Jcenter中也能找到,反之則不然。如果你非要用Maven Central也行,只要把 jcenter() 換成 mavenCentral()就行,但不建議在項目的build.gradle中修改,而是去你的module中修改,這樣就能將影響範圍控制到單個module。
b.匯入依賴
配置好倉庫後就可以匯入依賴了,同樣建議到module的build.gradle檔案中匯入需要的依賴庫,而不是在項目的build.gradle中匯入。講要匯入的倉庫寫進dependencies代碼塊內就行,類似於開篇的例子。 說說倉庫是如何區分不同的庫已經同一庫的不同版本的,主要通過三個元素來區分:組別:庫名:版本號碼
- 組名:一般表明了庫的開發人員,常用倒置的網域名稱來表示,如com.jakewharton
- 庫名:說明了這個庫的名稱,如butterknife
- 版本號碼:庫的版本號碼
這三者用:分隔,一起組成了庫的唯一標識,所以我們匯入庫依賴的格式就是: compile ‘組名:庫名:版本號碼‘ 起始不一定得是compile,也可能是provided、apk、testCompile,androidTestCompile,它們說明了把庫加到那部分編譯中去,具體是什麼,自己google。
#### c.動態版本匯入 什麼叫動態版本匯入呢?就是讓Gradle去給你下載最新的庫,而不是每次都是自己修改版本號碼。如下
dependencies { compile ‘com.android.support:support-v4:22.2.+‘ compile ‘com.android.support:appcompat-v7:22.2+‘ compile ‘com.android.support:recyclerview-v7:+‘}
這裡面涉及到版本號碼的命名規則:主要版本號.次版本號碼.debug版本號碼,不同版本號碼什麼意思也自己google。解釋一下上面三個依賴的意思:
- 要求是最新的debug版本
- 要求次版本至少大於2
- 最新的庫
2)其他Maven/Ivy倉庫的配置
非Jcenter和Maven Central倉庫怎麼maven倉庫怎麼配置?Ivy怎麼配置?如下:
repositories { maven { url "http://baidu.com"//這裡填寫倉庫地址 credentials { //這裡填認證資訊 username ‘user‘ password ‘secretpassword‘ } }}
Ivy配置類似,只要把maven改成ivy就行了,再次申明為了將影響範圍保持到最小,要將這項配置寫到module的build.gradle檔案中。
二、Module依賴
在AndroidStudio上,一個應用是由一個或多個Module組成,其中一個application module,零個或多個library module。application module最後可以打包成apk,library module就是每打包的庫,它最後可以打包成jar或者aar(兩者區別自己google)。這一節我們來講講如何匯入自己或者別人寫的module,下一節講如何匯入打包好的aar。 完成module依賴只需要完成三步:
- 拷貝庫到項目的根目錄下,和app module同級
- 在項目的setting,gradle中加入module名。如下
include ‘:app‘, ‘:volley‘
經過這個步驟,就就可以在項目導航的Android視圖下看到匯入的項目了
其中app是Android產生的application module,volley是我匯入的library module。但這隻是告訴了Gradle去管理者兩個module,並不能再app中應用volley中的API,需要完成下面一個步驟才能使用。
dependencies { //為了突出重點,省略其他 compile project(‘:volley‘)}
這樣一來匯入module就成功了。 最後再說一下,如何在Android Studio中建立application module 和 library。File->new->new module 在彈出的對話方塊中選擇module類型,module的類型起始是根據它的build.gradle中的外掛程式類型決定的。 application module:
apply plugin: ‘com.android.application‘
library module:
apply plugin: ‘com.android.library‘
三、arr檔案依賴
arr檔案是打包好的library module,在說明如何將aar檔案引入到項目中,先說說如何打包module產生aar檔案,Build->Make Module (module name)等Gradle構件完成後,會在所示的路徑中產生aar檔案
開始講如何將aar檔案加入到項目中,同樣需要三個步驟:
- 拷貝aar檔案到module目錄下,可以拷貝到libs檔案中,或者任何建立的檔案夾中
我這裡建立了一個叫aars的檔案夾,然後把之前產生的aar檔案放了進去
- 添加檔案倉庫 在module的build.gradle中添加代碼塊
repositories{ flatDir{ dirs ‘aars‘ }}
dependencies { //忽略其他 compile(name:‘volley-debug‘, ext:‘aar‘)}
至此添加aar檔案依賴完成。
四、jar檔案依賴
Android Studo檔案依賴很簡單,把jar包往libs檔案裡一放就ok了。這得益於AndroidStudio的預設配置:
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
這句話就是將libs目錄下所有的jar包一次全倒過來。如果換成compile file(jar檔案路徑)可以一次只匯入一個jar包。
五、例子完整代碼
Github-fallblank
AndroidStudio下的依賴管理