目的
這篇文章介紹通過(guò)Gradle把開(kāi)源項(xiàng)目發(fā)布到公共倉(cāng)庫(kù)JCenter中晓铆,發(fā)布自己的android library(也就是aar)到公共的jcenter倉(cāng)庫(kù)。
為什么選擇JCenter,因?yàn)镴Center現(xiàn)在是Android Studio中repositories的默認(rèn)節(jié)點(diǎn)了,之前是Maven的,不過(guò)JCenter是兼容Maven的。
環(huán)境
Android Studio 2.2.3
參考資料
http://www.reibang.com/p/c4f4894ad215
http://www.reibang.com/p/6a6eca8c24c4
http://www.cnblogs.com/qianxudetianxia/p/4322331.html
申請(qǐng)Bintray賬號(hào)
在bintray上注冊(cè)一個(gè)賬號(hào) 建議注冊(cè)個(gè)人賬號(hào)雏婶。
可以使用github賬號(hào)直接授權(quán)登陸。
很重要白指,由于 Bintray網(wǎng)站 改版了留晚,增加了Organization的概念。如果點(diǎn)擊中間那個(gè)大大的綠色按鈕告嘲,用那個(gè)點(diǎn)了注冊(cè)就錯(cuò)了4砦! 變成了注冊(cè)一個(gè)組織橄唬,注冊(cè)地址是 https://bintray.com/signup 提交aar的時(shí)候就會(huì)出現(xiàn)Unauthorized這個(gè)錯(cuò)誤 注意:個(gè)人的注冊(cè)地址為https://bintray.com/signup/oss
天大的坑赋焕!一開(kāi)始就進(jìn)入了上面的坑到最后提交上傳aar的時(shí)候一直上傳不上去!Q龀宏邮!,查閱相關(guān)資料后才爬出坑....得注冊(cè)個(gè)人號(hào)
組織號(hào)如何提交待研究
記錄API Key
注冊(cè)后缸血,在https://bintray.com/profile/edit 中查看蜜氨,首次查看的時(shí)候提示需要輸入登錄密碼確認(rèn)。
創(chuàng)建maven倉(cāng)庫(kù)
配置build.gradle
配置插件上傳到bintray需要的插件
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
插件版本過(guò)低可能遇到如下的異常
然后在你需要發(fā)布的那個(gè)module(即是library aar)的build.gradle
里配置如下內(nèi)容:
1捎泻、配置插件
// 根節(jié)點(diǎn)添加
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
2飒炎、配置版本
// 根節(jié)點(diǎn)添加
version = "0.0.1"
3、定義相關(guān)網(wǎng)站
// 根節(jié)點(diǎn)添加
def siteUrl = 'https://github.com/Javen205/JPay' // project homepage
def gitUrl = 'https://github.com/Javen205/JPay.git' // project git
4笆豁、定義Group
舉個(gè)例子郎汪,當(dāng)我們引用retrofit
的時(shí)候是這樣的:
compile 'com.squareup.retrofit2:retrofit:2.1.0
引號(hào)內(nèi)字符串以冒號(hào)分割為三部分,第一部分就是group闯狱,第二部分是name煞赢, 第三部分是上面定義的version。
// 根節(jié)點(diǎn)添加
group = "com.javen205.jpay"
上傳到j(luò)center至少需要四個(gè)文件哄孤,除了打包的aar之外照筑,還需要pom和javadoc,source,否則是通不過(guò)jcenter的審核凝危。這些我們都可以用腳本生成波俄。
5、打包javadocjar和sourcejar
這也是上傳到j(luò)center必須要的蛾默。
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
6懦铺、定義pom并打包aar
// 根節(jié)點(diǎn)添加
install {
repositories.mavenInstaller {
// This generates POM.xml with proper parameters
pom {
project {
packaging 'aar'
name 'JPay For Android'
url siteUrl
// Set your license
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer { //填寫的一些基本信息
id 'javen205'
name 'javen.zhou'
email 'javen205@126.com'
}
}
scm {
connection gitUrl
developerConnection gitUrl
url siteUrl
}
}
}
}
}
7、上傳到Jcenter倉(cāng)庫(kù)
上傳到j(luò)center的網(wǎng)站Bintray支鸡,需要用戶驗(yàn)證:
bintrayUser=your_user_name 我這里為javendev
bintrayApiKey=your_apikey 就是在上面記錄的API Key
這個(gè)屬于個(gè)人隱私冬念,一般不傳,所以需要在記錄到項(xiàng)目下的local.properties中(利用gitignore忽略這個(gè)文件到git)牧挣,然后腳本再?gòu)膌ocal.properties中讀取這兩個(gè)值急前。
//配置bintray參數(shù)
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintrayUser")
key = properties.getProperty("bintrayApiKey")
configurations = ['archives']
pkg {
repo = "maven" //跟上面創(chuàng)建的Maven倉(cāng)庫(kù)名字保持一致
name = "JPay" //發(fā)布到JCenter上的項(xiàng)目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
準(zhǔn)備工作終于都做完了,我們開(kāi)始使用插件自動(dòng)上傳aar到bintray浸踩。如果一切順利的話就可以完成上傳
誰(shuí)便填寫一個(gè)repoName
不填寫repoName
重復(fù)提交
將庫(kù)提交到JCenter叔汁,點(diǎn)擊右側(cè)的
Add to JCenter
出現(xiàn)這個(gè)錯(cuò)誤的原因是執(zhí)行腳本時(shí)并沒(méi)有默認(rèn)生成
pom-default.xml
以及相關(guān)的文檔和jar统求,添加到JCenter又必須需要检碗,以下是解決方案
可以在Terminal
中執(zhí)行如下命令如果成功了就會(huì)在Lib工程
的build
目錄中自動(dòng)生成docs
libs
./gradlew clean build bintrayUpload
可能會(huì)遇到的錯(cuò)誤
Fix the issues identified by lint, or add the following to your build script...
以上問(wèn)題解決了,我們?cè)?code>maven中刪除之前上傳的,再次上傳arr到bintray码邻,成功之后再點(diǎn)擊右側(cè)的
Add to JCenter
然后直接send就行(提交JCenter后groupID和在本地定義的一樣折剃,所以本地定義groupID要能標(biāo)識(shí)個(gè)人,最好到 https://jcenter.bintray.com 看下有沒(méi)有重復(fù)的包名)
最后耐心等待Bintray
審核通過(guò)像屋。
其實(shí)我們的
aar
已近上傳到的Maven
中我可以可以直接引用怕犁,上傳到JCenter
就不再需要定義自己maven倉(cāng)庫(kù)地址,直接compile即可己莺。
引用自己的庫(kù)
1奏甫、Maven方式引用自己的庫(kù)
只要在root下的build加上自己maven地址
maven{
url "https://dl.bintray.com/javendev/maven"
}
然后在app的build中加上引用即可
compile 'com.javen205.jpay:jpaylib:0.0.1'
2、compile方式引用自己的庫(kù)
如果上面添加到JCenter
審核通過(guò)凌受,就可以直接在app的build中加上引用即可
compile 'com.javen205.jpay:jpaylib:0.0.1'
如果沒(méi)有審核通過(guò)就添加引用當(dāng)然就會(huì)存在引用異常阵子,如下圖
安利時(shí)間
JPay是對(duì)微信App支付和支付寶支付App支付的SDK進(jìn)行二次封裝,對(duì)外提供一個(gè)較為簡(jiǎn)單的接口和支付結(jié)果回調(diào)
[![License](https://img.shields.io/badge/license-Apache%202-green.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Download](https://api.bintray.com/packages/javendev/maven/JPay/images/download.svg)](https://dl.bintray.com/javendev/maven/JPay/_latestVersion)
推薦閱讀
Android依賴管理與私服搭建
Android版-支付寶APP支付
Android版-微信APP支付
支付寶Wap支付你了解多少胜蛉?
一張二維碼集成微信挠进、支付寶支付
安利時(shí)間:
JPay是對(duì)微信App支付、支付寶App支付的二次封裝,對(duì)外提供一個(gè)相對(duì)簡(jiǎn)單的接口以及支付結(jié)果的回調(diào)
極速開(kāi)發(fā)微信公眾號(hào)是對(duì)微信公眾平臺(tái)接口的二次封裝誊册。包括開(kāi)發(fā)者模式领突、事件回調(diào)監(jiān)聽(tīng)、微信模板消息案怯、微信客服消息君旦、自定義菜單、微信支付、素材管理等
如遇到問(wèn)題歡迎留言交流