安卓 將自己的庫讓別人遠程依賴

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


一.注冊bintray賬號

bintray的官網:https://bintray.com

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

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

二.新建maven倉庫

不多說。看圖說話


創建完成之后就會多一個maven

三.項目配置。

1.根目錄配置

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

在項目的根目錄下的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下(你想要讓別人遠程依賴的module)build.gradle中進行如下配置

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

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和參數

pom {

project{

packaging'aar'

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

name 'BaseLibrary For Android'// 可選,項目名稱。

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

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

// 軟件開源協議,現在一般都是Apache License2.0吧,復制我的,這里不需要修改。

licenses {

license {

name 'The Apache Software License, Version 2.0'

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

}

}

//填寫開發者基本信息,這里需要修改。

developers {

developer {

id 'xxxx'// 開發者的id。

name 'xxxx'// 開發者名字。

email 'xxxxx@gmail.com'// 開發者郵箱。

}

}

// SCM,復制我的,這里不需要修改。

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你的注釋寫的不規范就編譯不過。(如果電腦上有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相關的信息,我們上傳項目到github上的時候會把gradle文件傳上去,所以不要把帳號密碼的信息直接寫在這里,寫在local.properties中,這里動態讀取。

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庫。

// 發布到Bintray上的項目名字,這里的名字不是compile 'com.yanzhenjie:andserver:1.0.1'中的andserver。而是你在bintray網站上,你這個項目的名字。

name ="項目名字"

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

websiteUrl = siteUrl

vcsUrl = gitUrl

licenses = ["Apache-2.0"]

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

}

}

下面是修改之后的圖:



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

復制這兩行進去:

bintray.user=YOUR_BINTRAY_USERNAME

bintray.apikey=YOUR_BINTRAY_API_KEY

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

獲取方式如下圖:


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

打開android studio的命令行:

如圖:


輸入命令:gradlew install

等待編譯完成。BUILD SUCCESSFUL

再輸入命令:gradlew bintrayUpload

等待編譯完成。BUILD SUCCESSFUL

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

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

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

當成功執行完上述命令之后,登陸https://bintray.com/,你會發現maven中多了一個項目了。


進入maven。可以看到已經成功了。


進入項目(不翻墻進入會很慢,多等等就好)并將項目分享到jcenter。到這里本教程就基本完成了。


最后別忘記提交


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


本次教程到此結束。第一次寫文章,有不完善的地方請提出您寶貴的意見

追加:

我以后想增加、迭代怎么辦?

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

輸入命令:gradlew install

等待編譯完成。BUILD SUCCESSFUL

再運行

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

如果代碼運行失敗,就像之前上傳一樣,將代碼分成兩次執行。

輸入命令:gradlew install

等待編譯完成。BUILD SUCCESSFUL

再輸入命令:gradlew bintrayUpload

等待編譯完成。BUILD SUCCESSFUL

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


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


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容