在android開發(fā)的過程中氨菇,我們經(jīng)常使用一些大神或者前輩們打包好的開源庫和功能組件,這些開源項(xiàng)目給我們的開發(fā)帶來了極大的便利,我們通過簡單的幾行代碼就可以為自己的應(yīng)用添加上一個(gè)好用的功能模塊余佃,類似這樣:
下面我們就親自動(dòng)手來發(fā)布自己的開源庫蔽氨。
在網(wǎng)上查閱了好多大神的教程藐唠,也照著做了,但是都沒有成功鹉究,因?yàn)榕渲胋uild.gradle那塊比較復(fù)雜宇立,老是出現(xiàn)各種問題,后來我通過觀察其他有名的開源項(xiàng)目發(fā)現(xiàn)國外大神已經(jīng)把大部分的gradle配置操作幫我們做好了自赔,并打包了一個(gè)很好用的開源項(xiàng)目妈嘹,點(diǎn)這里 我們只需要引用就可以了,在此表達(dá)下對(duì)大神的景仰绍妨!
一润脸、首先你得有自己的開源項(xiàng)目
23333,其實(shí)暫時(shí)沒有也沒關(guān)系他去,目前主要是來學(xué)習(xí)怎么發(fā)布毙驯,隨便找一個(gè)項(xiàng)目練練手就行。
假設(shè)現(xiàn)在你已經(jīng)有了一個(gè)android studio項(xiàng)目灾测。
1.在自己的項(xiàng)目上尔苦,右鍵,新建一個(gè)moudle:
注意選擇moudle類型是Android Library:
完成了之后你的project下就會(huì)多出來一個(gè)類似這樣的moudle:
名字你可以寫你自己的library的名字行施。然后就可以在這個(gè)library中編寫你的代碼允坚。這里我為了方便,刪掉了所有的測試代碼蛾号,如果你有編寫測試的話稠项,可以保留。
二鲜结、jFrog bintrary操作
1.開通JFrog
打開jFrog bintrary注冊賬號(hào)展运,可以用github賬號(hào)或者google賬號(hào)直接登錄。
2.創(chuàng)建maven倉庫
這一步和創(chuàng)建git倉庫稍微有些類似精刷。
這里需要注意的一點(diǎn)是倉庫名字必須填maven拗胜,否則后面上傳的時(shí)候會(huì)有錯(cuò)誤,這個(gè)有點(diǎn)奇怪怒允,后面有時(shí)間再看下埂软。
3.添加package
倉庫建好后開始進(jìn)入你的倉庫,添加一個(gè)package纫事。
這里弄完了之后勘畔,jFrog的配置基本上就弄好了所灸。
三、library發(fā)布前的配置
1.首先打開你的project下的build.gradle,修改成下面這樣
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'//你的gradle版本
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'//添加maven插件
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.novoda:bintray-release:0.4.0'//引入我們前面所說的插件(關(guān)鍵)
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
這里有個(gè)問題就是gradle版本和maven插件版本的匹配問題炫七,大家要找到和自己的gradle版本匹配的maven插件爬立。
2.編輯library所在的moudle下的build.gradle。
同樣打開文件万哪,對(duì)應(yīng)下面的標(biāo)注修改侠驯。
這里為了方便,我刪掉了所有的測試模塊相關(guān)的內(nèi)容奕巍,因?yàn)槲覜]有寫任何的測試代碼吟策,如果你有寫測試代碼的話,可以保留測試模塊伍绳。
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.novoda.bintray-release'//添加插件
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
}
allprojects {
tasks.withType(Javadoc) {//兼容中文字符
options{
encoding "UTF-8"
charSet 'UTF-8'
links "http://docs.oracle.com/javase/7/docs/api"
}
}
}
publish {
userOrg = 'misakamikoto'//bintray.com 用戶名踊挠,在你登錄jfrog后右上角可以看到,例如我的是misakamikoto
groupId = 'com.mewlxy.commontitlebar'//JCenter上顯示的路徑 path
artifactId = 'CommonTitleBar'//項(xiàng)目名稱 之前填寫過的library名稱
publishVersion = '1.0.1'//版本號(hào) version code
desc = 'this is a common titlebar for android'//項(xiàng)目描述 description
website = 'https://github.com/lxygithub/CommonTitleBar' //項(xiàng)目網(wǎng)址鏈接 link
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-compat:25.3.1'
}
3.編譯冲杀、打包和上傳
在com.novoda:bintray的主頁效床,我們可以看到使用說明,非常簡單权谁,一句命令就搞定了剩檀。
先在你的android studio下方找到Terminal,打開它旺芽。
然后輸入線面這條命令:
gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false
這里需要填寫兩個(gè)參數(shù)沪猴,BINTRAY_USERNAME就是我們上面填寫的那個(gè)jFrog上的username。
BINTRAY_KEY在這里可以看到:
然后在顯示的輸入框中輸入你的密碼采章,就可以看到了运嗜。
把上面的命令中的兩個(gè)參數(shù)替換了之后,回車執(zhí)行就可以了悯舟。成功后你會(huì)在命令行中看到BUILDED SUCCESS的字樣担租。
從上面的命令我們可以看出一共執(zhí)行了三條命令,分別是clean抵怎、build和bintraryUpload奋救,也就是這條命令把gradlew clean、gradlew build和gradlew bintraryUpload這三個(gè)命令合成了一條反惕,如果你只是想執(zhí)行其中一個(gè)操作的話尝艘,也可以單獨(dú)執(zhí)行命令,只有bintraryUpload命令是需要傳username和key參數(shù)的姿染。
四背亥、提交到j(luò)center審核
命令執(zhí)行成功之后,你的library下面的build目錄下的outputs文件夾下會(huì)多出幾個(gè)文件類似這樣:
這些就是被上傳到j(luò)center的庫文件。
回到j(luò)frog,可以看到我們剛才上傳成功的package file:
點(diǎn)擊它隘梨,進(jìn)入:
提交完成之后程癌,等待一段時(shí)間舷嗡,審核通過之后(審核通過會(huì)有右鍵提醒)轴猎,就可以在項(xiàng)目中愉快的使用開源庫了。:)
當(dāng)你的library更新時(shí)进萄,就重新使用命令build并上傳就可以了捻脖。切記要更改版本號(hào)!
我的gradle配置中鼠,大家可以參考下可婶。
參考資料
http://blog.csdn.net/hejjunlin/article/details/52452220
http://blog.chengdazhi.com/index.php/217