安卓 將自己的庫讓別人遠(yuǎn)程依賴

今天突然心血來潮星压,想折騰一下,讓自己的庫能夠被遠(yuǎn)程依賴溉知。在網(wǎng)上找了很多教程渊跋,以及很多朋友的幫忙(尤其是 小別墅),終于折騰出來了着倾。話不多說。開始教程:


一.注冊bintray賬號

bintray的官網(wǎng):https://bintray.com

個人注冊地址:https://bintray.com/signup/oss

也可以直接用github賬戶登錄燕少。我就是這樣的卡者。但是這樣有一個要求:你的github綁定了郵箱,而且是在國外可用的(Gmail,outlook等)客们。

二.新建maven倉庫

不多說崇决〔姆蹋看圖說話


創(chuàng)建完成之后就會多一個maven

三.項目配置。

1.根目錄配置

把上傳好的恒傻,在GitHub上公開的項目導(dǎo)入下來(本地已有就不用再次導(dǎo)入了)

在項目的根目錄下的build.gradle如下配置

dependencies{

//注意:此處版本如果不是2.3.3脸侥,下方的版本有可能無效或者報錯。更換此處版本或者下方的版本即可盈厘。報錯及解決方案在下方

classpath'com.android.tools.build:gradle:2.3.3'?

// 添加下面兩行代碼即可睁枕。

classpath'com.github.dcendents:android-maven-gradle-plugin:1.5'

classpath'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

報錯:

No service of type Factory available in ProjectScopeServices.錯誤解決:

https://code.google.com/p/android/issues/detail?id=219692

上面這個鏈接需要翻墻才可查看。但是終究是版本號不匹配沸手,多嘗試更換幾次版本即可外遇。

如:classpath 'com.android.tools.build:gradle:2.1.3' ,這時就要使用

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'契吉,而不是

classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'

修改完成之后如圖:


2.依賴配置

在library的module下(你想要讓別人遠(yuǎn)程依賴的module)build.gradle中進(jìn)行如下配置

// 添加下面兩行代碼即可跳仿。

apply plugin: 'com.github.dcendents.android-maven'

apply plugin: 'com.jfrog.bintray'

defaultConfig {

// applicationId "xxx.xxxx.xxx" // 如果有這一行要刪除,library沒有applicationId

minSdkVersion 8

targetSdkVersion 23

versionCode 1

versionName '1.0.1'

}

然后在最下方

dependencies {

compile fileTree(include: ['*.jar'],dir:'libs')

compile 'com.android.support:appcompat-v7:26.0.0-alpha1'

compile 'com.android.support:appcompat-v7:26.0.0-alpha1'

compile 'com.android.support:design:26.0.0-alpha1'

}

沒錯捐晶,就是在上面這些代碼的更下方添加如下代碼:


// 項目引用的版本號菲语,比如compile 'com.yanzhenjie:andserver:1.0.1'中的1.0.1就是這里配置的。

version="0.1"

// 定義兩個鏈接惑灵,下面會用到山上。

// 項目主頁。

def siteUrl ='https://github.com/xxxxx/項目地址'

// Git倉庫的url泣棋。(此處可以是ssh鏈接胶哲,也可以是http鏈接)

def gitUrl ='git@github.com:xxxx/項目地址.git'

// 唯一包名,比如compile 'com.yanzhenjie:andserver:1.0.1'中的com.yanzhenjie就是這里配置的潭辈。唯一

group="com.xxxx"?

install {

repositories.mavenInstaller{

// 生成pom.xml和參數(shù)

pom {

project{

packaging'aar'

// 項目描述鸯屿,這里需要修改。

name 'BaseLibrary For Android'// 可選把敢,項目名稱寄摆。

description 'The Android build the framework of the base library.'// 可選,項目描述修赞。

url siteUrl// 項目主頁婶恼,這里是引用上面定義好。

// 軟件開源協(xié)議柏副,現(xiàn)在一般都是Apache License2.0吧勾邦,復(fù)制我的,這里不需要修改割择。

licenses {

license {

name 'The Apache Software License, Version 2.0'

url 'http://www.apache.org/licenses/LICENSE-2.0.txt'

}

}

//填寫開發(fā)者基本信息眷篇,這里需要修改。

developers {

developer {

id 'xxxx'// 開發(fā)者的id荔泳。

name 'xxxx'// 開發(fā)者名字蕉饼。

email 'xxxxx@gmail.com'// 開發(fā)者郵箱虐杯。

}

}

// SCM,復(fù)制我的昧港,這里不需要修改擎椰。

scm {

connection gitUrl// Git倉庫地址。

developerConnection gitUrl// Git倉庫地址创肥。

url siteUrl// 項目主頁达舒。

}

}

}

}

}

// 生成jar包的task,不需要修改瓤的。

task sourcesJar(type: Jar) {

from android.sourceSets.main.java.srcDirs

classifier='sources'

}

// 生成jarDoc的task休弃,不需要修改。

task javadoc(type: Javadoc) {

options { //如果項目包含中文圈膏,最好配置上options,如果沒有中文塔猾,options這一整項可不要

encoding "UTF-8"

charSet 'UTF-8'

author true

version true

links "http://docs.oracle.com/javase/7/docs/api"

}

source= android.sourceSets.main.java.srcDirs

classpath+=project.files(android.getBootClasspath().join(File.pathSeparator))

// destinationDir = file("../javadoc/")

// 忽略注釋語法錯誤,如果用jdk1.8你的注釋寫的不規(guī)范就編譯不過稽坤。(如果電腦上有JDK1.9丈甸,配置之后還報錯,一定要卸載JDK1.9尿褪,切記)

failOnError false

}

// 生成javaDoc的jar睦擂,不需要修改。

task javadocJar(type: Jar,dependsOn: javadoc) {

classifier='javadoc'

from javadoc.destinationDir

}

artifacts {

archives javadocJar

archives sourcesJar

}

// 這里是讀取Bintray相關(guān)的信息杖玲,我們上傳項目到github上的時候會把gradle文件傳上去顿仇,所以不要把帳號密碼的信息直接寫在這里,寫在local.properties中摆马,這里動態(tài)讀取臼闻。

Properties properties =new Properties()

properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {

user = properties.getProperty("bintray.user")// Bintray的用戶名。

key = properties.getProperty("bintray.apikey")// Bintray剛才保存的ApiKey囤采。

configurations = ['archives']

pkg {

repo ="maven"http:// 上傳到maven庫述呐。

// 發(fā)布到Bintray上的項目名字,這里的名字不是compile 'com.yanzhenjie:andserver:1.0.1'中的andserver蕉毯。而是你在bintray網(wǎng)站上乓搬,你這個項目的名字。

name ="項目名字"

userOrg ='xxxx' // Bintray的用戶名代虾。

websiteUrl = siteUrl

vcsUrl = gitUrl

licenses = ["Apache-2.0"]

publish =true// 是否是公開項目进肯。

}

}

下面是修改之后的圖:



可以明確看到,配置中引用了一個文件(local.properties)棉磨。最后還有還有一步:打開local.properties文件(項目根目錄下)

復(fù)制這兩行進(jìn)去:

bintray.user=YOUR_BINTRAY_USERNAME

bintray.apikey=YOUR_BINTRAY_API_KEY

把上方的YOUR_BINTRAY_USERNAME和YOUR_BINTRAY_API_KEY替換成你自己的坷澡。

獲取方式如下圖:


三.上傳項目,用以共享(遠(yuǎn)程依賴)

打開android studio的命令行:

如圖:


輸入命令:gradlew install

等待編譯完成。BUILD SUCCESSFUL

再輸入命令:gradlew bintrayUpload

等待編譯完成频敛。BUILD SUCCESSFUL

或者不執(zhí)行上面這兩個命令,直接合成執(zhí)行下面這個命令就可以了:

gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

記住要把user和key換成自己的馅扣,同樣要顯示BUILD SUCCESSFUL才可以斟赚。

當(dāng)成功執(zhí)行完上述命令之后,登陸https://bintray.com/差油,你會發(fā)現(xiàn)maven中多了一個項目了拗军。


進(jìn)入maven⌒罾可以看到已經(jīng)成功了发侵。


進(jìn)入項目(不翻墻進(jìn)入會很慢,多等等就好)并將項目分享到j(luò)center妆偏。到這里本教程就基本完成了刃鳄。


最后別忘記提交


提交之后等待審核之后就能依賴使用了。我等了一天才能用钱骂。


本次教程到此結(jié)束叔锐。第一次寫文章,有不完善的地方請?zhí)岢瞿鷮氋F的意見

