在 build.gradle輸入以下代碼的時候,這些庫是如何奇蹟般下載到咱們的項目中的呢。舉個例子:bash
compile 'com.squareup.picasso:picasso:2.5.2'
複製代碼
通常來講,須要知道library的字符串形式,包含3部分:GROUP_ID:ARTIFACT_ID:VERSION服務器
上面的例子中,GROUP_ID是com.squareup.picasso ,ARTIFACT_ID是picasso,VERSION是2.5.2。佈局
GROUP_ID定義了library的group。有可能在一樣的上下文中存在多個不一樣功能的library。若是library具備相同的group,那麼它們將共享一個GROUP_ID。一般咱們以開發者包名緊跟着library的group名稱來命名,好比com.squareup.picasso。gradle
ARTIFACT_ID是library的真實名稱。ui
VERSION是版本包,能夠是任意文字,建議設置爲x.y.z的形式,若是喜歡還能夠加上beta這樣的後綴。spa
下面是Square library的一個例子。能夠看到每一個均可以很容易的分辨出library和開發者的名稱。設計
dependencies {
compile 'com.squareup:otto:1.3.7'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
}
複製代碼
Gradle會詢問Maven倉庫服務器這個library是否存在:若是存在,Gradle會得到請求library的路徑,通常這個路徑都是這樣的形式:GROUP_ID/ARTIFACT_ID/VERSION_ID。好比能夠在 http://jcenter.bintray.com/com/squareup/otto/1.3.7
和 https://oss.sonatype.org/content/repositories/releases/com/squareup/otto/1.3.7/
下得到com.squareup:otto:1.3.7的library文件。 這時Android Studio 將這些文件下載到咱們的電腦上,與咱們的項目一塊兒編譯。整個過程就是這麼簡單,一點都不復雜。3d
如今應該清楚的知道從倉庫上下載的library只是存儲在倉庫服務器上的jar 或者aar文件而已。就像本身去下載這些文件,拷貝到工程裏和項目一塊兒編譯。可是使用Gradle依賴管理的最大好處是,除了添加幾行文字以外啥也不作,library一會兒就能夠在項目中使用了。code
在Android Studio中的"External Libraries"下有引用的library的列表, 選擇某個library右鍵->"Library Properties"就能夠看到你引用的庫本地的存放路徑了, 以下圖:cdn
倉庫中存儲的有兩種類型的library庫文件:jar和aar。jar文件很熟悉了,什麼是aar文件呢?
aar文件是在jar文件之上開發的。之因此有它是由於有些Android Library須要植入一些安卓特有的文件,好比AndroidManifest.xml,資源文件,Assets或者JNI。這些都不是jar文件的標準。
總的來講它和jar同樣只是普通的zip文件,不過具備不一樣的文件結構。jar文件以classes.jar的名字被嵌入到aar文件中。
aar文件包括資源文件和佈局文件,但jar沒有,因此aar文件是專門爲安卓設計的。