文:http://blog.csdn.net/sk719887916/article/details/52473914

作者:Tamic

详细文章请看:[Gradle系列]Gradle发布module库到jcenter, 并构建自己的企业Maven私服

平常在工作中我们常常会引用到第三方开源库,比如butterknife, Gilde, RxJava等等。其中最简单方便快捷的方式就是在gradle中用compile引用,例如

compile 'io.reactivex:rxjava:1.1.3'

有没有想过自己也写一个开源库提供一个引用给别人用?本文介绍如何自己创建一个库给别人用。

首先你要得有库

创建库很简单,网上有大把的事例教程,为了节约篇幅本文只做简单介绍。

在AndroidStudio中先创建一个普通工程,再创建好的工程上右键选择->New->Module

在弹出窗中选择’Android Library’,这样创建的就是传说中的aar包了,一个类似传统jar的包。

然后取一个霸气的名字,这样就搞定了!(但是如果你想让你的主工程用到这个lib还需要在build.gradle中配置一番,网上文章很多不做介绍)

接下来是Bintray和jCenter

啥是Bintray?啥是jCenter?

首先说jCenter,是一个代码库,相当于一个公共的存储控件,简单的来讲就是你把你写好的aar文件及一些文档描述文件之类的东西打包上传到jCenter服务器上,其他人就可以通过jCenter服务器下载到你上传的包了。

那Bintray又是啥?Bintray是jCenter的提供商,他支持上传lib到多个平台,jCenter只是众多平台中的一个,形象的说jCenter是位于某地的仓库,Bintray是送货的卡车,你写的库就是货了。

因此我们要想把自己写的lib分享给其他人,就必须通过Bintray上传到jCenter。首先我们要去Bintray上注册一个账号,或者用Github帐号直接登录。

登录后,在https://bintray.com/profile/edit页面的左边菜单的最下面有API Key复制下来。

在工程的Root gradle中加入

dependencies {
....
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}

可参考

在library的gradle中加入:

apply plugin: 'com.github.dcendents.android-maven'
apply plugin: 'com.jfrog.bintray'
version = "0.1.1" // 修改为你的版本号

def siteUrl = 'https://github.com/h3clikejava/ExtendImageView' // 修改为你的项目的主页
def gitUrl = 'https://github.com/h3clikejava/ExtendImageView.git' // 修改为你的Git仓库的url

group = "h3c.extendimageview" // Maven Group ID for the artifact,一般填你唯一的包名

install {

repositories.mavenInstaller {

// This generates POM.xml with proper parameters

pom {

project {

packaging 'aar'

// Add your description here

name 'auto extand ImageView for Android.' //项目描述

url siteUrl

// Set your license

licenses {

license {

name 'The Apache Software License, Version 2.0'

url 'http://www.apache.org/licenses/LICENSE-2.0.txt'

}

}

developers {

developer {

id 'H3c' //填写的一些基本信息

name 'H3c'

email 'h3clikejava@gmail.com'

}

}

scm {

connection gitUrl

developerConnection gitUrl

url siteUrl

}

}

}

}

}

task sourcesJar(type: Jar) {

from android.sourceSets.main.java.srcDirs

classifier = 'sources'

}

task javadoc(type: Javadoc) {

source = android.sourceSets.main.java.srcDirs

classpath += project.files(android.getBootClasspath().join(File.pathSeparator))

}

task javadocJar(type: Jar, dependsOn: javadoc) {

classifier = 'javadoc'

from javadoc.destinationDir

}

artifacts {

archives javadocJar

archives sourcesJar

}

Properties properties = new Properties()

properties.load(project.rootProject.file('local.properties').newDataInputStream())

bintray {

user = properties.getProperty("bintray.user")

key = properties.getProperty("bintray.apikey")

configurations = ['archives']

pkg {

repo = "maven"

name = "extend-imageview" //发布到JCenter上的项目名字

websiteUrl = siteUrl

vcsUrl = gitUrl

licenses = ["Apache-2.0"]

publish = true

}

}

代码有点乱,懒癌犯了,其实蛮简单的,复制上面这一段,修改成自己的参数就好了。具体可以参考这里

