Android Studio 上传aar(Library)到JCenter
目的
这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,发布自己的android library(也就是aar)到公共的jcenter仓库。
为什么选择JCenter,因为JCenter现在是Android Studio中repositories的默认节点了,之前是Maven的,不过JCenter是兼容Maven的。
环境
Android Studio 2.2.3
参考资料
http://www.jianshu.com/p/c4f4894ad215
http://www.jianshu.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支付你了解多少?
一张二维码集成微信、支付宝支付
如遇到问题欢迎留言交流
Android Studio 上传aar(Library)到JCenter的更多相关文章
- Android Studio 上传GitHub项目失败后的一些问题
在Android Studio上传项目到GitHub时候多上传了了一些项目,想删除,但是报诸如 Remote project is already on GitHub 一些乱七八糟的问题,而且,提示p ...
- Android Studio 上传本地项目到 GitHub 上
•准备工作 注册 GitHub 账号 [GitHub官网] [视频教程] 安装 Git [官方链接] [极速下载链接] 创建本地代码仓库 在桌面上,鼠标右击,选择 Git Bash Here : 接 ...
- 通过android studio上传项目到github
第一步,下载git客户端,并且安装 下载地址:https://git-for-windows.github.io/ 第二步,在android studio中配置git(注意第一张图中的C:\Progr ...
- 在GitHub上删除项目后,在Android Studio上传项目依然提示project is already on github
描述: 在GitHub上面上传项目,但是感觉有些问题,就想删除了重新上传. 但是在Android Studio重新上传项目时,遇到了问题,一直提示“project is already on gith ...
- Android Studio上传代码到Coding.net
1.官方帮助文档:https://coding.net/help/doc/git/import-from-local.html 2.简单点: https://git.coding.net/javaka ...
- Android Studio上传项目到GitHub出错
上传代码到Github出错: 一.github push文件过大(超过50M会有警告,超出100M就会被限制) error: GH001: Large files detected. this exc ...
- android studio上传项目到github报错Successfully created project 'Demo' on GitHub, but initial commit failed:
今天博主正在愉快地学习在AndroidStudio中使用Git,结果报了下面这个错∑(っ°Д°;)っ: Can't finish GitHub sharing process Successfully ...
- Android 上传开源项目到 jcenter 实战踩坑之路
本文微信公众号「AndroidTraveler」首发. 背景 其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章. 包括我本人在将开源项目上传到 jcenter ...
- (转载) Android studio如何生成aar包
Android studio如何生成aar包 标签: Android studio如何生成aaAndroid studio aarAndroid 如何生成aar包 2016-12-21 14:42 1 ...
随机推荐
- ASP.NET Web Pages 的冲突版本问题
随着VS版本和.NET MVC版本.EF的版本的不断更新,虽然很多功能随着版本的提升而更完善,但对于旧版本开发的软件就有点悲催了,或许很多开发者都遇到类似的问题! 最近有一个项目是用.NET MVC3 ...
- 使用jqprint插件完成页面打印
使用jqprint插件完成页面打印 jqprint是一个基于jQuery编写的页面打印的一个小插件,但是不得不承认这个插件确实很厉害,最近的项目中帮了我的大忙,在Web打印的方面,前端的打印基本是靠w ...
- MySQL主从复制几个重要的启动选项
MySQL主从复制几个重要的启动选项 (1) log-slave-updates log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,但是,如 ...
- jquery 带农历天干地支的日期选择控件
效果图:
- vi中跳到文件的第一行和最后一行
以下皆是在非编辑界面(按ESC键)进行,且都可以通过多种方式实现: 一:跳到文件第一行 1:输入:0或:1,然后回车: 2:在键盘按下小写gg: 二:跳到文件最后一行 1:输入:$,然后回车: ...
- Cocos2d-x V2.x版本对64bit的支持
2015年2月1日后新提交的应用必须要支持64位架构. 我所使用的是cocos2d-x V2.0版本,而且源码有部分代码是修改过的.好在cocos2d-x官方已经放出了一个支持64位的2.2.6版本, ...
- 调用人人网API
大致步骤与上篇调用新浪微博API类似.只是感觉新浪微博的做的更好一些,人人网的非常多要手动操作 与新浪微博类似,先在人人网开放平台http://dev.renren.com/注冊站内应用, 把该填的填 ...
- Mac环境配置 - iOS开发人员 -待续
Mac环境记录 Mac 相关 目录相关 显示: $ defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏: $ default ...
- Android 类加载原理 和热修复——深入浅出原理与实现
一.简述 热修复无疑是这2年较火的新技术,是作为安卓工程师必学的技能之一.在热修复出现之前,一个已经上线的app中如果出现了bug,即使是一个非常小的bug,不及时更新的话有可能存在风险,若要及时更新 ...
- HttpURLConnection和HttpClient的简单用法
HttpURLConnection的简单用法:先通过一个URL创建一个conn对象,然后就是可以设置get或者是post方法,接着用流来读取响应结果即可 String html = null; lon ...