相信很多人都用过开源项目,特别是android studio普及以后,使用开源库更方便简单。而如何上传开源库到jcenter供大家方便使用,虽然网上也有教程,但还是遇坑了,最后总结一下,希望可以帮助大家。

【csdn地址: http://blog.csdn.net/zhangke3016/article/details/52075159

【本文简书地址: http://www.jianshu.com/p/0acf9e05b27e】同步更新

AndroidStudio是从Maven Repository 服务器下载类库的。基本上有jcenterMaven Central这两个服务器用于下载Android的类库。

在代码里配置如下: jcenter仓库

    allprojects {
            repositories {
                 jcenter()
           }
    }

Maven Central仓库:

 allprojects {
            repositories {
                 mavenCentral()
           }
    }

首先我们看看写的gradle代码的含义:

compile 'com.mrzk.loadingview:circleloadinglibrary:1.1.0'

其组成是这样的:

GROUP_ID:ARTIFACT_ID:VERSION

GROUP_ID指的是com.mrzk.loadingview,类似于包名;ARTIFACT_ID指的是circleloadinglibrary,类似于类库的名称;VERSION是1.1.0,也就是版本号。

1、在bintray.com上面注册一个账号,然后登录进去。

2、注册登录完成之后,创建仓库

3、创建仓库

4、Add New Package

5、选择要上传的AndroidStudio项目

6、设置bintray的username和API Key来进行bintray的加密认证

将这些信息写在local.properties文件里。写在local.properties的原因在于,bintray的username和APIKey是敏感的私人信息,应该保管好而不是把它上传到github上,正好把local.properties文件写在.gitignore里面过滤掉,不会影响上传的github项目。

如下:

bintray.user=YOUR_BINTRAY_USERNAME
bintray.apikey=YOUR_BINTRAY_API_KEY

username就是你bintray账号的用户名

apikey在这里查找:

7、配置库module的build.gradle文件

ext {
    bintrayRepo = 'maven'
    bintrayName = 'circleloadinglibrary'

    publishedGroupId = 'com.mrzk.loadingview'
    libraryName = 'circleloadinglibrary'
    artifact = 'circleloadinglibrary'

    libraryDescription = 'a circle loading for android'

    siteUrl = 'https://github.com/zhangke3016/CircleLoading'
    gitUrl = 'https://github.com/zhangke3016/CircleLoading.git'

    libraryVersion = '1.1.0'

    developerId = 'mrzk'
    developerName = 'zhangke'
    developerEmail = '609975727@qq.com'

    licenseName = 'The Apache Software License, Version 2.0'
    licenseUrl = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
    allLicenses = ["Apache-2.0"]
}

我们引用该类库的代码就是:

compile 'com.mrzk.loadingview:circleloadinglibrary:1.1.0'

8、配置bintray upload的相关代码

build.gradle文件的最末行添加下面两行代码:

apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/installv1.gradle'
apply from: 'https://raw.githubusercontent.com/nuuneoi/JCenter/master/bintrayv1.gradle'

9、整个project的build.gradle里面添加最后三行代码

 dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'

        classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.0"
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    }

10、在AndroidStudio提供的Terminal窗口执行如下命令

gradlew install

顺利的话之后会出现:

BUILD SUCCESSFUL

接下来需要把build成功的文件upload到bintray上:

gradlew bintrayUpload

一切顺利之后也会出现:

BUILD SUCCESSFUL

注意,这里有坑。我在build过程中,出现javadoc生成失败的问题,在生成javadoc时有检查文档的正确性,但是这里的检查有点过于严格了,像
这种的注释都会导致生成失败,而且由于使用的是Windows系统,默认编码是GBK,所以在上传编译时报了编码的错误问题。

解决方法:

在库项目的build.gradle里添加:

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

11、同步library文件到创建的bintray仓库

点击右下角的Add to JCenter按钮

跳到一个Request to include the package ‘test’ in ‘jcenter’的页面,什么都不用做,直接点击Send按钮就可以了。

大概1个小时左右,jcenter审核通过就会在bintray上收到同意消息提醒。 恭喜你,你的类库上传到jcenter成功了!

至此大家用我写的类库circleloading,仅仅只需要添加一行代码:

