Android打包aar文件上传到JCenter仓库指南

目录

一、说明

二、操作步骤

1、注册JFrog Bintray

2、创建远程仓库

3、项目本地配置

4、打包上传

5、提交审核

三、总结:


一、说明

为什么要将包上传到JCenter呢? 

我们日常开发中,对于一些公共的组件总是打成jar包或aar包来提高复用性,但是如果多个项目中要用到这些jar包就需要将jar包copy到每一个项目中,非常麻烦。

Android Studio中有很好的gradle依赖管理工具,看到我们在使用一些第三方库的时候总是在build.gradle中添加一句依赖代码,build一会儿,很快就可以拿来用了,真的是好方便,那我们自己怎样将封装的jar包或aar包上传到JCenter仓库呢 ?

二、操作步骤

1、注册JFrog Bintray

  1. 打开官网:https://bintray.com/
  2. 注册时分为企业用户和个人用户,尽量选择个人用户注册,如果你选择了start your free trial注册后,上面会显示一个类似下面这种标识,你说烦不烦。
  3. 个人用户注册地址:https://bintray.com/signup/oss
  4. 注册的时候需要填写邮箱,国内的邮箱是不行的,需要申请一个国际邮箱,比如谷歌邮箱。看到网上也有人说可以用github账号进行注册,这个我没有尝试,你可以试试。
  5. 填写完必要的信息就可以完成注册,这个时候他会向你的邮箱发送一条激活邮件,激活一下就可以了。

提示还剩13天,该死 !

Android打包aar文件上传到JCenter仓库指南_第1张图片

2、创建远程仓库

仓库创建:

Android打包aar文件上传到JCenter仓库指南_第2张图片

 

填写仓库信息:

Android打包aar文件上传到JCenter仓库指南_第3张图片

 

完成以上步骤后点击Create按钮就创建好了自己的仓库,接下来新建一个包名,也就是项目名。

Android打包aar文件上传到JCenter仓库指南_第4张图片

 

填写包配置信息:

Android打包aar文件上传到JCenter仓库指南_第5张图片

执行完以上的操作步骤就完成了仓库的创建,接下来就可以创建自己的项目然后上传了。

 

3、项目本地配置

首先在Project下的build.grdle中加入以下依赖:

dependencies {
    classpath "guru.stefma.bintrayrelease:bintrayrelease:1.0.0"
}

看到也有的人说加入另一个依赖:

dependencies {
    classpath 'com.novoda:bintray-release:0.8.0'
}

但是我在Android Studio3.2的distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip该版本下是一直失败的,一直报这个错误:Cause: com.novoda.gradle.release.AndroidLibrary$LibraryUsage.getDependency  , 网上有说把版本从4.6降到4.4,但是降完后报错最低4.6,然后换了一种方法,也就是上面的第一种。

接下来在Module下的build.gradle中加入以下代码配置:

apply plugin: "guru.stefma.bintrayrelease"

version = "0.0.1"
group = "项目的包名"
publish {
    userOrg = 'bintray注册的用户名'                   
    repoName = '远程仓库名字,不指明,默认是上传到maven'                             
    artifactId = 'compile引用时的第2部分项目名,也是远程仓库的包名'            
    desc = '描述,随便写'   
    website = '引用github主页'
}

tasks.withType(Javadoc) {//防止编码问题
    options.addStringOption('Xdoclint:none', '-quiet')
    options.addStringOption('encoding', 'UTF-8')
    options.addStringOption('charSet', 'UTF-8')
}

4、打包上传

最后一步,在Android studio的Terminal 中输入命令行,账号是网站注册时的账号,key是账号对应的秘钥。

gradlew clean build bintrayUpload -PbintrayUser=账号 -PbintrayKey=key -PdryRun=false

key获取方式往下看:

Android打包aar文件上传到JCenter仓库指南_第6张图片

进入该页面填写密码后获取key:

Android打包aar文件上传到JCenter仓库指南_第7张图片

复制出key:

Android打包aar文件上传到JCenter仓库指南_第8张图片

这样就可以获取到你的API Key,放到你的命令中对号入座就行。

命令大概会执行1分多种,执行完后会提示“BUILD SUCCESSFUL”。这个时候就已经上传到你的仓库了。

5、提交审核

Android打包aar文件上传到JCenter仓库指南_第9张图片

点击进去看到有这些信息后说明已经上传成功了,你可以提交审核了。

但是在此还有一个坑,你可能会发现总是提交失败,提示类似以下错误:

android Failed to send a message: The version control 0.0.1 returns 404

Android打包aar文件上传到JCenter仓库指南_第10张图片

进入以下页面提交审核。

Android打包aar文件上传到JCenter仓库指南_第11张图片

点击发送就可以提交审核了。

第一次会比较慢一些,大约一天左右就可以审核通过,后面就会快很多了。

审核成功后打开项目所在package就可以看到引用地址了,直接在你的项目中像引用Volley似的直接引用依赖就可以了。

三、总结:

操作的时候还是遇到了一些坑,也耗费了不少时间去解决,主要是有以下3个坑:

  1. 注册的时候用车内的邮箱一直提示失败,后来才知道必须用国际邮箱,后来申请了一个谷歌邮箱就可以了
  2. 注册Bintray的时候一定不要选择“start your free trial”,要不然总是提示你还有几天就到期这样的字样,我当时看到这样的字样直接又申请了一个新的账号。
  3. 在Project下的build.gradle中添加classpath时刚开始用这个库:“classpath 'com.novoda:bintray-release:0.8.0'”,然后就一直报错,花费很长时间找了很多解决办法都不太奏效,后来改用另一个库“classpath "guru.stefma.bintrayrelease:bintrayrelease:1.0.0"”,就不再会报错了,感觉是因为对AS3.2最新build工具有不太兼容的地方。
  4. 本地提交到Bintray后点击“Add to JCenter”时一直提示:“android Failed to send a message: The version control 0.0.1 returns 404”,这个修改VCS后就可以正常提交了。

这些填坑的心路历程在此记录一下,希望看到这些警示的Android开发者避免再掉坑!

 

 

参考:

发布到aar的正确姿势

 

你可能感兴趣的:(Android-技术篇)