Android Studio發(fā)布項(xiàng)目到Jcenter

新版的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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茁影,隨后出現(xiàn)的幾起案子搅幅,更是在濱河造成了極大的恐慌,老刑警劉巖呼胚,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茄唐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)沪编,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)呼盆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蚁廓,你說(shuō)我怎么就攤上這事访圃。” “怎么了相嵌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵腿时,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我饭宾,道長(zhǎng)批糟,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任看铆,我火速辦了婚禮徽鼎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弹惦。我一直安慰自己否淤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布棠隐。 她就那樣靜靜地躺著石抡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪助泽。 梳的紋絲不亂的頭發(fā)上汁雷,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音报咳,去河邊找鬼侠讯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暑刃,可吹牛的內(nèi)容都是我干的厢漩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岩臣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溜嗜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起架谎,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤炸宵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谷扣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體土全,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捎琐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了裹匙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑞凑。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖概页,靈堂內(nèi)的尸體忽然破棺而出籽御,到底是詐尸還是另有隱情,我是刑警寧澤惰匙,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布技掏,位于F島的核電站,受9級(jí)特大地震影響项鬼,放射性物質(zhì)發(fā)生泄漏哑梳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一秃臣、第九天 我趴在偏房一處隱蔽的房頂上張望涧衙。 院中可真熱鬧哪工,春花似錦奥此、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至偎捎,卻和暖如春蠢终,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背茴她。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工寻拂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丈牢。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓祭钉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親己沛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慌核,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容