博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Studio 上传aar(Library)到JCenter
阅读量:4625 次
发布时间:2019-06-09

本文共 4801 字,大约阅读时间需要 16 分钟。

目的

这篇文章介绍通过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账号

在上注册一个账号 建议注册个人账号

可以使用github账号直接授权登陆。

很重要,由于 Bintray网站 改版了,增加了Organization的概念。如果点击中间那个大大的绿色按钮,用那个点了注册就错了!! 变成了注册一个组织,注册地址是  提交aar的时候就会出现Unauthorized这个错误 注意:个人的注册地址为

点击首页默认注册的是组织号

个人注册

登录

天大的坑!一开始就进入了上面的坑到最后提交上传aar的时候一直上传不上去!!!,查阅相关资料后才爬出坑....得注册个人号 组织号如何提交待研究

404

Unauthorized

记录API Key

注册后,在https://bintray.com/profile/edit 中查看,首次查看的时候提示需要输入登录密码确认。

组织号的查看API Key

个人号的查看API Key

创建maven仓库

Add New Repository

创建maven仓库

配置build.gradle

配置插件上传到bintray需要的插件

项目级别的build.gradle中添加依赖

classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.0'classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'

插件版本过低可能遇到如下的异常

解决方案:http://www.jianshu.com/p/c4f4894ad215

然后在你需要发布的那个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 homepagedef 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 我这里为javendevbintrayApiKey=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。如果一切顺利的话就可以完成上传

使用插件自动上传aar到bintray

谁便填写一个repoName

谁便填写一个repoName

不填写repoName

不填写reopName

查看maven Rep

JPay上传成功

重复提交

重复提交

将库提交到JCenter,点击右侧的Add to JCenter

Paste_Image.png

出现这个错误的原因是执行脚本时并没有默认生成pom-default.xml以及相关的文档和jar,添加到JCenter又必须需要,以下是解决方案

点击

可以在Terminal中执行如下命令如果成功了就会在Lib工程build目录中自动生成docs libs

./gradlew clean build bintrayUpload

可能会遇到的错误

正常情况下会生成以下文件

以上问题解决了,我们在maven中删除之前上传的,再次上传arr到bintray,成功之后再点击右侧的Add to JCenter

Add to JCenter

然后直接send就行(提交JCenter后groupID和在本地定义的一样,所以本地定义groupID要能标识个人,最好到  看下有没有重复的包名

最后耐心等待Bintray审核通过。

其实我们的aar 已近上传到的Maven中我可以可以直接引用,上传到JCenter 就不再需要定义自己maven仓库地址,直接compile即可。

已上传到自己的Maven仓库

引用自己的库

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'

如果没有审核通过就添加引用当然就会存在引用异常,如下图

没有审核通过引用异常的信息

安利时间

是对微信App支付和支付宝支付App支付的SDK进行二次封装,对外提供一个较为简单的接口和支付结果回调

https://github.com/Javen205/JPay

[![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)

推荐阅读

如遇到问题欢迎留言交流

转载于:https://www.cnblogs.com/zyw-205520/p/6502176.html

你可能感兴趣的文章
695. Max Area of Island
查看>>
(转)Cortex-M3 (NXP LPC1788)之SDRAM操作
查看>>
201671010437 王小倩+词频统计软件项目报告
查看>>
python中的变量,字符串,用户交互,if语句
查看>>
django的模板文件需要为utf-8无bom格式
查看>>
Fedora Linux 18 延期至年底
查看>>
Spring Framework 3.2 RC1 发布
查看>>
基于ios开发点餐系统应用(附带源码)
查看>>
Xenia and Weights(深度优先搜索)
查看>>
文件包含漏洞进阶篇
查看>>
JavaScript的self和this使用小结
查看>>
CSS3.0:透明度 Opacity
查看>>
Arduino Wire.h(IIC/ I2C)语法
查看>>
web高并发的解决方案
查看>>
OC中的NSNumber、NSArray、NSString的常用方法
查看>>
android 用ImageSwitcher+Gallery实现图片浏览效果 分类: ...
查看>>
STM32里面的一些小函数——assert_param,PUTCHAR_PROTOTYPE
查看>>
Java分布式锁的三种实现方案(redis)
查看>>
运行客户端程序报读取配置文件出错的解决方案
查看>>
day 5 - 2 字典(dict)练习
查看>>