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
,建議使用最新版本,最新版本號可以在
檢視外掛最新版本
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
點選去就可以看到了。如圖。
獲取API Key
經過漫長等待,如果顯示BUILD SUCCESSFUL ,那麼恭喜,上傳完成了。事實上這幾乎是不可能的,它多少會出點錯。這個放在最後講。
此時進入Bintray會發現多了個Maven庫,點進去裡面就有我們剛剛上傳的專案。
5、提交到JCenter
到此為止專案僅僅是傳到了Bintray,並沒有同步到JCenter。
先點進去剛傳的專案,可以看到右下方Linked to模組有個 Add to JCenter
按鈕,點選後開啟一個網頁,在此輸入這個專案的描述(最好英文),不用多長,一句話就可以。然後點選 Send
可以提交稽核。
通過後會有站內訊息提示,一般幾小時就可以通過,很容易的。
通過後的站內提示
通過後,所有人就可以直接依賴你的庫啦。在庫的頁面可以看到引用格式。
檢視引用格式
分享踩坑經歷
第一次編譯上傳不出錯是不可能的,所以各位一定要耐心點排錯哦~
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/zhcswlp0625/article/details/54895584
http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0515/2873.html