Android开源项目发布jCenter

最近有这方面需要,所以研究了一下如何将自己的工程项目发布到jCenter上去。方法有很多,可以是Bintray,maven,jitPack.io等等。

本次发布使用的Bintray,所以稍后先从如何使用Bintray网站开始。工程通过novoda进行发布,使用起得非常方便。由于参数问题踩了几步坑,文中也会提到,但只要仔细,这些都是可以避免的。

一、Bintray网站的使用

Step 1 注册

在网上可以找到很多关于Bintray如何注册的文章,也都讲到了如何成为个人或企业用户。区别在于直接在首页点击注册并进入网站后,默认会是一个企业用户,需要等待30天的激活时间,而且在项目发布后,是没有同步到jCenter按钮的(add to jCenter)。

所以我们需要的是这个地址,bintray.com/signup/oss,成为个人用户。但个人用户是不可以创建private仓库的,这一点值得注意。

具体的注册信息就按个人情况填写即可,很快就会成为一个新的注册用户了,那么第一步也就顺利完成了。

Step 2 创建仓库(Add new Repository)


创建仓库很简单,但是Name一定要填maven,否则后面的发布操作是不成功的。Type也一定要选择maven,表示是一个maven仓库。同时可以看到,Pravite选项是disable的,这是个人用户不可选择的一项。下面的Licenses是可选项,点击下拉的菜单可以选择Apache-2.0。

最后点击Create创建即可,页面会刷新回到上一级,同时在Owned Repository中多出一个刚才新建的maven仓库链接。

Step 3 Add New Package

maven仓库创建完成了,来到仓库的页面中,点击Add New Package来创建新的Package。如果不创建的话,后面的发布不成功哦!下面是创建时要填写的内容,Name就填你要发布的module的名字,website和version control,都可以填git的地址,issue可以填上你的git地址/issue。


Step 4 获取 API key

好了,基本准备就绪了。随后的发布,会用到一个key,它在哪里呢?


页面右上角!看到Edit Profile了,点击进入到下一页。


很明显,左侧菜单下方会有一个API Key的选项,点击后输入密码,就可以拿到你的key了。现在怎么做都可以,这个key到发布的时候才会使用。

二、本地工程配置

Bintray的事搞定了,下面就开始我们自己的工程了。Android的工程如何创建,如何架构,这里就不再描述了,当前就认为工程的事一切就绪,只差东(pei)风(zhi)了。配置的关键就是顶级的build.gradle文件,和你要发布的modulebuild.gradle。这两个文件可以帮助你完成发布的事情,请认真对待哦!

Step 1 顶级 build.gradle

前面已经说过了,我们的方式是使用novoda来进行发布操作,这里首先要添加novada的引用。

classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.novoda:bintray-release:0.5.0' // 可以到github上查看他的最版本复制代码

上面我用到的是0.5.0版本,你也可以去github上自行使用它的最新版本,但是版本这个东西会造成很多问题,所以如果是第一次尝试,感觉还是先按这个来,等走通了之后再去修改也不迟。

接下来需要添加对字体的设置

tasks.withType(Javadoc) {
    options{ 
        encoding "UTF-8"
        charSet 'UTF-8'
        links "http://docs.oracle.com/javase/7/docs/api"
    }
}复制代码

下面这段要注意,之前我没加上,在发布的时候会报错(报什么错我忘了,好像是因为引入Kotlin的原因,要是想知道的话,可以先不加这句,看看运行发布命令的时候会出什么错)。

tasks.getByPath(":XXXXX:releaseAndroidJavadocs").enabled = false
tasks.getByPath(":XXXXX::bintrayUpload").enabled = true复制代码

其中的“XXXXX”指的是你的目标module,比如你要发布的module叫abc,那么改过之后的代码就是下面的样子,要注意第一行是一个冒号,第二行是两个哦,不是我写错了,也不是你看错了!

tasks.getByPath(":abc:releaseAndroidJavadocs").enabled = false
tasks.getByPath(":abc::bintrayUpload").enabled = true复制代码

Step 2 module的build.gradle

首先就是要引入novada plugin

apply plugin: 'com.novoda.bintray-release'复制代码

其次,在你的android配置中,增加lint设置。

android{
    ...... 
    ......
    lintOptions {
        abortOnError false
    }
}复制代码

接下来写上这些东西,虽然跟顶级的重复了,但是我在没写的情况下,发布失败了

repositories {
    jcenter()
}

allprojects {

    repositories {
        jcenter()
    }

    tasks.withType(Javadoc) {
        options{
            encoding "UTF-8"
            charSet 'UTF-8'
            links "http://docs.oracle.com/javase/7/docs/api"
        }
    }
}复制代码

最后,重中之重,放在最后面配置,那就是novada的配置。这些配置,你可以写到变量里,也可以直接写字符串里,这里给出后者,变量的事自己按习惯修改。

publish {
    userOrg = 'foo' 
    groupId = 'foo.bar'
    artifactId = 'bar'
    publishVersion = '0.0.1'
    desc = 'foo bar'
    website = 'http://git.yourgit/'
    licences = ['Apache-2.0']
}复制代码

好好解释一下上面这些参数。

  1. userOrg:Bintray网站注册时的用户名。最简单的查看方法就是,登录了Bintray网站之后,看浏览器地址,上面会写着你的用户名,页面上也有。
  2. groupId:jCenter上的路径。拿rxjava举例,它的引用方式是

    complie io.reactivex.rxjava2:rxjava:2.x.y复制代码

    ,那么它的groupId就是io.reactivex.rxjava2。
  3. artifactId:这是你在jCenter上项目的名字。一般跟你的项目中module名称一致。
  4. publishVersion:发布的版本号。递增的。
  5. 后面三个,desc是项目描述,website可以填上你项目的git地址,licences几乎是固定的。

三、发布到jCenter

终于走到这一步了,前面有准备全都是为了发布。那么打开终端,来到我们的项目目录下,执行命令,开始发布。

./gradlew clean build bintrayUpload -PbintrayUser=foo -PbintrayKey=bary -PdryRun=false复制代码

bintrayUser要填的仍然是你的用户名,bintrayKey就是上面我们说到的API Key了,复制到命令中就可以了。最后一个dryRun参数,true时表示不发布只查看命令是否成功,false时即执行发布和上传操作。

问题

如果在Bintray中,自己的maven仓库下先Add New Package的话,这里的命令会失败,找不到仓库;

message:Please enter a valid VCS URL for your OSS package.
复制代码

如果上面的bintrayUser和bintrayKey填错的话,也会失败。

message:This resource requires authentication
复制代码

四、add to jCetner

发布成功后,来到你的Bintray页面上,找到刚刚上传的项目中并打开页面。你会发现右侧有一个按钮,即add to jCenter


我们要做的就是点击,进入到下一页,输入一些描述后,等待审核就可以了。审核成功后,我们的项目就算是真正的走到了jCenter仓库中了,你的build.gradle中也不必再定义一个自己的maven了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值