項目發佈到JCenter好處多多,最明顯的就是隻需在gradle裏添加一行依賴就能夠輕鬆引入。隨着Android Studio的普及,愈來愈多的項目已經傳到了JCenter。
不過這用起來十分簡單輕鬆的東西,上傳之路真是道阻且長,各類坑多得數不清。折騰了3小時終於成功傳上去了,記錄一下過程和常見問題,但願你們少踩點坑吧。html
網上不少教程都採用gradle-bintray-plugin
,根據研究,這個插件配置及其複雜,各類意想不到的錯誤層出不窮。因而採用另外一個bintray-release
,聽說是鴻洋大神推薦的,實測也簡單穩定許多。java
要想傳到JCenter,必須通過他爸爸Bintray才能夠。因而第一個坑出現了=、= 不少教程會說到https://bintray.com/註冊。若是你這樣作了,那麼恭喜,你得從新弄了。由於Bintray政策已經改變,在首頁註冊的帳號是企業帳號,功能強大,固然也是要付費的。最簡單的辨別方法就是在網頁上方靠右有個剩餘有效期。
免費版請到 https://bintray.com/signup/oss 註冊。android
刪除帳號
若是誤註冊成企業版佔用了用戶名郵箱,想註銷怎麼辦?
其實也簡單,鼠標放在右上角頭像出,在彈出浮層上點擊Edit Profile
,拉到最下面有個Delete Account
,點擊驗證後就能夠註銷帳號。
在項目build.gradle的dependencies下添加classpath:classpath 'com.novoda:bintray-release:0.7.0'
注意是項目的不是module的bulid文件。用但願的版本號替換0.7.0
,建議使用最新版本,最新版本號能夠在 https://github.com/novoda/bin... 查看(如圖)。git
下面操做均在要上傳的moudle的build.gradle文件進行。github
添加apply plugin: 'com.novoda.bintray-release'
。
添加web
publish { userOrg = '' //bintray註冊的用戶名(不是郵箱) groupId = 'com.example' artifactId = 'demo-project' //項目名稱 publishVersion = '1.0.0' //版本號 desc = '' //項目描述。可空。 website = '' //項目地址,通常填github地址。可空。 }
假如按照以上設置,那麼最終項目的引用格式就是:compile 'com.example:demo-project:1.0.0'
能夠對照着修改。windows
一切準備就緒,能夠開始上傳了。很簡單,直接在Android Studio Terminal面板執行:gradlew clean build bintrayUpload -PbintrayUser=用戶名 -PbintrayKey=API Key -PdryRun=false
就ok。api
API Key
在bintray.com網站上登錄後,鼠標移動到右上角頭像,點Edit Profile
,在左側找到API Key
點擊去就能夠看到了。如圖。
通過漫長等待,若是顯示BUILD SUCCESSFUL ,那麼恭喜,上傳完成了。事實上這幾乎是不可能的,它多少會出點錯。這個放在最後講。
此時進入Bintray會發現多了個Maven庫,點進去裏面就有咱們剛剛上傳的項目。oracle
到此爲止項目僅僅是傳到了Bintray,並無同步到JCenter。
先點進去剛傳的項目,能夠看到右下方Linked to模塊有個Add to JCenter
按鈕,點擊後打開一個網頁,在此輸入這個項目的描述(最好英文),不用多長,一句話就能夠。而後點擊Send
能夠提交審覈。
經過後會有站內消息提示,通常幾小時就能夠經過,很容易的。app
經過後,全部人就能夠直接依賴你的庫啦。在庫的頁面能夠看到引用格式。
第一次編譯上傳不出錯是不可能的,因此各位必定要耐心點排錯哦~
大意是在JCenter倉庫中找不到上面說的這個項目。由於從某一版開始,谷歌把項目搬到本身倉庫了。。
解決方案:在project的builde.gradle的如圖位置加上google()
。
Lint彷佛是檢查代碼健壯性的東西,默認狀況下很是嚴格,不免會有幾個Warning。按照提示添加代碼忽略便可。
解決方案:在全部Module的build.gradle中的android
塊內部添加:
lintOptions { abortOnError false }
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting):
通常是編碼問題形成的。源碼大概是UTF-8,而裏面剛好有中文。可是windows系統是gbk的,插件默認按照系統編碼處理,因而出錯了。也可能由於是javadoc檢查不過關形成的錯誤。
解決方案:在項目的build.gradle中的allprojects
塊內部添加,如圖:
tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') //忽略javadoc錯誤 options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs/api" } }
http://blog.csdn.net/zhcswlp0...
http://www.jcodecraeer.com/a/...
http://blog.csdn.net/xingshen...