AndroidStudio下的依賴管理


 

在開發中用第三方庫是很常見的事,如何在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視圖下看到導入的項目了
modules
其中app是Android生成的application module,volley是我導入的library module。但這只是告訴了Gradle去管理者兩個module,並不能再app中應用volley中的API,需要完成下面一個步驟才能使用。

  • 添加dependencies聲明
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文件加入到項目中,同樣需要三個步驟:

  • 拷貝aar文件到module目錄下,可以拷貝到libs文件中,或者任何新建的文件夾中
    aars
    我這里新建了一個叫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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM