6.2檀蹋、Android Studio 添加編譯依賴

文章摘要
1绪钥、 三種依賴類型
2灿里、庫依賴關(guān)系配置
3、遠(yuǎn)程倉庫
4程腹、查看依賴關(guān)系樹


英文文獻(xiàn)

Android Studio中的搖籃構(gòu)建系統(tǒng)可以很容易地包括外部的二進(jìn)制文件或其他庫模塊到您的構(gòu)建與依賴。該依賴性可以位于您的計算機上或遠(yuǎn)程倉庫中色鸳,他們宣布任何傳遞依賴將自動包括在內(nèi)。

一蒜哀、依賴類型

要添加一個依賴于你的項目撵儿,指定諸如依賴配置compile在dependencies您的塊build.gradle文件淀歇。

例如浪默,下面build.gradle為應(yīng)用模塊文件包括三種不同類型的依賴關(guān)系:

apply plugin: 'com.android.application'

android { ... }
dependencies {
    // Dependency on a local library module
    compile project(":mylibrary")

    // Dependency on local binaries
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Dependency on a remote binary
    compile 'com.example.android:app-magic:12.3'
}

每個這些要求不同類型的依賴關(guān)系如下:

  • 1纳决、本地庫模塊依賴
compile project(':mylibrary')

此聲明一有依賴性的Android庫模塊 名為“在MyLibrary”(此名稱必須定義為庫名稱相匹配include你的settings.gradle文件)岳链。它需要構(gòu)建系統(tǒng)編譯庫模塊與應(yīng)用模塊掸哑,并在您的APK所產(chǎn)生的AAR文件苗分。

  • 2摔癣、本地二進(jìn)制依賴
compile fileTree(dir: 'libs', include: ['*.jar'])

由于Gradle讀取相對路徑的build.gradle 文件择浊,這告訴構(gòu)建系統(tǒng)添加您的項目內(nèi)的所有JAR文件 module_name/libs/的目錄的依賴琢岩。
或者担孔,您可以指定單獨的文件如下:

compile files('libs/foo.jar', 'libs/bar.jar')
  • 3、遠(yuǎn)程二進(jìn)制依賴
compile 'com.example.android:app-magic:12.3'

這實際上是以下簡寫:

compile group: 'com.example.android', name: 'app-magic', version: '12.3'

這宣告了“應(yīng)用程序魔”庫的12.3版本的依賴啄育,在“code.example.android”命名空間組內(nèi)挑豌。

注意:這樣的遠(yuǎn)程依賴性要求你申報相應(yīng)的遠(yuǎn)程資源庫拼坎,其中搖籃應(yīng)該尋找?guī)旄√骸H绻麕煲呀?jīng)不存在本地,搖籃從遠(yuǎn)程站點時泰鸡,構(gòu)建需要它(當(dāng)您單擊如拉它同步工程與搖籃文件 或當(dāng)您運行構(gòu)建)债蓝。

二、庫依賴關(guān)系配置

內(nèi)側(cè)dependencies塊盛龄,可以聲明使用幾種不同的一個庫依賴依賴關(guān)系配置(諸如compile上面示出)饰迹。每個相關(guān)配置提供了搖籃有關(guān)如何使用圖書館不同的指令。下面的列表描述了每個可使用在你的Android項目庫依賴的配置余舶。

注:雖然 Java Plugin for Gradle 提供了類似于下面定義的依賴關(guān)系配置啊鸭,你不能在你的Android使用它們的項目,只有下面配置了Android Plugin for Gradle兼容匿值。

  • compile
    搖籃增加依賴于編譯類路徑,并在APK挟憔。
  • apk
    搖籃增加了依賴性只有APK(它不添加到編譯類路徑)绊谭。

注意:您可以使用apk只為JAR二進(jìn)制依賴政恍。它不支持庫模塊或AAR二進(jìn)制依賴达传。

  • provided
    搖籃增加依賴于編譯類路徑中唯一(它不添加到APK)篙耗。
    當(dāng)你創(chuàng)建一個,這是有用的Android庫模塊 宪赶,你在編譯過程中需要的依賴性罕伯,但它是可選的有在運行時出現(xiàn)。也就是說,如果你使用這種配置,那么你的庫模塊必須包括一個運行狀況檢查依賴性是否可用硅堆,然后優(yōu)雅地改變其行為民褂,如果它沒有提供它仍然可以正常工作面殖。這有助于通過不添加短暫的依賴關(guān)系不是關(guān)鍵減少最終APK的大小遵绰。
    您也可以在Android應(yīng)用模塊中,當(dāng)你依賴的是逛犹,你需要在編譯時的JAR文件使用码撰,并且您可以安全地假設(shè)已經(jīng)在運行時可用(因此你不希望將它復(fù)制到你的APK) 朵栖∩茉冢或者门扇,也許你想編譯反對使用指定的JAR provided配置,但使用apk 的配置來包裝不同的JAR到APK偿渡,其中包括需要在運行相同的API臼寄。

注意:如果你要創(chuàng)建一個Android應(yīng)用程序模塊,則不能使用 provided了AAR的依賴溜宽,只為JAR文件吉拳。在Android庫模塊,你可以用它兩個JAR和AARS坑质。

以上配置適用于項目的主要來源集合武,它適用于所有的構(gòu)建變種。
如果你不是想聲明的依賴只有特定的 構(gòu)建變量源設(shè)置或更改一個 測試源設(shè)置涡扼,你必須利用配置名稱以及與構(gòu)建變量或測試源集的名稱前綴它稼跳。

例如,在添加compile
依賴關(guān)系只為您的“免費”產(chǎn)品的風(fēng)味(使用遠(yuǎn)程二進(jìn)制依賴)吃沪,它看起來像這樣:

dependencies {
    freeCompile 'com.google.firebase:firebase-ads:9.8.0'
}

但是汤善,如果你想添加一個依賴于結(jié)合了產(chǎn)品的風(fēng)味變體和構(gòu)建類型,那么你必須初始化的配置名稱configurations塊票彪。下面的示例增加了一個apk依賴于你的“freeDebug”打造變種(使用本地二進(jìn)制依賴):

configurations {
    // Initializes a placeholder for the freeDebugApk dependency configuration.
    freeDebugApk {}
}

dependencies {
    freeDebugApk fileTree(dir: 'libs', include: ['*.jar'])
}

要添加compile為本地測試和儀表測試的依賴性红淡,它看起來像這樣:

dependencies {
    // Adds a remote binary dependency only for local tests.
    testCompile 'junit:junit:4.12'

    // Adds a remote binary dependency only for the instrumented test APK.
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
}

如果你的庫模塊提供了多個變種,你可以添加不同的庫變體像這樣不同的應(yīng)用程序變量:

dependencies {
  // Adds the 'debug' varaint of the library to the debug varaint of the app
  debugCompile project(path: ':my-library-module', configuration: 'debug')

  // Adds the 'release' varaint of the library to the release varaint of the app
  releaseCompile project(path: ':my-library-module', configuration: 'release')
}

三降铸、遠(yuǎn)程倉庫

當(dāng)你的依賴比當(dāng)?shù)氐膱D書館或文件樹以外的東西在旱,搖籃會在哪個在線存儲庫中指定的文件 repositories的塊build.gradle文件。

默認(rèn)情況下推掸,新的Android Studio項目申報JCenter作為該項目的頂級存儲庫位置build.gradle的文件桶蝎,如下圖所示:

allprojects {
    repositories {
        jcenter()
    }
}

如果你想從Maven的中央倉庫的東西,然后再添加 mavenCentral()谅畅,或本地存儲庫使用mavenLocal():

allprojects {
    repositories {
        jcenter()
        mavenCentral()
        mavenLocal()
    }
}

參考配置:

allprojects {
    repositories {
        maven {
            url "https://repo.example.com/maven2"
        }
        maven {
            url "file://local/repo/"
        }
        ivy {
            url "https://repo.example.com/ivy"
        }
    }
}

四登渣、查看依賴關(guān)系樹

有些直接依賴可能有自己的依賴。這些被稱為 傳遞依賴毡泻。而不是要求您手動聲明每個傳遞依賴胜茧,搖籃自動收集,并增加了它們仇味。為了形象化兩個項目的直接和傳遞依賴呻顽,對于搖籃的Android插件提供了生成依賴關(guān)系樹為每個搖籃任務(wù)構(gòu)建變量測試源集合雹顺。

要生成此報告,步驟如下:

  • 1芬位、選擇視圖>工具的Windows>Gradle(或單擊 Gradle中的工具窗口欄)无拗。

  • 2、展開AppName的 >任務(wù)>的android并雙擊androidDependencies昧碉。

  • 3、要查看報告揽惹,選擇查看>工具的Windows>搖籃控制臺被饿。

下面的示例報告顯示調(diào)試構(gòu)建變量的依賴關(guān)系樹,包括前面例子中的本地庫模塊依賴和遠(yuǎn)程依賴性搪搏。

Executing tasks: [androidDependencies]
:app:androidDependencies
debug
/**
 * Both the library module dependency and remote binary dependency are listed
 * with their transitive dependencies.
 */
+--- MyApp:mylibrary:unspecified
|    \--- com.android.support:appcompat-v7:26.0.0
|         +--- com.android.support:animated-vector-drawable:26.0.0
|         |    \--- com.android.support:support-vector-drawable:26.0.0
|         |         \--- com.android.support:support-v4:26.0.0
|         |              \--- LOCAL: internal_impl-26.0.0.jar
|         +--- com.android.support:support-v4:26.0.0
|         |    \--- LOCAL: internal_impl-26.0.0.jar
|         \--- com.android.support:support-vector-drawable:26.0.0
|              \--- com.android.support:support-v4:26.0.0
|                   \--- LOCAL: internal_impl-26.0.0.jar
\--- com.android.support:appcompat-v7:26.0.0
     +--- com.android.support:animated-vector-drawable:26.0.0
     |    \--- com.android.support:support-vector-drawable:26.0.0
     |         \--- com.android.support:support-v4:26.0.0
     |              \--- LOCAL: internal_impl-26.0.0.jar
     +--- com.android.support:support-v4:26.0.0
     |    \--- LOCAL: internal_impl-26.0.0.jar
     \--- com.android.support:support-vector-drawable:26.0.0
          \--- com.android.support:support-v4:26.0.0
               \--- LOCAL: internal_impl-26.0.0.jar
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狭握,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疯溺,更是在濱河造成了極大的恐慌论颅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囱嫩,死亡現(xiàn)場離奇詭異恃疯,居然都是意外死亡,警方通過查閱死者的電腦和手機墨闲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門今妄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鸳碧,你說我怎么就攤上這事盾鳞。” “怎么了瞻离?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵腾仅,是天一觀的道長。 經(jīng)常有香客問我套利,道長推励,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任日裙,我火速辦了婚禮吹艇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昂拂。我一直安慰自己受神,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布格侯。 她就那樣靜靜地躺著鼻听,像睡著了一般财著。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撑碴,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天撑教,我揣著相機與錄音,去河邊找鬼醉拓。 笑死伟姐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的亿卤。 我是一名探鬼主播愤兵,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼排吴!你這毒婦竟也來了秆乳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤钻哩,失蹤者是張志新(化名)和其女友劉穎屹堰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體街氢,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡扯键,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了阳仔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忧陪。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖近范,靈堂內(nèi)的尸體忽然破棺而出嘶摊,到底是詐尸還是另有隱情,我是刑警寧澤评矩,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布叶堆,位于F島的核電站,受9級特大地震影響斥杜,放射性物質(zhì)發(fā)生泄漏虱颗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一蔗喂、第九天 我趴在偏房一處隱蔽的房頂上張望忘渔。 院中可真熱鬧,春花似錦缰儿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽预麸。三九已至,卻和暖如春儒将,著一層夾襖步出監(jiān)牢的瞬間吏祸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工钩蚊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贡翘,地道東北人。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓两疚,卻偏偏與公主長得像床估,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诱渤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 原文地址:Android Studio 簡單介紹和使用問題小結(jié) Google在2013的I/O開發(fā)者大會上引入的該...
    如若成楓閱讀 2,200評論 0 3
  • 在 Android Studio 構(gòu)建的項目中,基于 Gradle 進(jìn)行項目的構(gòu)建谈况,同時使用 Android DS...
    Ant_way閱讀 7,355評論 0 16
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項勺美,請點擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,131評論 8 72
  • 近段時間有機會接觸到iOS開發(fā),但是光Xcode上配置證書碑韵,描述文件赡茸,上真機調(diào)試等就費了挺大勁。結(jié)合看到很多And...
    錦葛格閱讀 3,826評論 0 1
  • 長陰鎮(zhèn)給我的第一個禮物是在我出生時照進(jìn)的陽光祝闻。對于一個時常陰沉的小鎮(zhèn)來說占卧,這是件很好的事情。 今天周末联喘,恰好...
    大南啊閱讀 510評論 0 0