新版的Android Studio會(huì)將遠(yuǎn)程倉(cāng)庫(kù)指定為Jcenter夯到,那Jcenter在哪里峦萎?它是干嘛的呢茂契?
要回答這個(gè)問(wèn)題蝶桶,我們要了解一個(gè)公司,叫做jfog掉冶,它有個(gè)網(wǎng)站是Bintray真竖,這個(gè)網(wǎng)站類似于github脐雪,但關(guān)注的領(lǐng)域不一樣,github管理的是文本文件恢共,而B(niǎo)intray專注于管理二進(jìn)制文件战秋,個(gè)人感覺(jué)有些類似yy和qq的關(guān)系。扯回來(lái)讨韭,我們今天的主人公Jcenter就存放在Bintray網(wǎng)站里脂信,Bintray下有名的庫(kù)可不止Jcenter只一個(gè),rpm-center,rubyinstaller都是它里面的倉(cāng)庫(kù)透硝。所以狰闪,如果我們想把自己的開(kāi)源庫(kù)存放在Jcenter上供其它人使用,主要步驟如下:
我們需要注冊(cè)Bintray賬號(hào)濒生,然后上傳我們的項(xiàng)目到Bintray埋泵,最后在Bintray里提交我們的項(xiàng)目,管理員會(huì)對(duì)項(xiàng)目審核罪治,通過(guò)后我們就可以在Gradle里通過(guò)制定遠(yuǎn)程位置來(lái)使用自己的庫(kù)了秋泄。好,Let Go规阀!
注冊(cè)Bintray賬號(hào)
Bintray官網(wǎng)傳送門(mén):https://bintray.com/
但很遺憾的是這個(gè)網(wǎng)站國(guó)內(nèi)訪問(wèn)有點(diǎn)尷尬恒序,你需要翻墻才可以。
Bintray是支持Github登陸的谁撼,也比較推薦在這種方式歧胁,(這里我真的想吐槽下某些sb網(wǎng)站做的連排泄物都不如,通過(guò)第三方登陸像還得重新注冊(cè)厉碟!還得手機(jī)驗(yàn)證喊巍,這種網(wǎng)站必須拉黑)
登陸之后我們需要兩個(gè)參數(shù),一個(gè)是我們的用戶名箍鼓,另外一個(gè)就是api key崭参,api key的獲取可以參照我下面的gif圖片:
先記得這兩個(gè)數(shù)據(jù)的獲取方式,一會(huì)我們會(huì)用到款咖。
上傳自己的Library到Bintray
關(guān)于怎樣使用Android Studio創(chuàng)建Library這里就不多講何暮,這里假設(shè)我們有一個(gè)自己將要上傳到Binray,我這里的Library很簡(jiǎn)單铐殃,簡(jiǎn)單到不需要res文件海洼,是我編寫(xiě)和整理的和Android相關(guān)的工具類,我把這個(gè)Librasy命名為utils富腊,整個(gè)Library目錄結(jié)構(gòu)如下:
接下里的步驟比較繁瑣坏逢,Gradle已經(jīng)支持通過(guò)命令來(lái)上傳Library到Bintray,但項(xiàng)目的相關(guān)信息需要在gradle的配置文件中制定,首先我們需要打開(kāi)utils這個(gè)module下的build.gradle文件是整,將其替換如下:
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
// 這個(gè)version是區(qū)分library版本的肖揣,因此當(dāng)我們需要更新library時(shí)記得修改這個(gè)version
version = "1.0.0"
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
resourcePrefix "隨便填"
defaultConfig {
minSdkVersion 9
targetSdkVersion 21
versionCode 1
versionName version
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
def siteUrl = 'https://github.com/saymagic/AndroidUtils'? ? ? // 項(xiàng)目的主頁(yè)
def gitUrl = 'https://github.com/saymagic/AndroidUtils.git'? // Git倉(cāng)庫(kù)的url
group = "cn.saymagic" // Maven Group ID for the artifact,一般填你唯一的包名
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
// Add your description here
name 'Android Commonly used utils'? //項(xiàng)目描述
url siteUrl
// Set your license
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id 'saymagic'? ? ? //填寫(xiě)開(kāi)發(fā)者基本信息
name 'saymagic'
email 'cymmagic@gmail.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
configurations = ['archives']
pkg {
repo = "maven"? //發(fā)布到Bintray的那個(gè)倉(cāng)庫(kù)里浮入,默認(rèn)賬戶有四個(gè)庫(kù)龙优,我們這里上傳到maven庫(kù)
name = "utils"? //發(fā)布到Bintray上的項(xiàng)目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
注意里面的信息需要按照自己的個(gè)人資料進(jìn)行修改。
因?yàn)樯鲜龅奈募镄枰蕾囈恍┢渌膸?kù)舵盈,所以接下來(lái)再到我們項(xiàng)目最外層build.gradle文件里,添加如下兩個(gè)依賴
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
修改后的文件如下:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-plugin:1.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
最后球化,我們?cè)诖蜷_(kāi)項(xiàng)目最外層的local.properties文件秽晚,添加如下兩行:
bintray.user=your_user_name
bintray.apikey=your_apikey
your_user_name和your_apikey這兩個(gè)數(shù)據(jù)就是我們?cè)诘谝徊阶?cè)Bintray時(shí)提到的兩個(gè)參數(shù),
解析來(lái)筒愚,在項(xiàng)目的根目錄下執(zhí)行
第一步是檢查代碼的正確性赴蝇,以及編譯library文件(aar,pom等等)巢掺,輸入下面的命令:
>?gradlew?install
如果沒(méi)有什么問(wèn)題句伶,會(huì)顯示:
BUILD?SUCCESSFUL
現(xiàn)在我們已經(jīng)成功一半了。下一步是上傳編譯的文件到bintray陆淀,使用如下的命令:
gradlew?bintrayUpload
如果顯示如下你就大喊一聲eureka吧考余!
SUCCESSFUL
在bintray的網(wǎng)頁(yè)上檢查一下你的package。你會(huì)發(fā)現(xiàn)在版本區(qū)域的變化
這樣轧苫,我們就可以到到我們的module下會(huì)生成如下目錄:/build/outputs/aar/
在arr目錄下有如下兩個(gè)文件:
以arr文件結(jié)尾的就是Gradle將我們的library打包成的二進(jìn)制文件楚堤,別忘記了,Bintray就是用于存儲(chǔ)二進(jìn)制文件的倉(cāng)庫(kù)含懊,所以執(zhí)行下面的命令身冬。就可以將我們的library上傳到Bintary。
上傳成功之后岔乔,就會(huì)在bintray的maven倉(cāng)庫(kù)下看到我們上傳的Library:
提交項(xiàng)目到Jcenter
我們點(diǎn)開(kāi)我們剛剛提交項(xiàng)目的主頁(yè)酥筝,點(diǎn)擊右下角的add to jcenter按鈕
接下來(lái)寫(xiě)一些評(píng)論:
點(diǎn)擊send后就可以等管理員的審核了。
大概一小時(shí)后雏门,管理員就會(huì)審核通過(guò):
這樣嘿歌,我們就可以在Dependence里這樣來(lái)引用我們自己的項(xiàng)目了:
dependencies {
compile 'cn.saymagic.utils:utils:1.0.0'
}
參考
https://www.virag.si/2015/01/publishing-gradle-android-library-to-jcenter/
http://stackoverflow.com/questions/24852219/android-buildscript-repositories-jcenter-vs-mavencentral