Android Studio使用Gradle引入第三方庫文件時發生了什麼

1、Android Studio中Gradle是如何從倉庫上獲取一個library庫文件的

在 build.gradle輸入以下代碼的時候,這些庫是如何奇蹟般下載到咱們的項目中的呢。舉個例子:bash

compile 'com.squareup.picasso:picasso:2.5.2'
複製代碼

一、library庫文件的字符串結構

通常來講,須要知道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.7https://oss.sonatype.org/content/repositories/releases/com/squareup/otto/1.3.7/ 下得到com.squareup:otto:1.3.7的library文件。 這時Android Studio 將這些文件下載到咱們的電腦上,與咱們的項目一塊兒編譯。整個過程就是這麼簡單,一點都不復雜。3d

2、Android Studio中Gradle下載的library庫文件在硬盤上的存放位置

如今應該清楚的知道從倉庫上下載的library只是存儲在倉庫服務器上的jar 或者aar文件而已。就像本身去下載這些文件,拷貝到工程裏和項目一塊兒編譯。可是使用Gradle依賴管理的最大好處是,除了添加幾行文字以外啥也不作,library一會兒就能夠在項目中使用了。code

一、那麼這些library庫文件被Gradle下載下來放到什麼位置了呢

在Android Studio中的"External Libraries"下有引用的library的列表, 選擇某個library右鍵->"Library Properties"就能夠看到你引用的庫本地的存放路徑了, 以下圖:cdn

二、aar文件

倉庫中存儲的有兩種類型的library庫文件:jar和aar。jar文件很熟悉了,什麼是aar文件呢?

aar文件是在jar文件之上開發的。之因此有它是由於有些Android Library須要植入一些安卓特有的文件,好比AndroidManifest.xml,資源文件,Assets或者JNI。這些都不是jar文件的標準。

總的來講它和jar同樣只是普通的zip文件,不過具備不一樣的文件結構。jar文件以classes.jar的名字被嵌入到aar文件中。

aar文件包括資源文件和佈局文件,但jar沒有,因此aar文件是專門爲安卓設計的。
相關文章
相關標籤/搜索