经常在github上看到通过类似的语句引进别人的库:

repositories { jcenter()
}
dependencies {compile 'com.flipboard:bottomsheet-core:1.5.0' compile 'com.flipboard:bottomsheet-commons:1.5.0' // optional
}
复制代码

不得不说,使用起来真方便。那如果自己有好的库,如何分享给其他人,或者放在Bintray,方便自己使用呢?

###发布第一个Android库(想想还是有点小激动)

先到bintray.com注册,注册之后获取API-Key:

必须要特别感谢这位作者:Ashraff Hathibelagal

code.tutsplus.com/zh-hans/tut… 基本上都是按照他的教程做的。 也参考了XRecyclerView的gradle,也表示感谢.

文章虽好,但也有坑.... 于是自己又整理了一下

主要分两步:

1,像往常一样写一个library

2,发布到Bintray

这里需要修改两个gradle。

Project build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.0.0'/*第 1 步:添加必要的插件为了在 Android Studio 里与 Bintray 交互,你应该把 Bintray 插件引入到项目的 build.gradle 文件的 dependencies 里。classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'因为你要把库上传到 Maven 仓库,你还应该像下面这样添加 Maven 插件。classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"*/classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2'classpath "com.github.dcendents:android-maven-gradle-plugin:1.3"// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}复制代码

Module build.gradle

