手把手教你將Android項目開源到JCenter兩種方式以及挖坑和填坑(一)

- 前言

開發(fā)中郭蕉,或多或少都會用到無私的程序猿分享的開源項目搁骑,Androidstudio中使用開源也很方便
例如家喻戶曉的Rxjava邓萨,只需要一句話compile 'io.reactivex:rxjava:1.1.6'朋沮,就可以添加到項目中,時間久了囱淋,是不是自己也想試試開源一下自己的成果猪杭,給大家用用,獲得成(zhuang)就(bi)感妥衣?
開整吧皂吮,盡量詳細講解

- 注冊(第一坑)

注冊本來很簡單,但是在這就有大坑税手,在查找資料時間發(fā)現(xiàn)蜂筹,很多人直接扔的官網(wǎng)注冊地址,但是官網(wǎng)注冊默認是組織芦倒,有30天試用期艺挪,之后要付費。而且發(fā)布時候各種問題兵扬,折騰大半天麻裳,
所以我們需要的網(wǎng)址是:正確注冊地址口蝠、正確注冊地址正確注冊地址

開始注冊

注冊頁面

注冊成功之后
這時候有兩種發(fā)布方式津坑,一種是gradle-bintray-plugin,一種bintray-release

  • 本篇文章將介紹第一種gradle-bintray-plugin

第二種方法手把手教你將Android項目開源到JCenter兩種方式以及挖坑和填坑(二)

1.創(chuàng)建一個Maven倉庫妙蔗,點擊Add New Repository

Maven倉庫.png

2.進入創(chuàng)建頁面,可以看圖操作

創(chuàng)建頁面.png

3.設置倉庫為Public疆瑰,Name填寫為maven灭必,類型Type設置Maven,Default Licenses選擇Apache-2.0乃摹,Description就是庫的描述,自由填寫跟衅,然后點擊Create孵睬,稍等幾秒鐘,就完成創(chuàng)建伶跷,然后回到主頁掰读,在Add New Repository位置就可以看到創(chuàng)建的maven倉庫

創(chuàng)建成功

