Android倉庫
簡單的普及下關於android
的依賴倉庫,有兩種分別是Jcenter
與Maven Central
其實不管是Jcenter
還是Maven Central
都是Maven
庫。
Jcenter
Jcenter
是由bintray.com
維護,在Android Studio
的項目根目錄的build.gradle
中我們會看到自動幫我們實現的Jcenter
buildscript {
repositories {
jcenter()
}
}
Maven Central
當然也可以在build.gradle
中定義Maven Central
buildscript {
repositories {
mavenCentral()
}
}
至於在Android Studio
中為什么默認使用Jcenter
原因還是有的,感興趣的可以自己去查,我要說的一點就是,這里你可以認為Jcenter
是Maven Central
的超集,這樣就能更好的理解為什么要使用Jcenter
了。
gradle獲取library
這里要了解一下我們看到的依賴所定義的方式,其實是有格式的並不是隨便亂寫的。其實你只要平常夠仔細就能發現他們的格式是一樣的。
由GroupId
、ArtifactId
與VersionId
組成。例如com.jakewharton:butterknife:6.1.0'
它的GroupId
是com.jakewharton
,ArtifactId
是butterknife
,VersionId
是6.1.0
。現在看這些依賴是不是更清晰了呢。當我們添加了依賴之后gradle
會先去Maven
中查找是否有該library
如果有就會使用上面定義的形式下載http://jcenter.bintray.com/GroupId/ArtifactId/VersionId
http://jcenter.bintray.com/com/jakewharton/butterknife/6.1.0
http://www.codesocang.com/anzhuoyuanma/
通過該鏈接下載到本地再與我們的項目結合。
下面正式進行實現依賴的實現
注冊
首先要在https://bintray.com 中注冊賬號,注冊都是很簡單的就不所說了。
然后回到主頁在你的Owned Repositories
中看下你是否已經添加了maven
。
第一次注冊的應該沒有,所以我們要先New Repository
創建maven
創建之后會自動跳轉到maven
中,你會發現沒有package
,我們可以Add New Package
這種相信都會,我這里要說的是另外一種,我們直接在Android Studio
中進行配置然后上傳到Bintray
。
代碼中配置
分離成多個Module
為了使別人能更好的使用,我們一般在實現自己的依賴的時候會把實現的該依賴的源碼作為一個Module
,再把實例代碼作為Application Module
。所以我們要事先處理好Module
,下面是我弄好的示例
添加bintray插件
在分了Module
之后,首先在項目的根目錄
的build.gradle
的dependencies
中添加bintray
插件
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3
添加bintray認證
找到local.properties
文件在其中添加
bintray.user=xxxx
bintray.apikey=xxx
bintray.user
是注冊的user,至於bintray.apikey
在JFrog Bintray
中的Your Profile
的Edit
頁面的API Key
中能找到。
修改Module中的build.gradle
在其中添加如下示例代碼:
apply plugin: 'com.android.library' ext { bintrayRepo = 'maven' bintrayName = 'mypicker' publishedGroupId = 'com.idisfkj.picker' libraryName = 'MyPicker' artifact = 'mypicker' libraryDescription = 'A pickerView on Android' siteUrl = 'https://github.com/idisfkj/idisfkj.picker' gitUrl = 'https://github.com/idisfkj/idisfkj.picker.git' libraryVersion = '1.2.1' developerId = 'idisfkj' developerName = 'idisfkj' developerEmail = 'idisfkj@qq.com' licenseName = 'The Apache Software License, Version 2.0' licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt' allLicenses = ["Apache-2.0"] }
同時在最后添加兩個腳本
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle' apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
這是我這個依賴的示例。其中bintrayRepo
是默認的使用maven
,mypicker
是建立的package name
,siteUrl
是你的項目地址,我的項目在github上,所以是github項目的地址形式。gitUrl
是VCS
。其他應該沒什么問題,相應的改成自己的信息。
這樣就構建好了依賴com.idisfkj.picker:mypicker:1.2.1
上傳到bintray
打開Android Studio
的終端
編譯library文件
在終端輸入
./gradlew install
出現BUILD SUCCESSFUL
就沒問題
上傳
在終端輸入
./gradlew bintrayUpload
一樣的出現BUILD SUCCESSFUL
就沒問題
然后你進入JFrog Bintray
進入maven
你就會發現其中多了一個package
,如果有的話那就表示完美成功。
同步到Jcenter
完成了上面的步驟並不代表別人可以直接使用
dependencies { compile 'com.idisfkj.picker:mypicker:1.2.1' }
還要添加
repositories { maven { url 'https://dl.bintray.com/idisfkj/maven/' } }
所以我們要同步到Jcenter
中,怎么同步呢?別急,只要在你剛剛生成的package
中點擊Add to Jcenter
即可。
進去之后直接發送就可以,不需要填寫什么。
最后就是等待了。幾個小時之后你會收到考核通過的消息,再返回package
就會發現Linked to
發生了變化。
現在你也可以通過http://jcenter.bintray.com/com/idisfkj/picker/mypicker/1.2.1 查看。
同時別人也能使用你的依賴,通過如下簡單的配置
dependencies { compile 'com.idisfkj.picker:mypicker:1.2.1' }
版本更新
對於版本更新,只要更改上面配置的版本號libraryVersion = '1.2.1'
改成你要更新的版本,其它不變。再重新上傳到bintray
。
總結
我這里再來整理下上傳的思路。
-
既然要上傳到
Jcenter
上,自然要去https://bintray.com 中注冊賬號 -
根據自己的需求創建
maven
的Repository
-
把項目分離成
Module
-
在項目根目錄的
build.gradle
中添加bintray
插件 -
在
local.properties
中添加bintray
認證 -
修改
Module
中的build.gradle
中的配置 -
在
Android Studio
終端使用./gradlew xxx
上傳 -
最后在
JFrog Bintray
中同步到Jcenter
中
好了,就到這里了,希望有所幫助!