JitPack、jCenter是我們常用的發(fā)布Android開(kāi)源庫(kù)的網(wǎng)站,發(fā)布成功后就可以在Android Studio中通過(guò)Gradle方便的引用到項(xiàng)目中了,相比Eclipse時(shí)代要方便的多,對(duì)于使用者確實(shí)簡(jiǎn)單了,但對(duì)于發(fā)布者來(lái)說(shuō)可能還略有坎坷,這里記錄下發(fā)布的過(guò)程,以及遇到的坑。
發(fā)布到JitPack
一、
準(zhǔn)備好項(xiàng)目以及要發(fā)布的開(kāi)源庫(kù),并先將其上傳到github。
有一點(diǎn)需要注意,上傳到JitPack的開(kāi)源庫(kù)默認(rèn)使用項(xiàng)目的名稱,而不是要發(fā)布的開(kāi)源庫(kù)的名稱,所以盡量給項(xiàng)目起一個(gè)比較優(yōu)雅的名字(這里我們使用同名)。
二、
這里我們要用到一個(gè)的插件android-maven-gradle-plugin
1、、在項(xiàng)目的build.gradle添加classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
,如下圖:
2、在要上傳的library的build.gralde文件添加如下代碼:
// JitPack Maven
apply plugin: 'com.github.dcendents.android-maven'
// Your Group
group='com.github.username'
其中username需要替換為你在github上的用戶名
如下圖所示:
記得將修改后的代碼提交到github哦。
三、
打開(kāi)項(xiàng)目的github主頁(yè),創(chuàng)建一個(gè)Release或Tag,可按如下步驟:
1、
2、
3、
4、
四、
1、將項(xiàng)目的倉(cāng)庫(kù)提交到JitPack:https://jitpack.io/
2、版本提交完成后,JitPack會(huì)自動(dòng)生成引用該library的配置信息:
最后就可以愉快的在項(xiàng)目中使用了。
發(fā)布到j(luò)Center
一、
準(zhǔn)備好要發(fā)布的library:
二、
1、jCenter屬于bintray旗下的一個(gè)倉(cāng)庫(kù),所以先要注冊(cè)賬號(hào)哦,https://bintray.com
2、按照如下步驟得到API Key,在上傳library的時(shí)候需要用到。
3、創(chuàng)建一個(gè)名字為maven的Repository
4、在maven倉(cāng)庫(kù)中創(chuàng)建一個(gè)package,注意package的名字和要發(fā)布的library的名字相同
三、
關(guān)于上傳可以使用gradle-bintray-plugin插件,但是略復(fù)雜,所以我們采用bintray-release
1、在項(xiàng)目的build.gradle添加bintray-release的classpath:classpath 'com.novoda:bintray-release:0.3.4'
,如下圖:
2、在要上傳的library的build.gralde文件添加如下代碼:
apply plugin: 'com.android.library'
//新添加
apply plugin: 'com.novoda.bintray-release'
android {
compileSdkVersion 24
buildToolsVersion "24.0.3"
defaultConfig {
minSdkVersion 10
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
}
//新添加
publish {
userOrg = 'othershe' //在https://bintray.com上注冊(cè)的用戶名
groupId = 'com.othershe' //jCenter上的路徑
artifactId = 'dutil' //要上傳的library名稱(和二、4中的package相同)
publishVersion = '1.0.0' //library的版本號(hào)
desc = 'A download library,that is based on okhttp' //library的簡(jiǎn)單描述
website = 'https://github.com/Othershe/DUtil' //library的開(kāi)源地址,例如在github上的地址
}
到這里必須的代碼配置就完了,主要的注釋都有了,按照上邊的編寫即可。
四、
1、可以在AndroidStudio的Terminal中執(zhí)行命令:gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
其中PbintrayUser代表注冊(cè)的用戶名,PbintrayKey就是上邊得到的API Key,PdryRun是一個(gè)配置參數(shù),當(dāng)為true的時(shí)候,會(huì)運(yùn)行所有的環(huán)節(jié),但是不會(huì)上傳,如下圖:
2、不出意外的話等待2到3分鐘即可上傳成功。但是呢這一步往往有許多的坑呀,這里簡(jiǎn)單的記錄下:
-
坑1:
這個(gè)好處理,主要是因?yàn)閘int檢查時(shí)報(bào)錯(cuò),因此中斷了整個(gè)編譯過(guò)程,在要上傳的library的build.gralde文件的android標(biāo)簽里添加如下代碼即可。
android {
lintOptions {
abortOnError false
}
}
-
坑2:
網(wǎng)上大部分辦法都說(shuō)在項(xiàng)目的build.gradle文件的allprojects 標(biāo)簽里添加如下代碼:
allprojects {
tasks.withType(Javadoc) {
options {
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
之前上傳另外一個(gè)項(xiàng)目確實(shí)可行,但這次確無(wú)效了,最后找到了如下方案,在項(xiàng)目的build.gradle文件的allprojects 標(biāo)簽里添加如下代碼:
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}
解決了遇到的問(wèn)題,再執(zhí)行上傳命令,終于成功了:
五、
上傳成功后就可以在maven倉(cāng)庫(kù)中看到我們的library:
點(diǎn)進(jìn)去則可以看到詳情:
此時(shí)我們還不能在項(xiàng)目中引用該庫(kù),要將其添加到j(luò)Center,點(diǎn)擊上圖右下角的按鈕:
填寫一些對(duì)library的描述,然后發(fā)送。等待數(shù)小時(shí)審核通過(guò)后會(huì)郵件通知你的,之后就可以在項(xiàng)目中引用了:
到這里兩種發(fā)布方式就介紹完了,布到j(luò)Center的步驟雖然也不算復(fù)雜,但很少能一次發(fā)布成功,總會(huì)被一些問(wèn)題折騰半天。相比之下發(fā)布到JitPack要簡(jiǎn)單的多,最重要的是省時(shí)省力,沒(méi)有那么多的問(wèn)題困擾,真是給力呀!如果你也有發(fā)布開(kāi)源庫(kù)的需求,選擇哪種方式相信你也有答案了。