如何通過(guò)Android Studio發(fā)布library到j(luò)Center和Maven Central
【轉(zhuǎn)自stefanli的“如何通過(guò)Android Studio發(fā)布library到j(luò)Center和Maven Central”】
【原文鏈接】
在Android Studio里,如果你想引入任何library到自己的項(xiàng)目中,只需要很簡(jiǎn)單的在module的build.gradle文件中添加一行依賴。
dependencies { compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'}
就是這么簡(jiǎn)單,library已經(jīng)可以在自己的項(xiàng)目中使用。
這看起來(lái)非??幔阋苍S會(huì)好奇Android Studio是從哪里去抓取到這些library的?這篇博客會(huì)詳細(xì)講解如何發(fā)布自己的library,使之能夠與全世界的開發(fā)者分享,這不僅使得世界更加美好,也讓自己看起來(lái)更酷。
Android Studio是從哪里去抓取到這些library的?
用這個(gè)簡(jiǎn)單的問(wèn)題開始,我相信不是所有的人都確切的知道Android Studio是從哪里抓取到這些library的。它是通過(guò)Google去搜索,然后下載到我們項(xiàng)目中的么?
好吧,其實(shí)并不復(fù)雜。Android Studio是從我們定義在build.gradle文件中的Maven資源中心去下載library的。(Apache Maven是Apache為開發(fā)者提供的一個(gè)發(fā)布libraries的文件服務(wù)工具)?;旧?,現(xiàn)在有兩種標(biāo)準(zhǔn)的libraries倉(cāng)庫(kù),分別是jCenter和Maven Central。
jcenter
jcenter是一個(gè)托管在bintray.com的資源庫(kù)。你可以在這里找到需要的資源。為了能在你的項(xiàng)目中使用jcenter,你需要像下面一樣,在自己的build.gradle文件中定義自己的資源庫(kù)。
allprojects {
repositories {
jcenter()
}
}
Maven Central
Maven Central是一個(gè)托管在sonatype.org的資源庫(kù)。你可以在這里找到需要的資源。為了能在你的項(xiàng)目中使用Maven Central,你需要像下面一樣,在自己的build.gradle文件中定義自己的資源庫(kù)。
allprojects {
repositories {
mavenCentral()
}
}
請(qǐng)注意,雖然jcenter和Maven Central都是標(biāo)準(zhǔn)android library資源倉(cāng)庫(kù),但他們的托管地址完全不同,它們的內(nèi)容是由不同提供者提供的,而且之間并沒(méi)有任何關(guān)聯(lián)。所以也就可能,在jcenter中能夠找到的library,在Maven Central和viceversa中并不能找到。
除了這兩個(gè)標(biāo)準(zhǔn)的資源庫(kù)外,我們也可以定義特殊的資源庫(kù),引入一些開發(fā)者托管在自己服務(wù)器上的library。Twitter的Fabric.io就完全是托管在自己服務(wù)器上的Maven資源庫(kù)。如果你想要使用任何fabric.io上面的library,都需要向下面一樣,定義資源庫(kù)的url。
repositories {
maven {
url 'https://maven.fabric.io/public'
}
}
然后你可以通過(guò)和下面相似的方法獲取該資源庫(kù)里面的任何library。
dependencies {
compile 'com.crashlytics.sdk.android:crashlytics:2.2.4@aar'
}
但是哪一種方式更好呢,是上傳library到標(biāo)準(zhǔn)的服務(wù)器上,還是搭建自己的服務(wù)器?為了讓我們的library能夠被大眾所使用,建議上傳到標(biāo)準(zhǔn)服務(wù)器上。其他開發(fā)者只需一行代碼定義依賴名字而無(wú)需其他操作。在這篇博客中,我們只關(guān)注jcenter和Maven Central這兩種能夠給開發(fā)者提供更好方式的資源庫(kù)。
事實(shí)上,android stuido還存在除Maven外的另一種類型的資源庫(kù),叫做Ivy Repository,但從我個(gè)人的經(jīng)驗(yàn)來(lái)看,我還從未見過(guò)任何人使用它,所以這篇博客先簡(jiǎn)單的忽略這種類型。
Understand jcenter and Maven Central
想知道為什么是兩個(gè)標(biāo)準(zhǔn)資源庫(kù)而不是一個(gè)?事實(shí)上,它們都擁有相同的職責(zé):托管java/Android library。完全由開發(fā)者決定把library上傳到它們中的一個(gè)或兩個(gè)上。最開始的時(shí)候,Android Studio選擇Maven Central作為默認(rèn)資源庫(kù)。一旦你從老版本的Android Studio創(chuàng)建了一個(gè)新的項(xiàng)目,mavenCentral()會(huì)自動(dòng)定義到build.gradle中。
但是Maven Central存在一個(gè)較大的問(wèn)題,即對(duì)開發(fā)者并不友好。上傳library比較困難。為了能夠做到上傳,開發(fā)者從某種程度上講得具備極客的能力。再考慮到其他一些原因,比如安全問(wèn)題,Android Studio團(tuán)隊(duì)決定把默認(rèn)資源庫(kù)改為jcenter,所以新版Android Studio創(chuàng)建新項(xiàng)目的時(shí)候,默認(rèn)定義jcenter()而不是mavenCentral()。這里列舉了一些他們決定從Maven Central切換jcenter的主要原因:
- jcenter通過(guò)CDN傳輸library,這意味著開發(fā)者能夠享受更快的加載速度。****- jcenter是世界上最大的java庫(kù),所以能在Maven Central里面找到的,基本在jcenter里面也能找到。****- 非常容易上傳library到j(luò)center倉(cāng)庫(kù),沒(méi)有必要簽名或做其他一些在Maven Central上很復(fù)雜的操作。****- 界面友好****- 如果你想上傳library到Maven倉(cāng)庫(kù),在bintray網(wǎng)站單擊即可(一次性設(shè)置)。
通過(guò)以上的原因以及我自己的經(jīng)驗(yàn),我必須說(shuō),把jcenter作為默認(rèn)倉(cāng)庫(kù)是非常明智的決定。所以,這邊博客主要關(guān)注jcenter,一旦你把library成功上傳到j(luò)center,那么也可以非常方便的再上傳到Maven Central。
gradle是如何把library從倉(cāng)庫(kù)拉取下來(lái)的?
當(dāng)我們討論如何把library上傳到j(luò)center之前,我們先討論下gradle是如何從倉(cāng)庫(kù)抓取library的。例如,當(dāng)我們像下面這樣在build.gradle里面定義依賴的時(shí)候,library文件是如何下載到你的項(xiàng)目的。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'
首先我們得了解library字符串的格式,它包含三個(gè)部分:
GROUP_ID:ARTIFACT_ID:VERSION
以上面的字符串為例:GROUP_ID是com.inthecheesefactory.thecheeselibrary,ARTIFACT_ID是fb-like,VERSION是0.9.3GROUP_ID定義了library的組,很可能不同功能的library存在于同一背景下,如果library在相同的組,那么它們共享相同的GROUP_ID。通常我們用開發(fā)者的包名加上library的名字作為GROUP_ID,例如com.squareup.picasso,然后我們?cè)俣x真正的library名作為ARTIFACT_ID。關(guān)于VERSION,就是版本號(hào),雖然它可以是任意字符,但我建議它設(shè)置為x.y.z的格式,如果你愿意,也可以跟上-beta。這有一些真實(shí)的library例子,你會(huì)注意到,每一個(gè)都很容易辨別出library的名字和包名。
dependencies {
compile 'com.squareup:otto:1.3.7' compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
}
像上面一樣添加了依賴會(huì)發(fā)生什么呢?很簡(jiǎn)單,Gradle會(huì)向Maven倉(cāng)庫(kù)服務(wù)器詢問(wèn)library是否存在,如果存在,則會(huì)返回library的下載地址,通常是GROUP_ID/ARTIFACT_ID/VERSION_ID的格式,例如,你可以從
http://jcenter.bintray.com/com/squareup/otto/1.3.7和https://oss.sonatype.org/content/repositories/releases/com/squareup/otto/1.3.7/找到com.squareup:otto:1.3.7的library文件。
然后Android Studio會(huì)下載這些文件到我們的機(jī)器上,再編譯到我們的項(xiàng)目中,就是這樣,沒(méi)什么復(fù)雜的!
我相信,你已經(jīng)很清楚的知道,從遠(yuǎn)程倉(cāng)庫(kù)拉下來(lái)的,不過(guò)是托管在服務(wù)器上的jar或arr格式的文件。相對(duì)于自己去下載這些文件,單獨(dú)拷貝編譯到自己的項(xiàng)目,這種方式最大的好處是只需要定義一些依賴文本,而不需要其他更多的操作。
了解aar文件格式
等等,我說(shuō)過(guò)這兒有兩種形式的library托管在遠(yuǎn)程倉(cāng)庫(kù)里,jar和aar,jar倒是常用的,我相信大家都知道,不過(guò),aar文件又是什么呢?
aar文件是更進(jìn)一步的jar文件,它被創(chuàng)造出來(lái)是因?yàn)橐恍〢ndroid Library需要嵌入一些android的特殊文件,比如AndroidManifest.xml, Resources, Assets or JNI等jar文件不包含的內(nèi)容。所以aar文件被創(chuàng)造出來(lái)解決這些問(wèn)題。一般說(shuō)來(lái),jar只是有著不同結(jié)構(gòu)的zip文件,jar文件被嵌入在aar文件里,名為class.jar。aar中余下部分如下:
/AndroidManifest.xml (mandatory)
/classes.jar (mandatory)
/res/ (mandatory)
/R.txt (mandatory)
/assets/ (optional)
/libs/.jar (optional)
/jni/<abi>/.so (optional)
/proguard.txt (optional)
/lint.jar (optional)
正如你所看見的,aar文件是專門為Android設(shè)計(jì)的,所以這篇博客將會(huì)告訴你如何創(chuàng)建并上傳一個(gè)aar格式的library。
如何上傳你的library到j(luò)center
到現(xiàn)在,我相信你對(duì)遠(yuǎn)程library倉(cāng)庫(kù)的工作模式已經(jīng)有了基本的了解?,F(xiàn)在開始最重要的環(huán)節(jié):上傳過(guò)程。目標(biāo)很簡(jiǎn)單,即如何將我們的庫(kù)文件上傳到http://jcenter.bintray.com。一旦我們學(xué)會(huì)了上傳,那么library也就能夠被發(fā)布了。兩個(gè)問(wèn)題需要關(guān)注:如果創(chuàng)建aar文件以及如何上傳編譯好的文件到遠(yuǎn)程倉(cāng)庫(kù)。雖然它需要很多步驟,但我必須說(shuō),這完全不困難,因?yàn)閎intray已經(jīng)為我們準(zhǔn)備好了一切。你可以通過(guò)下面的圖了解整個(gè)過(guò)程。
因?yàn)橛泻芏嗉?xì)節(jié),所以我把整個(gè)過(guò)程分為了7部分,以便能夠循序漸進(jìn)的描述清楚。
Part 1 : 在Bintray上創(chuàng)建一個(gè)包
首先,你需要在bintray上創(chuàng)建一個(gè)包,為了完成這步,你需要一個(gè)bintray賬號(hào)并且在網(wǎng)站上創(chuàng)建一個(gè)包。第一步:在bintray.com上注冊(cè)賬號(hào)。第二步:注冊(cè)成功后,登陸網(wǎng)站點(diǎn)擊maven。
第三步:點(diǎn)擊Add New Package,為你的library創(chuàng)建一個(gè)新的包。
第四步:輸入必要的信息
雖然如何命名包名沒(méi)有明確的規(guī)則,但有一些約定:所有字符小寫,單詞間通過(guò)“-”號(hào)連接,比如,fb-like。一旦上面每一步都完成了,單擊Create Package完成創(chuàng)建。
第五步:網(wǎng)站會(huì)自動(dòng)重定向到編輯頁(yè)面。點(diǎn)擊包名下面的名字可以進(jìn)入具體的信息頁(yè)面。
好了,現(xiàn)在你已經(jīng)在bintray上有了自己的Maven倉(cāng)庫(kù),準(zhǔn)備好上傳自己的library文件了。
Bintray賬號(hào)的注冊(cè)工作已經(jīng)完成了,接下來(lái)將會(huì)和Maven Central的提供者,Sonatype打交道。
Part 2 : 為Maven Central創(chuàng)建一個(gè)Sonatype賬號(hào)
提示:如果你沒(méi)有計(jì)劃上傳library文件到Maven Central,你可以跳過(guò)第二部分和第三部分。但無(wú)論如何,我建議不要跳過(guò),因?yàn)檫€是有很多的開發(fā)者在用這個(gè)倉(cāng)庫(kù)。就想jcenter一樣,如果你想要上傳你的library到Maven Central,你需要在它的提供者,也就是Sonatype網(wǎng)站上注冊(cè)一個(gè)賬號(hào)。你所需要知道的是,你必須在Sonatype網(wǎng)站上創(chuàng)建一個(gè)JIRA Issue Tracker的賬號(hào)。為了完成這一步,請(qǐng)到Sonatype Dashboard注冊(cè)。一旦你完成注冊(cè),你需要請(qǐng)求發(fā)布library到Maven Central。雖然這個(gè)過(guò)程可能沒(méi)有任何意義(至少對(duì)我來(lái)說(shuō)),但你必須在JIRA上創(chuàng)建一個(gè)請(qǐng)求,讓他們?cè)试S你上次你的library到Maven Central。為了創(chuàng)建一個(gè)問(wèn)題描述,到Sonatype Dashboard網(wǎng)站,通過(guò)賬號(hào)登陸,然后點(diǎn)擊頂部的Create按鈕。
填入以下的信息:Project: Community Support - Open Source Project Repository HostingIssue Type: New ProjectSummary: 你library文件的名稱,例如:Cheese LibraryGroup Id: 填入GROUP_ID的根名稱,例如:com.inthecheeselibrary。在你得到批準(zhǔn)之后,每個(gè)以com.inthecheeselibrary開頭的library文件,都會(huì)被允許上傳的遠(yuǎn)程倉(cāng)庫(kù),例如:com.inthecheeselibrary.somelibProject URL: 填入一個(gè)你準(zhǔn)備用來(lái)描述該library的地址,例如:https://github.com/nuuneoi/FBLikeAndroidSCM URL: 源碼管理的地址,例如:https://github.com/nuuneoi/FBLikeAndroid.git
保持沒(méi)有修改的部分,點(diǎn)擊Create。我們要做的結(jié)束了,接下來(lái)是最難的部分:耐心等待。大概需要一周的時(shí)間審核,然后才能在Maven Central中訪問(wèn)自己的library。
最后要做的是,在Bintray Profile的賬號(hào)選項(xiàng)卡頁(yè)面,填入Sonatype OSS的用戶名。
點(diǎn)擊Update,這個(gè)部分我們就完成了。
Part 3 : 在Bintray上開啟自動(dòng)簽名
正如上面提到的,我們可以通過(guò)jcenter上傳一個(gè)library到Maven Central,但前提是,我們需要對(duì)library進(jìn)行簽名。bintray提供一個(gè)自動(dòng)化的工具,允許通過(guò)網(wǎng)絡(luò)接口上傳的library能夠在上傳后自動(dòng)簽名。第一步是通過(guò)命令行,生成一個(gè)key。(如果使用的是windows,請(qǐng)?jiān)赾ygwin環(huán)境下操作)
gpg --gen-key
這里有一些強(qiáng)制性填充的字段,大部分情況下用默認(rèn)值就可以,但是對(duì)于一些字段,需要填入你自己的信息,比如,你的真實(shí)姓名,密碼等等。一旦key被創(chuàng)建,調(diào)用下面的命令行,可以看到key的信息。
gpg --list-keys
如果沒(méi)有出錯(cuò),信息會(huì)像下面一樣被展示出來(lái)。
pub 2048R/01ABCDEF 2015-03-07
uid Sittiphol Phanvilai <yourmail@email.com>
sub 2048R/98765432 2015-03-07
現(xiàn)在我們需要上傳公鑰到管理中心使它生效。為了完成這一步,請(qǐng)調(diào)用下面的命令行,其中替換PUBLIC_KEY_ID為2048R/后面的8位16進(jìn)制數(shù),在這個(gè)例子中,即為:01ABCDEF。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PUBLIC_KEY_ID
接下來(lái),通過(guò)以下命令,以ASCII格式導(dǎo)入公鑰和私鑰,請(qǐng)?zhí)鎿Q其中的yourmail@email.com為前面你生成key所使用的email。
gpg -a --export yourmail@email.com > public_key_sender.asc
gpg -a --export-secret-key yourmail@email.com > private_key_sender.asc
打開Bintray的Edit Profile頁(yè)面,點(diǎn)擊GPS Signing。填入在前面步驟中導(dǎo)出的public_key_sender.asc和private_key_sender.asc文件里面的公鑰和私鑰。
點(diǎn)擊Update保存key。最后一步是開啟自動(dòng)簽名,到Bintray的主頁(yè),點(diǎn)擊maven,再點(diǎn)擊Edit。
選中GPG Sign uploaed files automatically的勾選框,開啟自動(dòng)簽名。
點(diǎn)擊Update保存,到現(xiàn)在為止,每一個(gè)單獨(dú)的library上傳到Maven倉(cāng)庫(kù)都能夠被自動(dòng)簽名,而且已經(jīng)準(zhǔn)備好一鍵發(fā)布到Maven Central。請(qǐng)注意,這是一個(gè)一次性行為,將會(huì)被應(yīng)用到以后每一個(gè)創(chuàng)建的library中。Bintray和Maven Central的部分都已經(jīng)準(zhǔn)備好了,現(xiàn)在讓我們切換到Android Studio部分。
Part 4 : 準(zhǔn)備Android Studio工程項(xiàng)目
在許多情況下,我們可能在一個(gè)項(xiàng)目里,需要上傳多個(gè)library,也可能不需要。所以我建議最好的結(jié)構(gòu)是按照Module來(lái)劃分,基本上我建議最少有兩個(gè)Module,一個(gè)應(yīng)用程序的Module,一個(gè)包含了你想要上傳到遠(yuǎn)程倉(cāng)庫(kù)源碼的library的Module。請(qǐng)注意,如果在你的項(xiàng)目里不止包含了一個(gè)library,請(qǐng)創(chuàng)建另外一個(gè)Module:每一個(gè)library對(duì)應(yīng)一個(gè)Module。
我相信大家都知道如何創(chuàng)建一個(gè)library module,多以我不會(huì)太深入的講這個(gè)部分。
接下我們需要把bintray的插件應(yīng)用到你的項(xiàng)目中。要做到這一點(diǎn),我們需要像下面這樣修改project的build.gradle文件中的依賴部分。
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
gradle構(gòu)建工具的版本需要在1.1.2以上,因?yàn)橹暗陌姹敬嬖谝粋€(gè)嚴(yán)重的bug。在這個(gè)例子中,我們選擇使用1.2.3版本。接下來(lái),我們需要修改local.properties,定義用于bintray身份認(rèn)證的用戶名和api密鑰,以及密碼。
之所以把這些信息放到這個(gè)文件中,是因?yàn)橐恍┟舾行畔?,包括版本控制,不?yīng)該被共享。幸運(yùn)的是,自從項(xiàng)目被創(chuàng)建,local.properties文件就已經(jīng)被添加了.gitignore,所以這些敏感信息不會(huì)意外上傳到git服務(wù)器。
下面是需要添加的配置信息:
bintray.user=YOUR_BINTRAY_USERNAME
bintray.apikey=YOUR_BINTRAY_API_KEY
bintray.gpg.password=YOUR_GPG_PASSWORD
把你在bintray上的用戶名寫到第一行,把你在Edit Profile網(wǎng)頁(yè)上,API Key的信息寫到第二行。最后一行是你在前面步驟中,用來(lái)創(chuàng)建GPG key的密碼。最后保存并關(guān)掉這個(gè)文件。
最后需要修改的文件是module的build.gradle文件。打開它并把下面的信息添加到里面。
apply plugin: 'com.android.library'
ext {
bintrayRepo = 'maven'
bintrayName = 'fb-like'
publishedGroupId = 'com.inthecheesefactory.thecheeselibrary'
libraryName = 'FBLike'
artifact = 'fb-like'
libraryDescription = 'A wrapper for Facebook Native Like Button (LikeView) on Android'
siteUrl = 'https://github.com/nuuneoi/FBLikeAndroid'
gitUrl = 'https://github.com/nuuneoi/FBLikeAndroid.git'
libraryVersion = '0.9.3'
developerId = 'nuuneoi'
developerName = 'Sittiphol Phanvilai'
developerEmail = 'sittiphol@gmail.com'
licenseName = 'The Apache Software License, Version 2.0'
licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
allLicenses = ["Apache-2.0"]
}
保持bintrayRepo為現(xiàn)在這個(gè)樣子,改變bintrayName為你自己的包名,修改其他配置來(lái)匹配你自己的library信息。有了上面的腳本,每個(gè)人都可以通過(guò)下面一行g(shù)radle腳本使用這個(gè)library。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'
最后一步是應(yīng)用兩個(gè)腳本,用于創(chuàng)建library文件以及上傳構(gòu)建文件到bintray,在build.gradle文件的最后添加以下腳本即可(為了方便,我直接把這些文件鏈接到github的服務(wù)器上)。
// Place it at the end of the fileapply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
現(xiàn)在,你的項(xiàng)目已經(jīng)設(shè)置并且準(zhǔn)備好了上傳到bintray。
Part 5 : 上傳你的library到bintray空間
現(xiàn)在是時(shí)候上傳你library到你自己的bintray倉(cāng)庫(kù)了。首先,請(qǐng)切換到Android Studio的Terminal界面。
第一步是檢查代碼的正確性,構(gòu)建library文件(aar,pom,等等)。輸入下面的命令。
> gradlew install
如果沒(méi)有任何錯(cuò)誤,將會(huì)顯示下面的命令行:
BUILD SUCCESSFUL
我們已經(jīng)完成了一半,接下來(lái)需要上傳構(gòu)建文件到bintray,輸入下面的命令行:
> gradlew bintrayUpload
如果顯示下面這行,那就成功了:
SUCCESSFUL
在bintray網(wǎng)站的界面上檢查你的包,你會(huì)發(fā)現(xiàn)版本區(qū)域有了變化。
點(diǎn)擊它切換到Files頁(yè)面,你會(huì)看到上傳的library文件。
恭喜,現(xiàn)在你的library已經(jīng)在線上,可以被任何人使用。但是,到你的library還只在Maven倉(cāng)庫(kù)里,而沒(méi)有在jcenter,所以任何想要使用你的library的人,都必須像下面這樣定義:
repositories {
maven {
url 'https://dl.bintray.com/nuuneoi/maven/'
}
}
...
dependencies {
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'
}
你可以從bintray網(wǎng)站界面上,找到你自己Maven倉(cāng)庫(kù)的url,也可以簡(jiǎn)單的用你的bintray用戶名替換nuuneoi。我建議你進(jìn)入網(wǎng)頁(yè),看看具體是怎么回事。
正如上面所提到的,讓開發(fā)者定義這么復(fù)雜的配置,并非是發(fā)布library最好的方式,想象一下,如果要添加10個(gè)library,也需要添加10個(gè)url么?這簡(jiǎn)直是噩夢(mèng),所以,為了更好的使用,讓我們把library從自己的倉(cāng)庫(kù)轉(zhuǎn)移到j(luò)center。
Part 6 : 同步bintray上的用戶倉(cāng)庫(kù)到j(luò)center
同步library到j(luò)center非常的簡(jiǎn)單,只需要打開網(wǎng)頁(yè)點(diǎn)擊Add to JCenter。
不需要其他額外操作,點(diǎn)擊Send就可以了。
接下來(lái)我們什么也不需要做,等待兩三個(gè)小時(shí),讓bintray團(tuán)隊(duì)通過(guò)我們的請(qǐng)求就可以了。一旦審核通過(guò),你將會(huì)收到一封郵件,提示信息有改變?,F(xiàn)在讓我們回到網(wǎng)頁(yè),你可以看到在Linked To部分有所改變。
到現(xiàn)在為止,任何使用jcenter的開發(fā)者,只需要一行代碼就可以使用我們的library了。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'
想要在jcenter上查看你的library文件?你可以通過(guò)訪問(wèn)http://jcenter.bintray.com,通過(guò)library的group id和artifact id來(lái)匹配瀏覽。在這個(gè)例子里,應(yīng)該是:com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3。
請(qǐng)注意,鏈接到j(luò)center是一次性行為。到現(xiàn)在為止,如果你的包做了任何的修改,例如,上傳了新版本的library,刪掉了就版本等等。這些改變也會(huì)影響到j(luò)center。所以當(dāng)你的倉(cāng)庫(kù)和jcenter存在差異的時(shí)候,你應(yīng)該花2-3分鐘同步這些改變到j(luò)center。
請(qǐng)注意,如果你決定刪掉整個(gè)包,放置在jcenter倉(cāng)庫(kù)里面的library不會(huì)被刪除,它們就像僵尸文件一樣,沒(méi)有人可以刪除。所以我建議,如果你想要?jiǎng)h掉整個(gè)包,在移除之前,請(qǐng)先從網(wǎng)站上刪掉每一個(gè)單獨(dú)的版本。
Part 7 : 上傳library到Maven Central
不是所有的Android開發(fā)者都在使用jcenter。還是有一部分開發(fā)者在使用mavenCentral(),所以,讓我們把library也上傳到Maven Central。為了把library從jcenter提交到Maven Central,有兩個(gè)前提是需要滿足的:1)二進(jìn)制包必須已經(jīng)連接到j(luò)center2)Maven Central上的倉(cāng)庫(kù)已經(jīng)批準(zhǔn)開放如果你已經(jīng)有了這些資格,那么提交library文件到Maven Central也是非常的簡(jiǎn)單。僅僅需要點(diǎn)擊Maven Central連接到包的詳細(xì)頁(yè)面。
通過(guò)Sonatype的用戶名和密碼進(jìn)入頁(yè)面,點(diǎn)擊Sync。
如果同步成功,將會(huì)顯示最新的同步狀態(tài),如果失敗,也會(huì)顯示最新的同步失敗信息。你必須解決這些問(wèn)題,因?yàn)樯蟼鞯組aven Central是非常嚴(yán)格的,比如“+”號(hào)不能用于版本庫(kù)依賴關(guān)系的定義。一旦完成,你可以在Maven Central Repository 找到自己的library文件,匹配規(guī)則同上,在這個(gè)例子中,應(yīng)該是:com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3。