咱們在Android開發過程當中必定會用到別人的庫,好比squareup公司的OKHttp:java
compile 'com.squareup.okhttp3:okhttp:3.4.1'
這樣咱們版本更新的時候只須要更改一下版本號就行,而不用去下載jar包,給開發帶來了極大的便利,但若是咱們本身想上傳lib供其餘開發者使用呢?那麼此教程會帶着你一步一步發佈本身的library。Let's go!android
若是你有Library能夠忽略此步驟,沒有的話添加library。在Android Studio中選擇File->New->New Module,而後選擇一個Library,新建一個Library。這裏以新建DemoLibrary爲例子。(注意這裏的Library須要後面的Package的名字一致)。
git
如今項目的結構以下圖,接下來就是添加必要的Jcenter的依賴,爲上傳作準備。
github
*web
首先去bintray官網註冊帳號,註冊完成後驗證郵箱,而後登錄進入首頁點擊View All,選擇Maven倉庫,新建一個Package,填寫Package名字(注意Package須要和你的Library的名字一致)api
注意點擊你的頭像->Your Profile->Edit->Api key,這個先記下來,後面上傳要用到。
oracle
新建一個Package
app
*gradle
在整個工程的build.gradle文件中添加classpath 'com.novoda:bintray-release:0.3.4'
,注意是整個工程的build.gradle。ui
接着是在你本身Library(這裏是DemoLibrary)的build.gradle的文件中配置本身的信息,複製下面的腳本,改爲你本身的信息便可
apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' publish { userOrg = 'lufficc' //你的用戶名 groupId = 'com.lufficc' //你的惟一的groupId,對應com.squareup.okhttp3:okhttp:3.4.1中的com.squareup.okhttp3 artifactId = 'DemoLibrary' //你的library的名字,對應com.squareup.okhttp3:okhttp:3.4.1中的okhttp publishVersion = '0.0.1' //版本號 desc = 'This is a demo library to teach how to publish you own library to jcenter with android studio.' website = 'http://lufficc.com/' //建議填寫github地址,不過不影響,這裏作演示填的本身的網址 bintrayUser = 'lufficc' //你的用戶名 bintrayKey = 'Your api key' //在你的帳戶裏面查找 }
通過上面的配置,上傳成功後那麼別人引用你的library的代碼就爲compile 'com.lufficc:DemoLibrary:0.0.1'
。
*
通過上面的配置,如今就能夠傳了,上傳以前記得Sync一下Project,而後打開命令行,輸入,回車:
gradlew clean build bintrayUpload -PdryRun=false
而後等待幾分鐘,期間會聯網下載依賴的庫,最後若是沒有問題,會顯示BUILD SUCCESSFUL信息,而後去官網查看剛纔建的Package,會發現多了你剛纔上傳的版本號。
點進去能夠看到有三種引用方式:
可是到這裏還沒法讓別人也能引用,目前只是你本身的私人庫。下面是添加到Jcenter,很是簡單。
*
在上面的頁面中點擊Add To JCenter,而後隨便填寫一下comments,點擊send,而後工做人員會審覈和,你只需等待幾個小時,而後會有站內消息提示你已經發布發到Jcenter,這樣別人也能夠引用你的Library,有沒有很自豪的感受!
*
這個很是簡單,當你的Libraryd代碼更改後,只須要更改一下上面的配置裏面的publishVersion
,運行gradlew clean build bintrayUpload -PdryRun=false
,就能夠更新版本號了。這樣,整個過程就結束了,遇到什麼問題歡迎評論提出或者私信我。
*
其實上傳沒那麼複雜
註冊帳號
爲本身的Library項目添加依賴,配置信息
上傳,添加到Jcenter
更新版本號
*
若是你的Java doc含有中文致使上傳失敗,能夠嘗試在lib的build.gradle添加以下代碼:
allprojects { tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs/api" } } }
本教程是基於插件novoda/bintray-release的,更多問題能夠查看issues或者查看Wiki。