今天突然心血來潮星压,想折騰一下,讓自己的庫能夠被遠(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