博客地址首發(fā):http://icodeyou.com/2015/12/23/2015-12-23-AndroidLibraryJitPack
之前一直在用別人的開源庫蕴掏,尤其有了 Gradle 后,依賴別人的開源庫就更簡單了缚窿,只需要在項目的 build.gradle 文件中添加上類似 compile 'com.github.icodeu:CommonAdapter:v1.0'
的就好了棘幸,剩下的就可以交給 Gradle 幫助我們完成 library 依賴了。但這個是怎么做的倦零,如果你也想學(xué)習(xí)怎么寫自己的 library误续,然后能夠提供給別人使用的話吨悍,可跟著本篇博客學(xué)習(xí)一下。本篇分為兩個部分蹋嵌,首先講解如何單純的寫個 library 并在本地自己依賴著(玩)畜份,然后進入主題講解怎么使用 JitPack.io 來發(fā)布我們自己的 library,所以如果你已經(jīng)知道了怎么寫 library欣尼,可以直接跳到第二部分。
我也試圖在網(wǎng)上找一些關(guān)于使用 JitPack.io 的教程停蕉,但是搜出來的基本是這篇的復(fù)制品愕鼓,根本沒講什么實質(zhì)性的東西,所以一切只好自己來了慧起。
如何寫 library
在本節(jié)菇晃,我們一起來新建個 library,打開 Android Studio蚓挤,New Project磺送,在此工程名為 Hellolibrary,此后一直點擊 next 直至 finish 即可灿意。此時應(yīng)該是只有一個 module 名為 app估灿,一會我們會把它當(dāng)做依賴 library 的示例模塊來使用,暫時先不管缤剧,我們先來創(chuàng)建一個 library馅袁,F(xiàn)ile->New->Module,選擇 Android library荒辕,之后起個名字汗销,在此叫做 library,finish 即可抵窒,此時工程目錄如下所示弛针,其中 app 用來依賴使用 library。
怎么指定一個 module 到底是普通的 application 還是 library 呢李皇?打開 module 對應(yīng)的 build.gradle 文件削茁,看第一行 apply plugin: xxx
,如果是 application 的話掉房,plugin 就是 'com.android.application'付材,library 的話就是 'com.android.library',就這么簡單圃阳,如下圖:
接下來在 library 中 New->Java Class厌衔,在此就是演示,所以我們就盡可能把不重要的東西簡單化捍岳,名字就叫做 CustomUtil富寿,只有一個靜態(tài)方法睬隶,如下圖所示:
其實到此最簡單的 library 就寫好了,下面就在 app 中來依賴剛才的這個 library 看看效果页徐。打開 app 的 build.gradle苏潜,在最后的 dependencies 節(jié)點添加一行,compile project(':library')
变勇,再 Sync 一下 Gradle即可恤左,這樣 app 就完成了對 library 的依賴。另外還有一種方法去依賴 library搀绣,右鍵 app 這個 module蹂喻,選擇 Open Module Settings澄干,切換到最后一個Tab:Dependencies,點擊左下角的加號->Module dependency->選擇 library,這樣也能完成 app 對 library 的依賴旷赖。
那怎么能在代碼上看出來 app 確實成功依賴了 library 呢撰洗?我們打開 app 中的 MainActivity误澳,輸入 CustomUtil 試一下兼蕊,如果發(fā)現(xiàn)像下圖那樣給你智能提示了,那就OK了贸毕,從下圖還能看到 CustomUtil 類所在的包是 com.icodeyou.library郑叠。我們調(diào)用一下它吧,如下圖也很簡單明棍,不解釋了锻拘。
到此為止我們就自己寫了一個最簡單的 library 并完成了自己本地的依賴調(diào)用,這都是自己玩玩击蹲,那怎么能讓別人也用上咱們剛才那個高大上的 library 呢署拟,繼續(xù)往下看。
如何在 JitPack.io Publish Android Library
首先來概覽一下我們要完成的最終效果是什么歌豺,我之前有一個開源庫推穷,地址在 https://github.com/icodeu/CommonAdapter,打開 JitPack.io 的網(wǎng)站类咧,將我的開源庫地址粘貼進去馒铃,Look up->Get it,即可看到熟悉的 compile 了痕惋,按照下面那個提示復(fù)制到相應(yīng)的 build.gradle 文件中就可以完成 library 的依賴了区宇,不信你試試啊。
下面就來具體講解一下如何將剛才本地的 library 與 JitPack.io 結(jié)合起來值戳,JitPack 的官方文檔在這里 Publish Android library
打開 Project 的 root build.gradle议谷,在 dependencies 節(jié)點添加一個 classpath:classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
,再打開 library 的 build.gradle堕虹,在文件起始添加如下兩行 apply plugin: 'com.github.dcendents.android-maven'
group='com.github.icodeu'
(注意這是你GitHub的用戶名)卧晓,兩個文件的示意圖如下:
下面檢查你的Project目錄是否存在 gradle/wrapper/gradle-wrapper.jar芬首、gradle-wrapper.properties 這兩個文件,如果存在可跳過下面這步逼裆,如果不存在郁稍,請按下面的進行操作。打開當(dāng)前項目的 Terminal胜宇,先后執(zhí)行 gradle wrapper
和 ./gradlew install
兩個命令耀怜,如下圖:
從 JitPack 首頁也能看出來,其實我們是要粘貼一個 GitHub 項目地址進去桐愉,所以我們接下來就要把 library 先上傳到 GitHub 上面财破。
在 GitHub 上新建一個倉庫,這里命名為 HelloLibrary仅财,之后 clone 到本地,再把 Project 目錄所有的文件復(fù)制進去碗淌,比如在我這里盏求,倉庫 clone 到了桌面的 HelloLibrary 文件夾,如下圖:
把這些文件 push 到 GitHub 上亿眠,push 成功之后碎罚,點擊項目的 releases->Create a new release,填寫好版本號等內(nèi)容纳像,如下圖:
填寫好后點擊 Publish release 即可荆烈,然后我們復(fù)制下圖紅框中的項目地址,粘貼到 JitPack.io 上面竟趾,Look up->Get it憔购,在下面就能看到使用方法了。
首先打開 Project root 的 build.gradle岔帽,在 repositories 節(jié)點添加上 maven { url "https://jitpack.io" }
玫鸟,之后打開想依賴這個 library 的模塊,比如這里我們是 app 這個 module犀勒,在 dependencies 節(jié)點添加上 compile 'com.github.icodeu:Hellolibrary:v1.0'
屎飘,Sync 一下 Gradle,這樣就可以了贾费。如果 Sync 成功了钦购,那我們在 app 中就成功依賴了 GitHub 上的 library,此時可以打開 app 的 Module Settings褂萧,看一下它的 Dependencies押桃,如下圖:
好了,到此就完成了使用 JitPack.io + GitHub 發(fā)布開源庫了导犹,相比 jCenter 和 MavenCentral 方式簡直爽的不要不要的