compile 'com.mrzk.loadingview:circleloadinglibrary:1.1.0'

最后,

CircleLoading介绍就在我上一篇博客中,开源地址:CircleLoading

android开源库发布到jcenter图文详解与填坑的更多相关文章

  1. 分享我开发的网络电话Android手机APP正式版,图文详解及下载

    分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...

  2. 发布Android开源库,看这个文章就够了!

    最近在Flipboard实习期间写了一个轮播工具,技术上没什么难点,不过动画效果还是不错的,决定改改代码写个库开源出去.项目地址:http://github.com/chengdazhi/Decent ...

  3. 如何把开源项目发布到Jcenter

    转载自:https://www.jianshu.com/p/f66972f0607a 首先我们应该注册一个JFrog Bintray的账号 Jfrog Bintray官网 这里我们可以注意到那个绿色的 ...

  4. 全网最详细的IDEA、Eclipse和MyEclipse之间于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)

    不多说,直接上干货! IDEA [适合公司业务]全网最详细的IDEA里如何正确新建[普通或者Maven]的Java web项目并发布到Tomcat上运行成功[博主强烈推荐](类似eclipse里同一个 ...

  5. 【适合公司业务】全网最详细的IDEA里如何正确新建【普通或者Maven】的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【多个子项目】并存)(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...

  6. 全网最详细的Eclipse和MyEclipse里对于Java web项目发布到Tomcat上运行成功的对比事宜【博主强烈推荐】【适合普通的还是Maven方式创建的】(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 全网最详细的MyEclipse里如何正确新建普通的Java web项目并发 ...

  7. 全网最详细的IDEA里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(类似eclipse里同一个workspace下【一个子项目】并存)(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...

  8. 全网最详细的Eclipse里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在Myeclipse里,则是File -> new -> ...

  9. 全网最详细的MyEclipse里如何正确新建普通的Java web项目并发布到Tomcat上运行成功【博主强烈推荐】(图文详解)

    不多说,直接上干货! 首先,大家要明确,IDEA.Eclipse和MyEclipse等编辑器之间的新建和运行手法是不一样的. 如果是在eclipse里,则是File -> new ->  ...

随机推荐

  1. hdu2669与hdu1576(扩展欧几里德)

    模板: int Extend_Euclid(int a, int b, int &x, int &y){         if(b == 0){             x = 1; ...

  2. hdu 4630 查询[L,R]区间内任意两个数的最大公约数

    No Pain No Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. [HZOI 2016]公路修建

    [题目描述] OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨 ...

  4. salt基本使用之一(1)

    1.帮助文档 以cmd函数为例子说下salt中的一些帮助信息 # 查看指定modules用法 salt '*' sys.doc cmd # 查看所有的modules列表 salt '*' sys.li ...

  5. 开发者说 | 使用Visual Studio Code编译、调试Apollo项目

    转载地址:https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247484266&idx=1&sn=d6bcd4842 ...

  6. 假定某系统提供硬件的访管指令(例如形式:“svc n”),为了实现系统调用,系统设计者应做哪些工作?用户又如如何请求操作系统服务?

    工作: 1.  编写并调试好能实现各种功能的例行子程序. 2.  编写并调试好访管中断处理程序. 3.  构造例行子程序入口地址表. 在用户程序中,需要请求操作系统服务的地方安排一条系统调用.这样,当 ...

  7. Eclipse插件安装4种方法

    第一种:直接复制法 假设Eclipse的安装目录在C:\eclipse,解压下载的eclipse 插件或者安装eclipse 插件到指定目录AA(如:c:\AA)文件夹,打开AA 文件夹,在AA文件夹 ...

  8. JavaScript正则表达式模式匹配(6)——常用的正则表达式

    1.检查邮政编码 var pattern=/[1-9][0-9]{5}/; // 必须是6位,必须是数字,第一位不能为0 var str='274200'; alert(pattern.test(st ...

  9. vuex存储和本地存储(localstorage、sessionstorage)的区别

    1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地 2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值. 3.永久性:当 ...

  10. find函数用法详解

    语法:find (string, sub3tring<, modifiers, startpos>),返回substring首次在string中出现的位置,若未找到,则返回0.其中:mod ...