1. 程式人生 > >AndroidStudio釋出專案到JCenter及常見錯誤

AndroidStudio釋出專案到JCenter及常見錯誤

如果我們想讓自己的開源專案被別人使用,對於Android平臺,一個很好的方式就是上傳到jcenter,然後使用時通過新增compile引用即可。

關於上傳外掛

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

1、註冊Bintray賬號

要想傳到JCenter,必須經過他爸爸Bintray才可以。於是第一個坑出現了=、= 很多教程會說到https://bintray.com/註冊。如果你這樣做了,那麼恭喜,你得重新弄了。因為Bintray政策已經改變,在首頁註冊的賬號是企業賬號,功能強大,當然也是要付費的。最簡單的辨別方法就是看在網頁上方靠右有沒有剩餘效期。

免費版請到 https://bintray.com/signup/oss 註冊。

刪除賬號

如果誤註冊成企業版佔用了使用者名稱郵箱,想登出怎麼辦?

其實也簡單,滑鼠放在右上角頭像出,在彈出浮層上點選 Edit Profile ,拉到最下面有個 Delete Account ,點選驗證後就可以登出賬號。

2、引入外掛

在專案build.gradle的dependencies下新增classpath:

classpath 'com.novoda:bintray-release:0.8.0'

注意是專案的不是module的bulid檔案。用希望的版本號替換 0.7.0 ,建議使用最新版本,最新版本號可以在

https://github.com/novoda/bintray-release 檢視(如圖)。

3012329-2eb7b245334f1a37.png

檢視外掛最新版本

3、配置要上傳的moudle

下面操作均在要上傳的moudle的build.gradle檔案進行。

新增 apply plugin: 'com.novoda.bintray-release'

新增

publish { 
  userOrg =  ''  //bintray註冊的使用者名稱(不是郵箱) 
  groupId =  'com.example' artifactId =  'demo-project'  //專案名稱       
  publishVersion =  '1.0.0'  //版本號 
  desc =  ''  //專案描述。可空。 
  website =  ''  //專案地址,一般填github地址。可空。  
}

假如按照以上設定,那麼最終專案的引用格式就是:

compile 'com.example:demo-project:1.0.0'

可以對照著修改。

4、上傳

一切準備就緒,可以開始上傳了。很簡單,直接在Android Studio Terminal面板執行:

gradlew clean build bintrayUpload -PbintrayUser=使用者名稱 -PbintrayKey=API Key -PdryRun=false

就ok。

API Key

在bintray.com網站上登陸後,滑鼠移動到右上角頭像,點 Edit Profile ,在左側找到 API Key 點選去就可以看到了。如圖。

3012329-cbcf123b06d3380e.png

獲取API Key

經過漫長等待,如果顯示BUILD SUCCESSFUL ,那麼恭喜,上傳完成了。事實上這幾乎是不可能的,它多少會出點錯。這個放在最後講。

此時進入Bintray會發現多了個Maven庫,點進去裡面就有我們剛剛上傳的專案。

5、提交到JCenter

到此為止專案僅僅是傳到了Bintray,並沒有同步到JCenter。

先點進去剛傳的專案,可以看到右下方Linked to模組有個 Add to JCenter 按鈕,點選後開啟一個網頁,在此輸入這個專案的描述(最好英文),不用多長,一句話就可以。然後點選 Send可以提交稽核。

通過後會有站內訊息提示,一般幾小時就可以通過,很容易的。

3012329-5813265502900fd1.png

通過後的站內提示

通過後,所有人就可以直接依賴你的庫啦。在庫的頁面可以看到引用格式。

3012329-2ae38914cfa6b9f0.png

檢視引用格式

分享踩坑經歷

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

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

3012329-49847c7aaa912189.png

大意是在JCenter倉庫中找不到上面說的這個專案。因為從某一版開始,谷歌把專案搬到自己倉庫了。。

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

3012329-afa28d1b271437ce.png

Lint found errors in the project; aborting build.

3012329-19bfd3b360d682db.png

Lint似乎是檢查程式碼健壯性的東西,預設情況下非常嚴格,難免會有幾個Warning。按照提示新增程式碼忽略即可。

解決方案:在 所有 Module的build.gradle中的 android 塊內部新增:

lintOptions {
abortOnError false
}

Execution failed for task ':xxxxxxAndroidJavadocs'.

Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting):

3012329-ee192f022817476b.png

一般是編碼問題造成的。原始碼大概是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"  }  } 

3012329-e5c51040a2a6b7b5.png

解決編碼錯誤

參考

http://blog.csdn.net/zhcswlp0625/article/details/54895584

http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0515/2873.html

http://blog.csdn.net/xingshen58/article/details/51644599