apply plugin: 'com.android.library'
/*
第 2 步:应用插件
打开您的库模块的 build.gradle 文件并添加以下代码,以应用我们在上一步中添加的插件。*/
apply plugin: 'com.jfrog.bintray'
apply plugin: 'com.github.dcendents.android-maven'
/*
第 3 步: 指定 POM 详细信息
在上传库时,Bintray 插件会寻找 POM 文件。 即使 Maven 插件为你生成了它,你也应该自己指定groupId 标签和 version 标签的值。 要这样做,请使用 gradle文件中的group 和version 的变量。*/
version = "1.0.0"
group = "com.example"def siteUrl = 'https://github.com/heinika/MyHelloWorldLibrary'
def gitUrl = 'https://github.com/heinika/MyHelloWorldLibrary.git'android {compileSdkVersion 23buildToolsVersion "23.0.3"defaultConfig {minSdkVersion 15targetSdkVersion 23versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.3.0'
}/*第 4 步: 生成源 JAR
为了遵守 Maven 标准,你的库也应该有一个包含了库的源文件的 JAR 文件。为了生成 JAR 文件,需要创建一个新的 Jar任务,generateSourcesJar,并且使用 from 功能指定的源文件的位置。*/
task generateSourcesJar(type: Jar) {from android.sourceSets.main.java.srcDirsclassifier 'sources'
}/*
第 5 步: 生成 Javadoc JAR
我们同样推荐,在你的库里有一个包含 Javadocs 的 JAR 文件。因为目前你还没有任何 Javadocs,需要创建一个新的 Javadoc 任务,generateJavadocs,来生成它们。使用 source 变量来指定源文件的位置。 你还应该更新 classpath 变量,以便该任务可以找到属于 Android SDK 的类。你可以通过把 android.getBootClasspath 方法的返回值添加给他,来这么做。*/
task generateJavadocs(type: Javadoc) {source = android.sourceSets.main.java.srcDirsclasspath += project.files(android.getBootClasspath().join(File.pathSeparator))
}/*下一步,要从 Javadocs 生成 JAR,需要创建 Jar 任务,generateJavadocsJar
,并把 generateJavadocs 的 destinationDir 属性传递给它的 from 功能。
为了确保在 generateJavadocsJar 任务只在 generateJavadocs 任务完成后才开始,
需要添加下面的代码片段,它使用了 dependsOn 方法来决定任务的顺序:
您的新任务应如下所示:*/
task generateJavadocsJar(type: Jar, dependsOn: generateJavadocs) {from generateJavadocs.destinationDirclassifier 'javadoc'
}/**第 6 步: 引入生成的 JAR 文件*为了把源和 Javadoc JAR 文件导入到 artifacts 的列表里,你应该把他们的任务的名字添加到 configuration 里,* 称为 archives,artifacts 列表将被上传到 Maven 仓库。 使用下面的代码片段来完成:*/
artifacts {archives generateJavadocsJararchives generateSourcesJar
}/*第 7 步: 运行任务
现在是运行我们在前几步里创建的任务的时候了。 打开 Gradle Projects 窗口,搜索名为 install 的任务。*//*
第 8 步: 配置 Bintray 插件
要配置插件,你应该使用 Gradle 文件中的 bintray 闭包。 首先,使用与你的 Bintray 用户名和 API 密钥对应的 user 和 key 变量进
行身份验证。在 Bintray,你的库会被放置在 Bintray package 里。 你应该使用 pkg 闭包里命名直观的 repo、 name、licenses 和
vcsUrl 参数,提供详细的相关信息, 如果这个包不存在,会为你自动创建。当你将文件上传到 Bintray 时,他们会与 Bintray 包里的一
个版本相关联。 因此,pkg 必须包含一个 version 闭包,闭包的 name 属性要设为独一无二的名称。 另外,你还可以使用 desc,
released 和 vcsTag参数来提供描述、 发布日期和 Git 标签。
最后,为了指定应该上传的文件,要把 configuration 参数的值设为 archives。
bintray {user = 'test-user'key = '01234567890abcdef01234567890abcdef'pkg {repo = 'maven'name = 'com.github.hathibelagal.mylittlelibrary'version {name = '1.0.1-tuts'desc = 'My test upload'released  = new Date()vcsTag = '1.0.1'}licenses = ['Apache-2.0']vcsUrl = 'https://github.com/hathibelagal/LibraryTutorial.git'websiteUrl = 'https://github.com/hathibelagal/LibraryTutorial'}configurations = ['archives']
}*/
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {user = properties.getProperty("BINTRAY_USER")key = properties.getProperty("BINTRAY_KEY")configurations = ['archives']pkg {repo = "maven"name = "MyHelloWorldLibrary"    //发布到JCenter上的项目名字version {name = '1.0.1-tuts'desc = 'My test upload'vcsTag = '1.0.0'}websiteUrl = siteUrlvcsUrl = gitUrllicenses = ["Apache-2.0"]publish = true}
}
/*
第 9 步: 使用 Bintray 插件上传文件
再次打开 Gradle Projects 窗口,搜索 bintrayUpload 任务。 双击它,启动上传文件。*/
/*
一旦任务完成,你就能打开浏览器来访问你的 Bintray 包的详细信息页面。 你会看到一个通知,
说你有四个未发布的文件。 如果要发布这些文件,单击 Publish 链接。 */
/*
* 使用 Bintray 里的库
你的库现在已经可以作为 Bintray 包使用了。 只要你分享了你的 Maven 仓库的 URL,加上 group ID、artifact ID 和 version number,
任何开发人员都可以访问你的库。 例如,为了使用我们刚才创建的库,开发人员必须引入下面这个代码片段:
repositories {maven {url 'https://dl.bintray.com/eruzza/maven'}
}
dependencies {compile 'com.github.hathibelagal.librarytutorial:mylittlelibrary:1.0.1@aar'
}
注意,在把库添加为 compile 依赖之前,
开发人员必须显式地在 repositories 列表里,引入你的仓库。*//** Bintray的用户手册:https://bintray.com/docs/usermanual/*/
复制代码

将库添加到 JCenter

默认情况下,Android Studio 会搜索一个名为 JCenter 的仓库里面的库。 如果你把自己的库引入到了 JCenter 存储库,开发人员就不必向他的 repositories 里添加任何东西了。

要将你的库添加到 JCenter,需要打开浏览器并访问你的 Bintray 的包的详细信息页面。 单击 Add to JCenter 按钮

接着你进入一个页面,让你填写一些信息。 你可以用 Comments 区域来提及任何关于这个库的细节。 单击 Send 按钮,启动 Bintray 的审查过程。 在一两天以内,Bintray 的工作人员会把你的库链接到 JCenter 仓库,这样你就将能在你的包的详细信息页面上,看到指向 JCenter 的链接了。 任何开发人员现在都可以使用你的库,而无需更改 repositories 列表。

使用

以后用到这个库的时候,只需要下面一句就可以了。是不是很爽,哈哈哈哈。

compile 'com.example:myfristlibrary:1.0.0'
复制代码

项目地址:https://github.com/heinika/MyHelloWorldLibrary 原文地址:http://heinika.github.io/2016/04/13/%E5%8F%91%E5%B8%83%E7%AC%AC%E4%B8%80%E4%B8%AAAndroid%E5%BA%93(%E6%83%B3%E6%83%B3%E8%BF%98%E6%98%AF%E6%9C%89%E7%82%B9%E5%B0%8F%E6%BF%80%E5%8A%A8)/

如何发布一个Android库相关推荐

  1. 创建构建方法android,如何快速创建并发布一个 Android 库

    一. 前言 最近经常看到各种大神的库,发现用起来非常方便,自己研究了一下,来写个库发布一下,让自己写代码更加方便一点,自己封装了基本的开发工具类.也是搜集了各位大神的优秀代码总结的. 二.必要的准备工 ...

  2. 教你一步步发布一个开源库到 JCenter

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 今天想来分享下,如何一步步自己发布一个开源库到 JCenter 这方面的博客网上已经特别多了,所以本篇并不打算仅仅只是记录流程步骤而 ...

  3. 终于发布一个android应用程序到机锋市场,AppChina应用汇了

    终于发布一个android应用程序到机锋市场,AppChina应用汇了. 机锋市场和智件园注册上传都比较麻烦, AppChina应用汇开始最简单但后面的验证还是比较麻烦的而且不能包含广告和积分的,cm ...

  4. npm publish 发布一个 Angular 库的时候报错以及解决方法

    我今天照着 npm 文件,打算把自己开发的 npm 库发布到公网上: npm login 之后,使用命名行 npm config set registry=http://registry.npmjs. ...

  5. npm publish 发布一个 Angular 库的时候报错

    错误消息: ERROR: Trying to publish a package that has been compiled by Ivy in full compilation mode. Thi ...

  6. jitpack发布_JitPack –发布您的Android库

    jitpack发布 In this tutorial, we'll demonstrate how to create your own open source application and use ...

  7. 在JitPack上发布Android库

    在JitPack上发布Android库 在JitPack上发布Android库其实非常简单,只需要在GitHub上发布一个Release,再用GitHub账号登录JitPack即可. 登录之后JitP ...

  8. 从 Android 到 React Native 开发(四、打包流程解析和发布为 Maven 库 )

    1.从 Android 到 React Native 开发(一.入门) 2.从 Android 到 React Native 开发(二.通信与模块实现) 3.从 Android 到 React Nat ...

  9. python自定义函数求差_[VBA]发布一个计算桩号之差的Excel自定义函数(VBA)

    这是一个可以计算桩号之差(也就是得到长度)的Excel(或WPS)扩展函数,可以减少工程师在统计工程量时的工作量. 该函数具有一定的通用性.可以在MS Office和金山WPS上使用. 文末会给出使用 ...

最新文章

  1. 【译】使用自定义ViewHelper来简化Asp.net MVC view的开发------part1
  2. ASP绕过防注入的新思路
  3. AssertionError: Path does not exist: py-faster-rcnn/data/VOCdevkit2007/VOC2007/ImageSets/Main
  4. sql server 调用webservice
  5. Oracle data type number
  6. linux宽松模式,SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换...
  7. CRITIC法之python
  8. wcf html 界面,WCF数据转换为原始html而不是Json格式
  9. winform 可拖动的自定义Label控件
  10. 国内稳定的暗黑2服务器,国内暗黑2战网的基本概念介绍
  11. MySQL讲义第49讲——select 查询之查询练习(七):使用多种方法添加排名
  12. 全国软件2. 三人年龄
  13. kindlenbsp;3nbsp;开箱、注册、装多…
  14. 20世纪十大哲学问题
  15. 【web前端】JavaScript总结
  16. apk安装法之三--application/vnd.android.package-archive是什么?
  17. 基于推荐算法的电影系统——具体实现(3)
  18. Ubuntu的docker详细安装教程
  19. mysql find in set 函数在pgsql中的函数写法
  20. sql server中字符集和排序规则到底什么关系

热门文章

  1. LeetCode62 Unique Paths
  2. 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
  3. HDU 4911 http://acm.hdu.edu.cn/showproblem.php?pid=4911(线段树求逆序对)
  4. SQL SERVER 跨服务器连接
  5. Nginx常见错误码解决方案
  6. 老手萌新学习composer的使用
  7. 加拿大第二大行TD Bank是如何践行科技战略的?
  8. 渐变虚框及边框滚动的实现
  9. Kubernetes!我要用这样的姿势拥抱你|坐标深圳
  10. scheme中文编程