这里还需要将你的bintray用户名和apikey写到工程的local.properties文件中

// 示例值, 仅供参考

bintray.user=h3 // your bintray user name

bintray.apikey=c5434272d522d35d1a0123459981225564155753 // your bintray api key

OK,以上配置完就准备上传到Bintray。

通过gradew执行即可

gradew install

gradew bintrayUpload

通常大家都会失败的,原因很多。这里非常坑爹的不做介绍!因为本文后续会教你放弃这个冗长又及其容易失败的方法。

如果你编译成功且正常上传到Bintray,那么恭喜你,你真是太牛了,接下来对于你来说就很容易了

在Versions看到你的版本就说明成功了,接下来点击Add to JCenter

输入一些描述就等待审核。审核完成后即可在第三方库中引用了。

更简单的方式novoda

看完以上的内容,相信你已经知道如何写一个lib库,并通过bintray上传到jCenter了。但是有没有觉得真的好复杂…build.gradle中要配置好多东西,几乎没法自己闭着眼睛写出来,只能从网上搜索了粘贴。

接下来介绍一个更简单的方式是用novoda库,它还是使用了bintray和jCenter,但是会大大简便build.gradle的配置方法。

首先在Root gradle中加入这句话

apply plugin: 'com.novoda.bintray-release' // must be applied after your artifact generating plugin (eg. java / com.android.library)

注意,他必须写在com.android.library 的下面

其次在你的lib gradle中写上这个

publish {
  userOrg = 'novoda'
   groupId = 'com.novoda'
  artifactId = 'bintray-release'
  publishVersion = '0.3.4'
}

在android{} 中需要加入

 lintOptions {
 abortOnError false
}

这个时候在AS的终端中运行

$ ./gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false

把BINTRAY_USERNAME 替换成你的bintary的名字BINTRAY_KEY 替换成你的 Bintray的key 即可

如果成功就恭喜你,如果失败….那原因就很多了,本文坑爹的不做介绍!用飘柔就是这么自信,喜欢Bintray jCenter的同学们自己折腾去吧!

文尾福利,没错我就是飘柔

jCenter应该是目前应用最广的第三方gradle仓库了,但是其申请创建编译上传等流程实在是太麻烦了,感觉是上个世纪八十年代的产物,还需要上传,自己编译,审核之类的,超级容易失败有木有???

本文决定拿出珍藏多年的82年飘柔给大家,博主先干为敬!

JitPack也是一个代码仓库,等同于jCenter,只是暂时用的人没有jCenter多,但是越来越多的开源项目开始使用JitPack了。

真的非常非常的简单,有多简单我们来看看。

比如博主写了一个自用的Android基础库,便于快速构建工程,地址是:

AFastProject(不给我打赏的童鞋记得帮我点星…),由于引用了第三方的库,所以用本文上面两种方式发布aar都出现了问题,各种各样,要么就是无法编译,要么就是丢包,反正折腾了好久。最后用JitPack一句话解决了。。。。

首先打开网址http://jitpack.io

在输入框中输入你的Github工程地址,点击Look up

他会自动遍历出你的最近提交和发布的版本

点击你要引用的选择Get it

在文尾就会告诉你如何引用。

是的,你没看错,客户端什么都不用改。其他工程可以直接引用!

呵呵……用飘柔就是这样么自信

原文链接:http://www.jianshu.com/p/31410d71eaba