這時候回到Androidstudio進行配置
4.在Project的build.gradle中,加入Maven和Jfrog Bintray的依賴插件

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath 'me.tatarka:gradle-retrolambda:3.2.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'com.google.gms:google-services:2.0.0-alpha3'

        //添加下面兩句叭莫,進行配置
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
    }
}
allprojects {
    repositories {
        jcenter()
        maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

5.然后在library的build.gradle中進行配置蹈集,例如我要開源的項目FloatingActionButton

library的build.gradle

完整的build.grale中,

apply plugin: 'com.android.library'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    defaultConfig {
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    allprojects {
        tasks.withType(Javadoc) {
            options.addStringOption('Xdoclint:none', '-quiet')
            options.addStringOption('encoding', 'UTF-8')
        }
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    testCompile 'junit:junit:4.12'
}

//從這里開始配置

//添加這兩行
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'

//項目主頁--項目的GitHub地址
def siteUrl = 'https://github.com/dazhaoDai/FloatingActionButton'
//項目的git地址
def gitUrl = 'https://github.com/dazhaoDai/FloatingActionButton.git'

//發(fā)布到JCenter上的項目名字雇初,compile引用時的第2部分項目名
def libName = "FloatingActionButton"
//compile引用時的第1部分
group = "com.ddz.materialdesign"
// 版本號拢肆,//compile引用時的最后部分項目名,下次更新是只需要更改版本號即可
version = "1.0.1"
//上面配置后上傳至JCenter后的編譯路徑是這樣的: compile 'com.ddz.materialdesign:FloatingActionButton:1.0.1'

//生成源文件
task sourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier = 'sources'
}

//生成Javadoc文檔
task javadoc(type: Javadoc) {
    source = android.sourceSets.main.java.srcDirs
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

//文檔打包成jar
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

//拷貝javadoc文件
task copyDoc(type: Copy) {
    from "${buildDir}/docs/"
    into "docs"
}

//上傳到JCenter所需要的源碼文件
artifacts {
    archives javadocJar
    archives sourcesJar
}

// 配置maven庫靖诗,生成POM.xml文件
install {
    repositories.mavenInstaller {
        // This generates POM.xml with proper parameters
        pom {
            project {
                packaging 'aar'
                //項目描述郭怪,自由填寫
                name 'A customizable FloatingActionButton on Android'
                url siteUrl
                licenses {
                    license {
                        //開源協(xié)議
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        //開發(fā)者的個人信息,根據(jù)個人信息填寫
                        id 'ddz'
                        name 'daidazhao'
                        email 'daidazhao@gmail.com'
                    }
                }
                scm {
                    connection gitUrl
                    developerConnection gitUrl
                    url siteUrl
                }
            }
        }
    }
}

//上傳到JCenter
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {
    user = properties.getProperty("bintray.user")    //讀取 local.properties 文件里面的 bintray.user
    key = properties.getProperty("bintray.apikey")   //讀取 local.properties 文件里面的 bintray.apikey
    configurations = ['archives']
    pkg {
        //這里的repo值必須要和你創(chuàng)建Maven倉庫的時候的名字一樣刊橘,我們前面創(chuàng)建的就是maven
        repo = "maven"
        //發(fā)布到JCenter上的項目名字
        name = libName
        //項目描述
        desc = 'A customizable FloatingActionButton on Android'
        websiteUrl = siteUrl
        vcsUrl = gitUrl
        licenses = ["Apache-2.0"]
        publish = true
    }
}

javadoc {
    options {
        //如果你的項目里面有中文注釋的話鄙才,必須將格式設置為UTF-8,不然會出現(xiàn)亂碼
        encoding "UTF-8"
        charSet 'UTF-8'
        author true
        version true
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}

6.這個時候促绵,還差關鍵一步攒庵,就是設置user和apikey

Paste_Image.png

在local.properties中,添加

bintray.user=dazhao
bintray.apikey=*****************************************************

這里用到user败晴,是之前注冊的用戶名浓冒,看圖

user.png

而apikey,則需要我們去申請,具體步驟尖坤,點擊Edit Profile裆蒸,選擇API KEY,根據(jù)登錄密碼糖驴,申請API KEY僚祷,具體流程看圖

點擊Edit Profile

根據(jù)登錄密碼佛致,申請KEY

根據(jù)登錄密碼申請key

把user和apikey填到上面的local.properties文件中。配置工作就此結束

開始提交
7.第一步----打開Androidstudio的Terminal窗口辙谜,Windows系統(tǒng)輸入gradlew install,Mac加上在前面加上./俺榆,回車,
如果成功的話會出現(xiàn)

BUILD SUCCESSFUL

BUILD SUCCESSFUL.png

8.然后進行第二步装哆,輸入gradlew bintrayUpload 罐脊,回車

Paste_Image.png

看到BUILD SUCCESSFUL,說明提交成功了

BUILD SUCCESSFUL

9.這個時候打開maven倉庫蜕琴,可以看到萍桌,已經提交成功了

提交倉庫成功

現(xiàn)在需要最后一步,進入項目凌简,右下角有個Add to Jcenter按鈕

Paste_Image.png

10.點擊打開上炎,添加描述信息,直接點擊Send雏搂,等待JCenter審核

Paste_Image.png

11.審核等待時間不太長藕施,甚至1個小時左右就成功了,審核通過之后凸郑,Add to Jcenter按鈕會消失裳食,同時會受到消息提示

按鈕消失
提示通過審核.png

至此,通過gradle-bintray-plugin方式芙沥,提交開源項目诲祸,就完成了。
我們就可以愉快的使用了自己造的輪子了

compile 'com.ddz.materialdesign:FloatingActionButton:1.0.1'

但是而昨,說好的挖坑和填坑烦绳,肯定不會就這樣:
填坑

  • 坑1

What went wrong:
Execution failed for task ':FloatingActionButton:bintrayUpload'.
Could not create package 'daidazhao/maven/FloatingActionButton': HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

遇到這種錯,提示local.properties中user或者apikey設置錯誤配紫,先檢查user名字和apikey是否設置錯誤径密,如果檢查無誤,極有可能是之前注冊使用的官網(wǎng)地址躺孝,導致報錯

  • 坑2

Could not upload to 'https://xxxxxxx.pom': HTTP/1.1 400 Bad Request [message:Unable to upload files: Maven group, artifact or version defined in the pom file do not match the file path 'xxxxxxx.pom']

說明library中rope的值和倉庫名字不一致享扔,檢查兩個值是否一致

Paste_Image.png
Paste_Image.png
  • 坑3
  • What went wrong:
    Execution failed for task ':FloatingActionButton:bintrayUpload'.
    Could not create package 'dazhao/maven/FloatingActionButton': HTTP/1.1 404 Not Found

找不到用戶名,說明local.properties中user填寫植袍,檢查名字是否用的是注冊名字

總結
整理整個過程
1.注冊賬號
2.創(chuàng)建maven的Repository
3.在項目根目錄的build.gradle中添加bintray插件
4.修改Module中的build.gradle中的配置
5.在local.properties中添加user和apikey的認證
6.在Android Studio的Terminal使用 gradlew install / bintrayUpload上傳
7.最后在maven倉庫中同步到Jcenter中
8.通過審核惧眠,開始使用

參考

一步一步教你在JCenter發(fā)布開源庫
android開源庫發(fā)布到jcenter圖文詳解與填坑

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市于个,隨后出現(xiàn)的幾起案子氛魁,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秀存,死亡現(xiàn)場離奇詭異捶码,居然都是意外死亡,警方通過查閱死者的電腦和手機或链,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門惫恼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澳盐,你說我怎么就攤上這事祈纯。” “怎么了叼耙?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵腕窥,是天一觀的道長。 經常有香客問我筛婉,道長簇爆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任倾贰,我火速辦了婚禮,結果婚禮上拦惋,老公的妹妹穿的比我還像新娘匆浙。我一直安慰自己,他們只是感情好厕妖,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布首尼。 她就那樣靜靜地躺著,像睡著了一般言秸。 火紅的嫁衣襯著肌膚如雪软能。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天举畸,我揣著相機與錄音查排,去河邊找鬼。 笑死抄沮,一個胖子當著我的面吹牛,可吹牛的內容都是我干的叛买。 我是一名探鬼主播砂代,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼率挣!你這毒婦竟也來了刻伊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捶箱,沒想到半個月后智什,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡讼呢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年撩鹿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悦屏。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡节沦,死狀恐怖,靈堂內的尸體忽然破棺而出础爬,到底是詐尸還是另有隱情甫贯,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布看蚜,位于F島的核電站叫搁,受9級特大地震影響,放射性物質發(fā)生泄漏供炎。R本人自食惡果不足惜渴逻,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望音诫。 院中可真熱鬧惨奕,春花似錦、人聲如沸竭钝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香罐。三九已至卧波,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庇茫,已是汗流浹背港粱。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旦签,地道東北人啥容。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像顷霹,于是被迫代替她去往敵國和親咪惠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容