版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。
本文連接:https://blog.csdn.net/u013231041/article/details/70174354
AS從哪裏獲取到開源庫
首先咱們在使用第三方開源庫時,直接在項目的 gradle 文件中添加這樣一行代碼:
compile 'com.jakewharton:butterknife:7.0.1'
添加完以後,你會發現依懶庫中確實出現了這個庫文件,那麼 AS 具體是去哪裏下載這個庫的呢?html
jcenter
細心的話會發現項目根目錄的 gradle 文件裏面有這樣的配置java
allprojects {
repositories {
jcenter()
}
}
1
2
3
4
5
這代碼的做用就是告訴 AS 使用 jcenter 做爲代碼倉庫!
jcenter 就是 Android library 文件服務器中的其中一個,另一個就是 Maven Central,這兩個都是Maven 倉庫。 jcenter 由 bintray.com 維護 , Maven Central 則是由 sonatype.org 維護,它們分別存儲在不一樣的服務器,二者沒有任何關係。在 http://jcenter.bintray.com/ 能夠看到 jcenter 整個倉庫的內容。
那麼既然有了兩個選擇,爲何最終會選擇使用 jcenter ?
起初,Android Studio 選擇 Maven Central 做爲默認倉庫。若是你使用老版本的 Android Studio 建立一個新項目, mavenCentral() 會自動的定義在 build.gradle 中。
可是 Maven Central 的最大問題是對開發者不夠友好。上傳 library 異常困難。上傳上去的開發者都是某種程度的極客。同時還由於諸如安全方面的其餘緣由, Android Studio 團隊決定把默認的倉庫替換成jcenter。正如你看到的,一旦使用最新版本的 Android Studio 建立一個項目,jcenter() 自動被定義,而不是 mavenCentral()。
有許多將 Maven Central 替換成 jcenter 的理由,下面是幾個主要的緣由。android
jcenter經過CDN發送library,開發者能夠享受到更快的下載體驗;
jcenter是全世界最大的Java倉庫,所以在Maven Central 上有的,在jcenter上也極有可能有。換句話說jcenter是Maven Central的超集;
上傳library到倉庫很簡單,不須要像在Maven Central上作不少複雜的事情;
友好的用戶界面;
若是你想把library上傳到Maven Central,你能夠在bintray網站上直接點擊一個按鈕就能實現;
如何得到特定的庫
在文章開頭,咱們是這位引入開源庫的:compile 'com.jakewharton:butterknife:7.0.1'
單引號裏面的內容對應的格式是這樣的:GROUP_ID:ARTIFACT_ID:VERSION
GROUP_ID:定義了library的group,一般咱們使用包名來命名;
ARTIFACT_ID:library真實名字;
VERSION:版本號;
當咱們 Sync project with gradle file 時,AS 就會去請求這個地址 http://jcenter.bintray.com/com/jakewharton/butterknife/7.0.1/ 去下載相關的文件。而後再編譯使用。git
上傳library到jcenter
新建一個項目
一個是主項目:app,一個是依懶庫:mylibrary。如圖:github
註冊賬號
到該網址https://bintray.com/signup/oss 我的免費帳號。注意註冊郵箱最好用Gmail。
註冊完成以後,保存API Key。獲取方式以下:web
引入bintray-release
在項目的根目錄的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4' 如圖:windows
配置待上傳moudle的build.gralde
添加如下代碼:
apply plugin: 'com.novoda.bintray-release'api
publish {
userOrg = 'xxx'//bintray.com用戶名
groupId = 'com.helloandroid'//jcenter上的路徑
artifactId = 'mylibrary'//項目名稱
publishVersion = '1.0.0'//版本號
desc = 'this is for test'//描述,不重要
website = 'https://github.com/kuyue'//網站,最好有,不重要
}
1
2
3
4
5
6
7
8
9
10安全
5. 上傳代碼到庫
在Android Studio的Terminal面板進行,執行下面的命令便可:
windows系統:
gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
Mac系統:
./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
注:user就是用戶名,key就是咱們剛纔的Api key,dryRun是一個配置參數,當爲true的時候,會運行全部的環節,可是不會上傳。服務器
最後看到這樣的信息就算上傳成功!
這時候若是須要引用剛纔上傳的庫,須要這樣配置:
(1)、項目根目錄gradle文件中這樣配置(xxx爲你的用戶名):
(2)、最後還須要在須要引用的地方添加上如下依懶
compile 'com.helloandroid:mylibrary:1.0.0
固然這樣每次要添加依懶時,都要執行步驟一,這樣是很不友好的。不過只要咱們完成如下步驟,就能夠只須要執行步驟2就能夠添加了!
打開網址:https://bintray.com/你的用戶名/maven,進入如下頁面,
點擊庫名字,跳轉到
再點擊Add to JCenter
最後填寫信息提交,當審覈經過時,會發站內信通知您。經過時就只須要執行步驟2就能夠添加依懶!
6. 更新版本
更新版本很容易,只須要更改下庫版本號就能夠!
publish {
userOrg = 'xxx'//bintray.com用戶名
groupId = 'com.helloandroid'//jcenter上的路徑
artifactId = 'mylibrary'//項目名稱
publishVersion = '1.0.1'//版本號
desc = 'this is for test'//描述,不重要
website = 'https://github.com/kuyue'//網站,最好有,不重要
}
1
2
3
4
5
6
7
8
執行發佈命令後,在網站上執行如下操做便可:
7. 解決bug
執行命令行時,可能會出現如下錯誤信息
(1)如圖
解決方法:在要上傳的gradle 文件的android節點裏面添加如下代碼:
lintOptions {
abortOnError false
}
1
2
3
(2)如圖
出現Could not create package是由於插件建立不了庫。
解決方法:咱們手動建立一個
(3)有可能出現亂碼問題
解決問題:在項目根目錄gradle文件中添加如下代碼
allprojects {
tasks.withType(Javadoc) {
options{
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
1
2
3
4
5
6
7
8
9
參考
http://blog.csdn.net/zhcswlp0625/article/details/54895584
https://github.com/hehonghui/android-tech-frontier/blob/master/issue-17/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Android-Studio%E6%8A%8A%E8%87%AA%E5%B7%B1%E7%9A%84Android-library%E5%88%86%E5%8F%91%E5%88%B0jCenter%E5%92%8CMaven-Central.md
//——————–更新————————
最新換了macbook pro,以前一直使用 windows系統開發。下面記錄下從 windows發佈開源庫轉移到 mac下的艱辛歷程。如下爲運行命令:
./gradlew clean build bintrayUpload -PbintrayUser=xxx -PbintrayKey=xxxxxxxxxxxxxxxxxxxxxx -PdryRun=false
1
出現的錯誤:
在Terminal 運行命令時,提示無權限 Permission denied 解:在 Terminal 直接輸入 chmod +x gradlew 回車便可 jdk版本問題,由於在安裝 AS 時官方建議安裝jdk6.0到7.0,不建議安裝8.0,因此就裝了個7.0。運行命令時提示:unsupported major.minor version 52.0。意思是不支持jdk7.0,須要 jdk8.0。在這裏也試過網上找不裝8.0而能解決問題的方法,不過沒有找到有效的方法。所以這裏只能裝8.0,AS 官網只說了對8.0支持不太好,目前用到如今沒有發現什麼問題。發現問題了再裝回去吧。。。。(卸載 jdk7.0方法:http://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html#A1096903 命令行中的%用 sudo代替,由於運行該命令須要管理員權限)。 ndk問題,提示信息:ndk is missing a 「platforms」 directory。解決方法:直接用 sdk manager去下載 ndk就能夠。 提示信息如圖: 解決方法: 1.添加bintrayUser、bintrayKey、dryRun 配置,如圖: 2.不使用命令行運行,而直接點擊操做,按順序進行如下操做:a, clean project;b,先運行assembleRelease,再運行 publishMavenPublicationToMavenLocal,而後再運行 bintrayUpload 以上就是遇到的坑爹問題,只有想不到,沒有遇不到的問題。 ———————————————— 版權聲明:本文爲CSDN博主「senyoung」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/u013231041/article/details/70174354