如果你想在Android Studio中引入一個(gè)library到你的項(xiàng)目,你只需添加如下的一行代碼到模塊的build.gradle文件中。
dependencies {
compile 'com.github.xuerui1993:AutoViewPagerLibrary:v1.3'
}
就是如此簡(jiǎn)單的一行代碼,你就可以使用這個(gè)library了。
酷呆了。不過(guò)你可能很好奇Android Studio是從哪里得到這個(gè)library的。這篇文章將詳細(xì)講解這是怎么回事,包括如何把你的庫(kù)發(fā)布出去分享給世界各地的其他開(kāi)發(fā)者,這樣不僅可以讓世界更美好,還可以耍一次酷。
Android studio 是從哪里得到庫(kù)的?
先從這個(gè)簡(jiǎn)單的問(wèn)題開(kāi)始,我相信不是每個(gè)人都完全明白Android studio 是從哪里得到這些library的。莫非就是Android studio 從google搜索然后下載了一個(gè)合適的給我們?
呵呵,沒(méi)那么復(fù)雜。Android Studio是從build.gradle里面定義的Maven 倉(cāng)庫(kù)服務(wù)器上下載library的。Apache Maven是Apache開(kāi)發(fā)的一個(gè)工具,提供了用于貢獻(xiàn)library的文件服務(wù)器??偟膩?lái)說(shuō),只有兩個(gè)標(biāo)準(zhǔn)的Android library文件服務(wù)器:jcenter 和 Maven Central。
jcenter
jcenter是一個(gè)由 bintray.com維護(hù)的Maven倉(cāng)庫(kù) 。你可以在這里看到整個(gè)倉(cāng)庫(kù)的內(nèi)容。
我們?cè)陧?xiàng)目的build.gradle 文件中如下定義倉(cāng)庫(kù),就能使用jcenter了:
allprojects {
repositories {
jcenter()
}
}
Maven Central
Maven Central 則是由sonatype.org維護(hù)的Maven倉(cāng)庫(kù)。你可以在這里看到整個(gè)倉(cāng)庫(kù)。
注:不管是jcenter還是Maven Central ,兩者都是Maven倉(cāng)庫(kù)
我們?cè)陧?xiàng)目的build.gradle 文件中如下定義倉(cāng)庫(kù),就能使用Maven Central了:
allprojects {
repositories {
mavenCentral()
}
}
注意,雖然jcenter和Maven Central 都是標(biāo)準(zhǔn)的 android library倉(cāng)庫(kù),但是它們維護(hù)在完全不同的服務(wù)器上,由不同的人提供內(nèi)容,兩者之間毫無(wú)關(guān)系。在jcenter上有的可能 Maven Central 上沒(méi)有,反之亦然。
除了兩個(gè)標(biāo)準(zhǔn)的服務(wù)器之外,如果我們使用的library的作者是把該library放在自己的服務(wù)器上,我們還可以自己定義特有的Maven倉(cāng)庫(kù)服務(wù)器。Twitter的Fabric.io 就是這種情況,它們?cè)?a target="_blank" rel="nofollow">https://maven.fabric.io/public上維護(hù)了一個(gè)自己的Maven倉(cāng)庫(kù)。如果你想使用Fabric.io的library,你必須自己如下定義倉(cāng)庫(kù)的url。
repositories {
maven { url 'https://maven.fabric.io/public' }
}
然后在里面使用相同的方法獲取一個(gè)library。
dependencies {
compile 'com.crashlytics.sdk.android:crashlytics:2.2.4@aar'
}
這里向大家推薦一個(gè)免費(fèi)的倉(cāng)庫(kù)服務(wù)器,JitPack,同理需要定義jitpack的服務(wù)器地址
allprojects {
repositories {
jcenter()
maven {
url 'https://jitpack.io'
}
}
然后在app的build.gradle文件下配置
dependencies {
compile 'com.github.xuerui1993:AutoViewPagerLibrary:v1.3'
}
這就是為什么很多github開(kāi)源庫(kù)上需要加上這一行配置了。
了解aar文件
aar文件時(shí)在jar文件之上開(kāi)發(fā)的。之所以有它是因?yàn)橛行〢ndroid Library需要植入一些安卓特有的文件,比如AndroidManifest.xml,資源文件,Assets或者JNI。這些都不是jar文件的標(biāo)準(zhǔn)。
因此aar文件就時(shí)發(fā)明出來(lái)包含所有這些東西的??偟膩?lái)說(shuō)它和jar一樣只是普通的zip文件,不過(guò)具有不同的文件結(jié)構(gòu)。jar文件以classes.jar的名字被嵌入到aar文件中。其余的文件羅列如下:
- /AndroidManifest.xml (mandatory)
- /classes.jar (mandatory)
- /res/ (mandatory)
- /R.txt (mandatory)
- /assets/ (optional)
- /libs/*.jar (optional)
- /jni/<abi>/*.so (optional)
- /proguard.txt (optional)
- /lint.jar (optional)
可以看到.aar文件是專門(mén)為安卓設(shè)計(jì)的。在AndroiStudio中你創(chuàng)建一個(gè)Libaray項(xiàng)目,就會(huì)自動(dòng)創(chuàng)建一個(gè)arr文件了
上傳你的項(xiàng)目到開(kāi)源庫(kù)
- 首先你得將你的項(xiàng)目變成Libaray類型的,然后發(fā)布到GitHub上.這里我就不多少怎么發(fā)布到github上了.
2.打開(kāi)你的GitHub項(xiàng)目,生成Release文件


3.填寫(xiě)版本號(hào),和一些描述信息

4.發(fā)布完成后,打開(kāi)https://jitpack.io/,然后輸入你的github項(xiàng)目地址

5.得到你的項(xiàng)目的服務(wù)器地址

6.按照上面的操作,你就可以在你的項(xiàng)目中添加依賴使用了