如何上傳library到j(luò)center
我相信你已經(jīng)知道了倉庫系統(tǒng)的大體工作原理∷腥現(xiàn)在我們來開始最重要的部分:上傳。這個任務(wù)和如何上傳library文件到http://jcenter.bintray.com一樣簡單指巡。如果做到,這個library就算發(fā)布了灌灾。好吧儒搭,有兩個需要考慮:如何創(chuàng)建aar文件以及如何上傳構(gòu)建的文件到倉庫撵枢。
雖然需要若干步驟民晒,但是我還是想強(qiáng)調(diào)這事并不復(fù)雜,因?yàn)橐呀?jīng)準(zhǔn)備好了所有事情锄禽。整個過程如下圖:
因?yàn)榧?xì)節(jié)比較多潜必,我分為7部分,一步一步的詳細(xì)解釋清楚沃但。
第一部分:在bintray上創(chuàng)建package
首先磁滚,你需要在bintray上創(chuàng)建一個package。為此宵晚,你需要一個bintray賬號垂攘,并在網(wǎng)站上創(chuàng)建一個package。
第一步:在bintray.com上注冊一個賬號淤刃。(注冊過程很簡單晒他,自己完成)
第二步:完成注冊之后,登錄網(wǎng)站逸贾,然后點(diǎn)擊maven陨仅。
第三步:點(diǎn)擊Add New Package津滞,為我們的library創(chuàng)建一個新的package。
第四步:輸入所有需要的信息
雖然如何命名包名沒有什么限定灼伤,但是也有一定規(guī)范触徐。所有字母應(yīng)該為小寫,單詞之間用-分割狐赡,比如撞鹉,fb-like。
當(dāng)每項都填完之后颖侄,點(diǎn)擊Create Package孔祸。
第五步:網(wǎng)頁將引導(dǎo)你到 Package編輯頁面。點(diǎn)擊 Edit Package文字下的Package名字发皿,進(jìn)入Package詳情界面崔慧。
完工!現(xiàn)在你有了自己在Bintray上的Maven倉庫穴墅,可以準(zhǔn)備上傳library到上面了惶室。
Bintray賬戶的注冊就完成了。下一步是Sonatype玄货,Maven Central 的提供者皇钞。
第二部分:為Maven Central創(chuàng)建個Sonatype帳號
注:如果你不打算把library上傳到Maven Central,可以跳過第二和第三部分松捉。不過我建議你不要跳過夹界,因?yàn)槿匀挥性S多開發(fā)者在使用這個倉庫。
和jcenter一樣隘世,如果你想通過Maven Central,貢獻(xiàn)自己的library可柿,你需要在提供者的網(wǎng)站Sonatype上注冊一個帳號。
你需要知道的就是這個帳號丙者,你需要在Sonatype網(wǎng)站上創(chuàng)建一個IRA Issue Tracker 帳號复斥。請到Sonatype Dashboard 注冊這個帳號。
完成之后械媒。你需要請求得到貢獻(xiàn)library到Maven Central的權(quán)限目锭。不過這個過程對我來說有點(diǎn)無厘頭,因?yàn)槟阈枰龅木褪窃贘IRA中創(chuàng)建一個issue纷捞,讓它們允許你上傳匹配Maven Central提供的GROUP_ID的library痢虹。
要創(chuàng)建上述所講到的issue,訪問Sonatype Dashboard主儡,用創(chuàng)建的帳號登錄奖唯。然后點(diǎn)擊頂部菜單的Create。
填寫如下信息:
Project: Community Support - Open Source Project Repository Hosting
Issue Type: New Project
Summary: 你的 library名稱的概要缀辩,比如The Cheese Library臭埋。
Group Id: 輸入根GROUP_ID踪央,比如,com.inthecheeselibrary 瓢阴。一旦批準(zhǔn)之后畅蹂,每個以com.inthecheeselibrary開始的library都允許被上傳到倉庫,比如com.inthecheeselibrary.somelib荣恐。
Project URL: 輸入任意一個你想貢獻(xiàn)的library的URL液斜,比如, https://github.com/nuuneoi/FBLikeAndroid叠穆。
SCM URL: 版本控制的URL少漆,比如 https://github.com/nuuneoi/FBLikeAndroid.git。
其余的不用管硼被,然后點(diǎn)擊Create∈舅穑現(xiàn)在是最難的部分...耐心等待...平均大概1周左右,你會獲準(zhǔn)把自己的library分享到 Maven Central嚷硫。
最后一件事是在Bintray Profile的帳戶選項中填寫自己的Sonatype OSS用戶名检访。
點(diǎn)擊Update,完成仔掸。
第三部分:啟用bintray里的自動注冊
就如我上面提到的脆贵,我們可以通過jcenter上傳library到Maven Central ,不過我們需要先注冊這個library起暮。bintray提供了通過用戶界面讓library一旦上傳后自動注冊的機(jī)制卖氨。
第一步是使用下面的命令行產(chǎn)生一個key。(如果你用的是windows负懦,請在cygwin下做這件事情)
gpg --gen-key
有幾個必填項筒捺。部分可以采用默認(rèn)值,但是某些項需要你自己輸入恰當(dāng)?shù)膬?nèi)容密似,比如凭涂,你的真實(shí)名字问裕,密碼 等等。
創(chuàng)建了key之后鸠删,調(diào)用如下的命令查看被創(chuàng)建key的信息贫导。
gpg --list-keys
如果沒沒問題的話抛猫,可以看到下面的信息:
pub 2048R/01ABCDEF 2015-03-07uid Sittiphol Phanvilai yourmail@email.comsub 2048R/98765432 2015-03-07
現(xiàn)在你需要把key上傳到keyserver讓它發(fā)揮作用。為此孩灯,請調(diào)用如下的命令并且將其中的PUBLIC_KEY_ID替換成上面pub一行中2048R/ 后面的 8位16進(jìn)制值闺金,譬如本例是01ABCDEF。
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys PUBLIC_KEY_ID
然后峰档,使用如下的命令以ASCII形式導(dǎo)出公共和私有的key败匹,請將yourmail@email.com替換成你前面用于創(chuàng)建key的email寨昙。
gpg -a --export yourmail@email.com > public_key_sender.ascgpg -a --export-secret-key yourmail@email.com > private_key_sender.asc
打開Bintray的Edit Profile頁面點(diǎn)擊GPG 注冊。分別在Public Key和 Private Key中填入上一步導(dǎo)出的public_key_sender.asc和 private_key_sender.asc文件中的內(nèi)容掀亩。
點(diǎn)擊Update保存這些key舔哪。
最后一步就是啟用自動注冊。到Bintray的主頁點(diǎn)擊maven槽棍。
點(diǎn)擊編輯
勾選中GPG Sign uploaed files automatically以啟用自動注冊捉蚤。
點(diǎn)擊Update保存這些步驟。完成×镀撸現(xiàn)在只需點(diǎn)擊一下缆巧,每個上傳到我們Maven倉庫的東西都會自動注冊并做好轉(zhuǎn)向Maven Central 。
請注意這是一次性的操作豌拙,以后創(chuàng)建的每一個library都要應(yīng)用此操作陕悬。
Bintray和Maven Central 已經(jīng)準(zhǔn)備好了。現(xiàn)在轉(zhuǎn)到Android Studio部分按傅。
第四部分:準(zhǔn)備一個Android Studio項目
很多情況下墩莫,我們需要同時上傳一個以上的library到倉庫,也可能不需要上傳東西逞敷。因此我建議最好將每部分分成一個Module狂秦。最好分成兩個module,一個Application Module一個Library Module推捐。Application Module用于展示庫的用法裂问,Library Module是library的源代碼。如果你的項目有一個以上的library牛柒,盡管創(chuàng)建另外的module:1個 module對應(yīng)1 個library堪簿。
我相信大家知道如何創(chuàng)建一個新的module,因此就不會深入講解這個問題了皮壁。其實(shí)很簡單椭更,基本就是選擇creating an Android Library module ,然后就完了蛾魄。
下一步是把bintray插件應(yīng)用在項目中虑瀑。我們需要修改項目的build.gradle文件中的依賴部分,如下:
dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' classpath 'com.github.dcendents:android-maven-plugin:1.2'}
有一點(diǎn)非常重要滴须,那就是gradle build tools的版本設(shè)置成1.1.2以上舌狗,因?yàn)橐郧暗陌姹居袊?yán)重的bug,我們將使用的是最新的版本1.2.3扔水。
接下來我們將修改local.properties痛侍。在里面定義api key的用戶名以及被創(chuàng)建key的密碼,用于bintray的認(rèn)證魔市。之所以要把這些東西放在這個文件是因?yàn)檫@些信息時比較敏感的主届,不應(yīng)該到處分享赵哲,包括版本控制里面。幸運(yùn)的是在創(chuàng)建項目的時候local.properties文件就已經(jīng)被添加到.gitignore了君丁。因此這些敏感數(shù)據(jù)不會被誤傳到git服務(wù)器枫夺。
下面是要添加的三行代碼:
bintray.user=YOUR_BINTRAY_USERNAMEbintray.apikey=YOUR_BINTRAY_API_KEYbintray.gpg.password=YOUR_GPG_PASSWORD
bintray username 放在第一行, API Key放在第二行谈截, API Key可以在Edit Profile頁面的API Key 選項卡中找到筷屡。
最后一行是創(chuàng)建 GPG key的密碼。保存并關(guān)閉這個文件簸喂。
最后要修改的是module的build.gradle文件毙死。注意前面修改的是項目的build.gradle文件。打開它喻鳄,在apply plugin: 'com.android.library'之后添加這幾行扼倘,如下:
pply 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使用默認(rèn)的,即maven除呵。bintrayName修改成你上面創(chuàng)建的 package name再菊。其余的項也修改成和你library信息相匹配的值。有了上面的腳本颜曾,每個人都能通過下面的一行g(shù)radle腳本使用這個library纠拔。
compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3‘
最后在文件的后面追加兩行如下的代碼來應(yīng)用兩個腳本,用于構(gòu)建library文件和上傳文件到bintray(為了方便泛豪,我直接使用了github上連接到相關(guān)文件的鏈接):
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'
完成稠诲!你的項目現(xiàn)在設(shè)置好了,準(zhǔn)備上傳到bintray吧诡曙!
第五部分:把library上傳到你的bintray空間
現(xiàn)在是上傳library到你自己的bintray倉庫上的時候了臀叙。請到Android Studio的終端(Terminal)選項卡。
第一步是檢查代碼的正確性价卤,以及編譯library文件(aar劝萤,pom等等),輸入下面的命令:
gradlew install
如果沒有什么問題慎璧,會顯示:
BUILD SUCCESSFUL
現(xiàn)在我們已經(jīng)成功一半了床嫌。下一步是上傳編譯的文件到bintray,使用如下的命令:
gradlew bintrayUpload
如果顯示如下你就大喊一聲eureka吧炸卑!
SUCCESSFUL
在bintray的網(wǎng)頁上檢查一下你的package既鞠。你會發(fā)現(xiàn)在版本區(qū)域的變化。
點(diǎn)擊進(jìn)去盖文,進(jìn)入Files選項卡,你會看見那里有我們所上傳的library文件蚯姆。
恭喜五续,你的library終于放在了互聯(lián)網(wǎng)上洒敏,任何人都可以使用了!
不過也別高興過頭疙驾,library現(xiàn)在仍然只是在你自己的Maven倉庫凶伙,而不是在jcenter上。如果有人想使用你的library它碎,他必須定義倉庫的url函荣,如下:
repositories { maven { url 'https://dl.bintray.com/nuuneoi/maven/' }} ... dependencies { compile 'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'}
譯者注:前面都沒怎么看懂,看到上面的代碼之后一下子全懂了扳肛,呵呵傻挂。
你可以在bintray的web界面找到自己Maven倉庫的url,或者直接吧nuuneoi替換成你的bintray用戶名(因?yàn)榍懊娌糠制鋵?shí)都是一樣的)挖息。我還建議你直接訪問那個鏈接金拒,看看里面到底是什么。
但是套腹,就如我們前面所講的那樣绪抛,讓開發(fā)者去定義url這種復(fù)雜的事情并不是分享library的最佳方式。想象一下电禀,使用10個library不得添加10個url幢码?所以為了更好的體驗(yàn),我們把library從自己的倉庫傳到j(luò)center上尖飞。
第六部分:同步bintray用戶倉庫到j(luò)center
把library同步到j(luò)center非常容易症副。只需訪問網(wǎng)頁并點(diǎn)擊Add to JCenter
什么也不做直接點(diǎn)擊Send。
現(xiàn)在我們所能做的就是等待bintray團(tuán)隊審核我們的請求葫松,大概2-3個小時瓦糕。一旦同步的請求審核通過,你會收到一封確認(rèn)此更改的郵件∫该矗現(xiàn)在我們?nèi)ゾW(wǎng)頁上確認(rèn)咕娄,你會在 Linked To 部分看到一些變化。
從此之后珊擂,任何開發(fā)者都可以使用jcenter() repository 外加一行g(shù)radle腳本來使用我們的library了
1
compile
'com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3'
想檢查一下自己的library在jcenter上是否存在圣勒?你可以直接訪問http://jcenter.bintray.com,然后進(jìn)入和你library的group id 以及artifact id匹配的目錄摧扇。在本例中就是com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3圣贸。
請注意鏈接到j(luò)center是一個只需做一次的操作。如果你對你的package做了任何修改扛稽,比如上傳了一個新版本的binary吁峻,刪除了舊版本的binary等等,這些改變也會影響到j(luò)center。不過畢竟你自己的倉庫和jcenter在不同的地方用含,所以需要等待2-3分鐘讓jcenter同步這些修改矮慕。
同時注意,如果你決定刪除整個package啄骇,放在jcenter倉庫上的library不會被刪除痴鳄。它們會像僵尸一樣的存在,沒有人再能刪除它了缸夹。因此我建議痪寻,如果你想刪除整個package,請在移除package之前先在網(wǎng)頁上刪除每一個版本虽惭。
第七部分:上傳library到Maven Central
并不是每個安卓開發(fā)者都使用jcenter橡类。仍然有部分開發(fā)者還在使用mavenCentral() ,因此讓我們也把library上傳到Maven Central 吧趟妥。
要從jcenter到Maven Central猫态,首先需要完成兩個任務(wù):
- Bintray package 已經(jīng)連接到j(luò)center。
- Maven Central上的倉庫已經(jīng)認(rèn)證通過
如果你已經(jīng)通過了這些授權(quán)披摄,上傳library package到Maven Central就異常簡單了亲雪,只需在package的詳情頁面點(diǎn)擊Maven Central 的鏈接。
輸入你的Sonatype用戶名和密碼并點(diǎn)擊Sync疚膊。
如果成功义辕,在Last Sync Status中會顯示Successfully synced and closed repo(見圖),但是如果遇到任何問題寓盗,則會在Last Sync Errors顯示出來灌砖。你需要根據(jù)情況修復(fù)問題,能上傳到Maven Central 的library的條件是相當(dāng)嚴(yán)格的傀蚌,比如+ 號是不能在ibrary版本的依賴定義中使用的基显。
完成之后,你可以在 Maven Central Repository 上找到你的library善炫。在那些匹配你ibrary的group id以及artifact id的目錄中撩幽。比如本例中就是com -> inthecheesefactory -> thecheeselibrary -> fb-like -> 0.9.3。
恭喜箩艺!雖然需要許多步驟窜醉,但是每一步都很簡單。而且大部分操作都是一勞永逸的艺谆。
轉(zhuǎn)自:http://www.cnblogs.com/sihaixuan/p/4852974.html