Android Studio发布项目到jCenter

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Small_Lee/article/details/52328613

概述

在Android开发中,如果我们需要引入一个第三方的库,往往最喜欢的做法是在gradle文件中添加一行引用,然后在代码中就可以使用了,今天来带大家实现这个过程,让我们自己写的东西也能很方便的一行代码引入。接下来按步骤给大家讲解一下。

1.首先创建创建一个Android Library,这个就是我们需要上传的
2.进入下面的网址
https://bintray.com/
登录进去以后,我们需要获取一个key,请看下面的步骤

这里写图片描述

这个key我们在后面的命令行中会使用到,先保存起来
3.配置我们的libarary
在Project的gradle文件里面添加下面的配置

  dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        //添加这一行
        classpath 'com.novoda:bintray-release:0.3.4'
    }

然后在library的gradle文件里面添加

apply plugin: 'com.android.library'
apply plugin: 'com.novoda.bintray-release'//添加这一行

....

publish {
    userOrg = 'smalllee'//bintray.com用户名
    groupId = 'com.edj'//jcenter上的路径
    artifactId = 'dragview'//项目名称
    publishVersion = 'v1.0.0'//版本号
}

这样我们的配置就算完成了。

4.去binary上进行操作

这里写图片描述

如果是第一次,之前没创建过仓库,需要点击Add New Repository,进入下面的界面
这里写图片描述

注意,这里的仓库明必须要是maven,否则运行命令的时候会报错,下面的Type我们也选maven。

这里我已经创建好了仓库,所以进入仓库,点击创建新的package
这里写图片描述

进入创建页面,填写完信息
这里写图片描述
需要注意的是这里的Name要和我们Project中配置的artifactId 一致,否则会上传失败。

5.运行gradlew命令

gradlew clean build bintrayUpload  -PbintrayUser=SmallLee  -PbintrayKey=3a7b834fb1109091edb5b179b2735acf7c533f57  -PdryRun=false

PbintrayUser是你登录binary这个网站的用户名,我这里使用Github的帐号登录的,所以和Github的用户名保持一直,key就是我们前面获取到的,dryRun是一个配置参数,当为true的时候,会运行所有的环节,但是不会上传。
然后我们在Studio的命令行运行命令。

6.错误解决
在运行命令的过程中可能遇到各种问题,下面把我碰到的问题全部罗列出来,并给出解决办法

错误信息 1:

这里写图片描述

大概意思是说产生JavaDoc的时候出错了,经过网上查找,解决办法如下

allprojects {
    repositories {
        jcenter()
    }
    //加上这些
     tasks.withType(Javadoc) {
        options{ encoding "UTF-8"
            charSet 'UTF-8'
        links "http://docs.oracle.com/javase/7/docs/api"
        }
     }
}

之后又遇到一个错

* What went wrong:
Execution failed for task ':dashview:bintrayUpload'.
> Could not create version 'v1.0.0': HTTP/1.1 401 Unauthorized [message:This resource requires authentication]

错误的大概意思是资源需要验证,经过一番尝试,解决办法如下

publish {
    userOrg = 'smalllee'//bintray.com用户名
    groupId = 'com.edj'//jcenter上的路径
    artifactId = 'dashview'//项目名称
   .....
}

userOrg是bintray上显示的用户名,如下图
这里写图片描述

groupId是库引用的前缀:这里是com.edj.dashview

这里的artifactId 是你之前最初在bintary的maven中创建的那个package的名字,这里需要对应上 否则会上传失败
这里写图片描述

有些朋友有时也可能会遇到下面这个错

* What went wrong:
Execution failed for task ':dashview:bintrayUpload'.
> Could not create package 'smalllee/maven/dashview': HTTP/1.1 404 Not Found [message:Repo 'maven' was not found]

出这个错的原因是你创建仓库的时候名称写的不是maven,也就是说你创建仓库的时候应该按照下面的方式,名字必须指定为maven

这里写图片描述

上面的错解决完以后,感觉离成功已经不远了,执行gradlew命令后又遇到一个错

Execution failed for task ':flybanner:bintrayUpload'.
> Could not upload to 'https://api.bintray.com/content/SmallLee/maven/flybanner/1.0.0/com/lxn/flybanner/1.0.0/flybanner-1.0.0-sources.jar': HTTP/1.1 404 Not Found [message:Subject 'SmallLee' was not found]

最后发现,出这个错的原因是因为一次只能上传一个library,如果你此时在其他library里面也进行了上传配置的话,就会报上面的错,这点一定要注意。

7.解决完上面的错误以后,就上传成功了,我们可以看到上传的项目
这里写图片描述

最后选择添加到jcenter
这里写图片描述

之后,我们还要等待审核,审核成功之后就可以使用了。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页