aar上传到JCenter

1、注册

https://bintray.com/signup/oss(个人免费版的注册地址,组织的有待研究)

2、添加仓库

aar上传到JCenter_第1张图片
aar上传到JCenter_第2张图片

3、在maven仓库内添加包(可跳过。如跳过,第4步publish闭包配置会有区别)

aar上传到JCenter_第3张图片
aar上传到JCenter_第4张图片
aar上传到JCenter_第5张图片

4、在项目中新建Library。

一:项目的build.gradle添加

classpath ‘com.novoda:bintray-release:0.8.0

aar上传到JCenter_第6张图片

二:Library中添加

apply plugin: 'com.novoda.bintray-release'//添加

// ./gradlew clean build bintrayUpload -PbintrayUser=账号 -PbintrayKey=key -PdryRun=false -x releaseAndroidJavadocs

publish {
    repoName = 'loginName'//仓库名
    userOrg = 'pineclouds'//用户名
    groupId = 'com.liuao.mylibrary'//生成的gradle依赖前缀。
    artifactId = 'toLogin'//项目名
    publishVersion = '1.0.2'//版本号
    desc = '这句话是我module的描述'//描述
    website = 'https://github.com/PineClouds/testGit' //引用项目的git地址
    repository = 'https://github.com/PineClouds/testGit'//如果跳过第3步,则此项为必填项。如果website包含'github.com',则此项默认设置为 "${website}.git"
}

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

aar上传到JCenter_第7张图片

4、执行命令上传jCenter

./gradlew clean build bintrayUpload -PbintrayUser=用户名 -PbintrayKey=apikey -PdryRun=false -x releaseAndroidJavadocs

API Key:
aar上传到JCenter_第8张图片
5、发布等待审核就行了。
aar上传到JCenter_第9张图片

6、其中的坑

NO.1 命名规范

aar包中所有命名方式最好带有专有的前缀或者后缀,避免与使用者代码冲突(如若发生冲突则同名会被覆盖)此条为非强制全靠个人自觉

NO.2 第三方库以及module使用(关于module我表示怀疑,但是我没办法验证)

第三方库不会打进aar包中,必须在使用的时候引入第三方库(可以配置jcenter解决该问题,以下大部分问题都是由此产生);另外aar也不会将module带进包中,在开发aar过程中不能引用module,否则在aar包中会引用module绝对路径从而导致在使用的时候找不到module

NO.3 butterknife和studio3.0导致的坑

butterknife 最好使用8.4.0。高版本可能还没有兼容,似乎跟studio3.0有关(牛人自行验证),至少我使用使用8.5和8.8是无效的;aar中使用R2代替R

NO.4 test相关的引用

项目中不能删除test相关的引用,可能是lint检查的原因

平时写代码一般都不去会写单元测试,所以test相关的东西没啥用,看着别扭就直接删除了,所以这是自己挖的坑。

NO.5 如果自己的仓库名称和用户名不一致

注意自己的用户名(上传命令需要)和仓库名(grale配置需要)区分开!

注意自己的用户名(上传命令需要)和仓库名(grale配置需要)区分开!

注意自己的用户名(上传命令需要)和仓库名(grale配置需要)区分开!

可能的错误信息:提示HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

NO.6 仓库名称必须为maven(可以配置参数修改仓库名称,此处坑不存在)

使用novoda.bintray的时候仓库名字必须为maven(我尝试修改为其他名称,找不到仓库)否则会提示BUILD FAILED 错误信息 Could not create package ‘listenergao/maven/customprogressbarlib’: HTTP/1.1 404 Not Found [message:Repo ‘android’ was not found] 仓库不存在,这里需要我们在bintray上简历仓库,name(上一条)和type写maven即可。

NO.7 关于注册bintray的【深坑】

第一步:申请Bintray账号并获取所需信息(非常重要,仔细看步骤)

为什么要注册这个账号呢,因为jcenter()属于bintray旗下的一个仓库。

所以各位大兄弟需要一个bintray的账号撒。注册网址:https://bintray.com/

走到这里,你已经彻底的错了,除非你是企业用户或者是等待30天以后。

我可以明确的告诉你,走到这里代表你想用个人账户的邮箱已经申请成功为企业用户了(也就是说你的第一个邮箱作废了),骚年重新找个邮箱用下面的链接注册吧!至少我没有找到可以改变账户类型的办法,如果你能找到请留言告知。

个人免费版的注册地址https://bintray.com/signup/oss

注意一下邮箱问题:不能用QQ,163等,如果用的Github快速登录,也要注意邮箱问题。

个人和免费版的区别就是只有个人版的才有 “add to jcenter” 的按钮。你找不到这个按钮的话就仔细读上面这一段吧。

NO.8 关于编码的问题

错误信息:

Execution failed for task ':aardemo:mavenAndroidJavadocs'.
> Javadoc generation failed. Generated Javadoc options file (useful for troubleshooting): '/.../mavenAndroidJavadocs/javadoc.options'

解决办法:

allprojects {
repositories {
google()
jcenter()
}
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
}
}

NO.9 lint检查

错误信息:

Execution failed for task ':core:lint'.
> Lint found errors in the project; aborting build.

在上传过程中执行了lint检查,所以可能会报上面的错误。解决方法就是避免lint的检查,在每个module的gradle下面就要添加如下配置:

android {
...
lintOptions {
abortOnError false
}
...
}

你可能感兴趣的:(aar)