Android Studio 發佈項目到 JCenter 以及常見錯誤

項目發佈到JCenter好處多多,最明顯的就是隻需在gradle裏添加一行依賴就能夠輕鬆引入。隨着Android Studio的普及,愈來愈多的項目已經傳到了JCenter。
不過這用起來十分簡單輕鬆的東西,上傳之路真是道阻且長,各類坑多得數不清。折騰了3小時終於成功傳上去了,記錄一下過程和常見問題,但願你們少踩點坑吧。html

關於插件

網上不少教程都採用gradle-bintray-plugin,根據研究,這個插件配置及其複雜,各類意想不到的錯誤層出不窮。因而採用另外一個bintray-release,聽說是鴻洋大神推薦的,實測也簡單穩定許多。java

一、註冊Bintray帳號

要想傳到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

下面操做均在要上傳的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點擊去就能夠看到了。如圖。

獲取API Key

通過漫長等待,若是顯示BUILD SUCCESSFUL ,那麼恭喜,上傳完成了。事實上這幾乎是不可能的,它多少會出點錯。這個放在最後講。
此時進入Bintray會發現多了個Maven庫,點進去裏面就有咱們剛剛上傳的項目。oracle

五、提交到JCenter

到此爲止項目僅僅是傳到了Bintray,並無同步到JCenter。
先點進去剛傳的項目,能夠看到右下方Linked to模塊有個Add to JCenter按鈕,點擊後打開一個網頁,在此輸入這個項目的描述(最好英文),不用多長,一句話就能夠。而後點擊Send能夠提交審覈。
經過後會有站內消息提示,通常幾小時就能夠經過,很容易的。app

經過後的站內提示

經過後,全部人就能夠直接依賴你的庫啦。在庫的頁面能夠看到引用格式。

查看引用格式

分享踩坑經歷

第一次編譯上傳不出錯是不可能的,因此各位必定要耐心點排錯哦~

Could not find com.android.tools.build:gradle:3.0.0.

大意是在JCenter倉庫中找不到上面說的這個項目。由於從某一版開始,谷歌把項目搬到本身倉庫了。。

解決方案:在project的builde.gradle的如圖位置加上google()

Lint found errors in the project; aborting build.

Lint彷佛是檢查代碼健壯性的東西,默認狀況下很是嚴格,不免會有幾個Warning。按照提示添加代碼忽略便可。

解決方案:在全部Module的build.gradle中的android塊內部添加:

lintOptions {
        abortOnError false
    }

Execution failed for task ':xxxxxxAndroidJavadocs'.

> 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...

相關文章
相關標籤/搜索