Android Studio提交库至Bintray jCenter从入门到放弃的更多相关文章

  1. Android Studio创建库项目及引用

    Android Studio创建库项目其实创建的是在主项目下创建Module模块,这个Module模块创建的时候选择库项目模式. 为什么要这样处理呢?因为在Android Studio中一个WorkS ...

  2. android studio依赖库工程Activity显示问题及库工程设置

    android studio引用库工程其实不难,直接添加依赖module即可,但是我在操作过程中出现一些奇怪的问题,苦扰我一整天,为了祭奠这苦命的一天特别mark一下. 首先描述一下我的错误现象: s ...

  3. 发布 Android Library 到 JCenter 从入门到放弃

    最近想倒腾一个小小的 UIKit 到 JCenter,为开源社区贡献一点绵薄之力,于是就有了一系列惨无人道的踩坑史.好,接下来,直奔主题,以下是发布流程. 发布到 JCenter 发布到 JCente ...

  4. Android Studio原生库创建示例

    [时间:2017-07] [状态:Open] [关键词:Android,Android Studio,gradle,native,c,c++,cmake,原生开发] 0 引言 最近在工作中遇到了升级A ...

  5. 安卓 android studio 报错 Unknown host 'jcenter.bintray.com'. You may need to adjust the proxy settings in Gradle.

    报错截图: 问题原因:因为build.gradle中jcenter()或者maven()被墙了,所以会出现这种情况. 解决方案:(我的gradle版本是:classpath 'com.android. ...

  6. Android Studio项目上传到Jcenter

    一.将你要发布的moudle的build.gradle中添加代码,gradle的最后添加 PUBLISH_GROUP_ID = 'com.zzti.fengyongge' PUBLISH_ARTIFA ...

  7. android studio提交到开源git时出现:fatal: refusing to merge unrelated histories的解决办法

    创建本地库和fetch远程分支这些前面的步骤这里略过.可以自行百度. 解决办法: 1.cmd进入项目的根目录. 2.执行下面的命令:git pull origin master --allow-unr ...

  8. 【转】如何使用Android Studio把自己的Android library分发到jCenter和Maven Central

    转自:http://www.devtf.cn/?p=760&utm_source=tuicool 如何使用Android Studio把自己的Android library分发到jCenter ...

  9. 如何使Android Studio项目发布到Jcenter中

    Android仓库 简单的普及下关于android的依赖仓库,有两种分别是Jcenter与Maven Central其实不管是Jcenter还是Maven Central都是Maven库. Jcent ...

随机推荐

  1. Who do you want to be bad? (谁会是坏人?)人工智能机器小爱的问话

    人工智能的语言理解一直是一个千古谜团. 正如人工智能机器小爱(A.L.I.C.E)的问话:“Who do you want to be bad ?(谁会是坏人?)” 纵观世界上的140多种语言,汉语是 ...

  2. 前端页面间传值之cookie传值和url传值

    大家好,我是小C: 我们在做一些网站需要传值交互,最近我就遇到了这问题,如果用H5的本地存储,IE8以下是不能支持的,但是官方说到IE8及以上就支持,但是某些版本还是存在问题.所以我们来看看下面两种方 ...

  3. ●BZOJ 1444 [Jsoi2009]有趣的游戏

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1444题解.1: 概率dp,矩阵乘法,快速幂. 对所有串建立AC自动机, 那么如果在trie树 ...

  4. poj 3264 & poj 3468(线段树)

    poj 3264 Sample Input 6 3 1 7 3 4 2 5 1 5 4 6 2 2 Sample Output 6 3 0 求任一区间的最大值和最小值的差 #include<io ...

  5. bzoj 2212: [Poi2011]Tree Rotations

    Description Byteasar the gardener is growing a rare tree called Rotatus Informatikus. It has some in ...

  6. POJ 3045 Cow Acrobats

    Description Farmer John's N (1 <= N <= 50,000) cows (numbered 1..N) are planning to run away a ...

  7. Android毕业设计-微圈

    勤拂拭软件出品,必属精品 : 勤拂拭软件 去年做了一个类似于我的朋友圈的项目,主要功能就是用户可以实时发表自己的动态,好友可以评论点赞什么的,可以建群,聊天啊,拉黑啊,反正是一个不错的社交软件,包含服 ...

  8. 使用VMware Converter Standalone Client进行虚拟机 P2V提示 权限不足,无法连接\\ip\admin$的解决方法集锦

    使用VMware vCenter Converter Standalone Client进行虚拟机 P2V提示 权限不足,无法连接\\ip\admin$的解决方法集锦 步骤一 检查 远程桌面到&quo ...

  9. Java正则过滤

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class LongStringtonumber { pu ...

  10. java.lang.NumberFormatException: For input string: " "

    原因:这个异常是说,在将字符串""转换为number的时候格式化错误.额,很简单的异常,以前我是写个方法,然后遍历对比不正确的数字或者用正则表达式之类的.现在发现一个很漂亮的方法, ...