追加:

我以后想增加见秽、迭代怎么辦愉烙?

這個非常簡單,當(dāng)你的Library代碼更改后解取,先上傳同步步责,提交到github之后,只需要更改一下上面的配置里面的version

輸入命令:gradlew install

等待編譯完成禀苦。BUILD SUCCESSFUL

再運(yùn)行

gradlew clean build bintrayUpload -PdryRun=false蔓肯,就可以更新版本號了。

如果代碼運(yùn)行失敗伦忠,就像之前上傳一樣省核,將代碼分成兩次執(zhí)行。

輸入命令:gradlew install

等待編譯完成昆码。BUILD SUCCESSFUL

再輸入命令:gradlew bintrayUpload

等待編譯完成气忠。BUILD SUCCESSFUL

這樣,整個過程就結(jié)束了赋咽。更新的代碼可以立即使用(已經(jīng)通過本人測試)


附:上方的baselibrary中包含的庫及其常見使用?http://www.reibang.com/p/a97d8c564d19


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旧噪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脓匿,更是在濱河造成了極大的恐慌淘钟,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陪毡,死亡現(xiàn)場離奇詭異米母,居然都是意外死亡勾扭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門铁瞒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妙色,“玉大人,你說我怎么就攤上這事慧耍∩肀妫” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵芍碧,是天一觀的道長煌珊。 經(jīng)常有香客問我,道長泌豆,這世上最難降的妖魔是什么定庵? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮践美,結(jié)果婚禮上洗贰,老公的妹妹穿的比我還像新娘。我一直安慰自己陨倡,他們只是感情好敛滋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兴革,像睡著了一般绎晃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杂曲,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天庶艾,我揣著相機(jī)與錄音,去河邊找鬼擎勘。 笑死咱揍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的棚饵。 我是一名探鬼主播煤裙,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼噪漾!你這毒婦竟也來了硼砰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤欣硼,失蹤者是張志新(化名)和其女友劉穎题翰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡豹障,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年冯事,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片血公。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡桅咆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坞笙,到底是詐尸還是另有隱情,我是刑警寧澤荚虚,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布薛夜,位于F島的核電站,受9級特大地震影響版述,放射性物質(zhì)發(fā)生泄漏梯澜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一渴析、第九天 我趴在偏房一處隱蔽的房頂上張望晚伙。 院中可真熱鬧环戈,春花似錦纲辽、人聲如沸戚啥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽识藤。三九已至莺戒,卻和暖如春懊昨,著一層夾襖步出監(jiān)牢的瞬間毡们,已是汗流浹背迅皇。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衙熔,地道東北人登颓。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像红氯,于是被迫代替她去往敵國和親框咙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

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