目的
這篇文章介紹通過Gradle把開源項目發布到公共倉庫JCenter中,發布自己的android library(也就是aar)到公共的jcenter倉庫。
為什么選擇JCenter,因為JCenter現在是Android Studio中repositories的默認節點了,之前是Maven的,不過JCenter是兼容Maven的。
環境
Android Studio 2.2.3
參考資料
http://www.lxweimin.com/p/c4f4894ad215
http://www.lxweimin.com/p/6a6eca8c24c4
http://www.cnblogs.com/qianxudetianxia/p/4322331.html
申請Bintray賬號
在bintray上注冊一個賬號 建議注冊個人賬號。
可以使用github賬號直接授權登陸。
很重要,由于 Bintray網站 改版了,增加了Organization的概念。如果點擊中間那個大大的綠色按鈕,用那個點了注冊就錯了!! 變成了注冊一個組織,注冊地址是 https://bintray.com/signup 提交aar的時候就會出現Unauthorized這個錯誤 注意:個人的注冊地址為https://bintray.com/signup/oss
天大的坑!一開始就進入了上面的坑到最后提交上傳aar的時候一直上傳不上去!!!,查閱相關資料后才爬出坑....得注冊個人號
組織號如何提交待研究
記錄API Key
注冊后,在https://bintray.com/profile/edit 中查看,首次查看的時候提示需要輸入登錄密碼確認。
創建maven倉庫
配置build.gradle
配置插件上傳到bintray需要的插件
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
插件版本過低可能遇到如下的異常
然后在你需要發布的那個module(即是library aar)的build.gradle
里配置如下內容:
1、配置插件
// 根節點添加
apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
2、配置版本
// 根節點添加
version = "0.0.1"
3、定義相關網站
// 根節點添加
def siteUrl = 'https://github.com/Javen205/JPay' // project homepage
def gitUrl = 'https://github.com/Javen205/JPay.git' // project git
4、定義Group
舉個例子,當我們引用retrofit
的時候是這樣的:
compile 'com.squareup.retrofit2:retrofit:2.1.0
引號內字符串以冒號分割為三部分,第一部分就是group,第二部分是name, 第三部分是上面定義的version。
// 根節點添加
group = "com.javen205.jpay"
上傳到jcenter至少需要四個文件,除了打包的aar之外,還需要pom和javadoc,source,否則是通不過jcenter的審核。這些我們都可以用腳本生成。
5、打包javadocjar和sourcejar
這也是上傳到jcenter必須要的。
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
// 根節點添加
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倉庫
上傳到jcenter的網站Bintray,需要用戶驗證:
bintrayUser=your_user_name 我這里為javendev
bintrayApiKey=your_apikey 就是在上面記錄的API Key
這個屬于個人隱私,一般不傳,所以需要在記錄到項目下的local.properties中(利用gitignore忽略這個文件到git),然后腳本再從local.properties中讀取這兩個值。
//配置bintray參數
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" //跟上面創建的Maven倉庫名字保持一致
name = "JPay" //發布到JCenter上的項目名字
websiteUrl = siteUrl
vcsUrl = gitUrl
licenses = ["Apache-2.0"]
publish = true
}
}
準備工作終于都做完了,我們開始使用插件自動上傳aar到bintray。如果一切順利的話就可以完成上傳
誰便填寫一個repoName
不填寫repoName
重復提交
將庫提交到JCenter,點擊右側的
Add to JCenter
出現這個錯誤的原因是執行腳本時并沒有默認生成
pom-default.xml
以及相關的文檔和jar,添加到JCenter又必須需要,以下是解決方案
可以在Terminal
中執行如下命令如果成功了就會在Lib工程
的build
目錄中自動生成docs
libs
./gradlew clean build bintrayUpload
可能會遇到的錯誤
Fix the issues identified by lint, or add the following to your build script...
以上問題解決了,我們在
maven
中刪除之前上傳的,再次上傳arr到bintray,成功之后再點擊右側的Add to JCenter
然后直接send就行(提交JCenter后groupID和在本地定義的一樣,所以本地定義groupID要能標識個人,最好到 https://jcenter.bintray.com 看下有沒有重復的包名)
最后耐心等待Bintray
審核通過。
其實我們的
aar
已近上傳到的Maven
中我可以可以直接引用,上傳到JCenter
就不再需要定義自己maven倉庫地址,直接compile即可。
引用自己的庫
1、Maven方式引用自己的庫
只要在root下的build加上自己maven地址
maven{
url "https://dl.bintray.com/javendev/maven"
}
然后在app的build中加上引用即可
compile 'com.javen205.jpay:jpaylib:0.0.1'
2、compile方式引用自己的庫
如果上面添加到JCenter
審核通過,就可以直接在app的build中加上引用即可
compile 'com.javen205.jpay:jpaylib:0.0.1'
如果沒有審核通過就添加引用當然就會存在引用異常,如下圖
安利時間
JPay是對微信App支付和支付寶支付App支付的SDK進行二次封裝,對外提供一個較為簡單的接口和支付結果回調
[](https://www.apache.org/licenses/LICENSE-2.0)
[](https://dl.bintray.com/javendev/maven/JPay/_latestVersion)
推薦閱讀
Android依賴管理與私服搭建
Android版-支付寶APP支付
Android版-微信APP支付
支付寶Wap支付你了解多少?
一張二維碼集成微信、支付寶支付
安利時間:
JPay是對微信App支付、支付寶App支付的二次封裝,對外提供一個相對簡單的接口以及支付結果的回調
極速開發微信公眾號是對微信公眾平臺接口的二次封裝。包括開發者模式、事件回調監聽、微信模板消息、微信客服消息、自定義菜單、微信支付、素材管理等
如遇到問題歡迎留言交流