手把手图文并茂教你发布Android开源库
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼,文章链接:
http://blog.csdn.net/hejjunlin/article/details/52452220
经常逛github,总看到别人的readme中写着compile ‘com.xxx:1.0.xxx’,这个已经越来越普及,个人,团人,公司都在用,虽然做android这么长时间了,但是发现自己好像不会,走了好多弯路,几经折腾,这没什么技术含量的玩意,还挺费时的,所以,下定决心,发布一个开源库出来,也就是前面文章中介绍的SuperIndicator类库之实现《仿爱奇艺视频,腾讯视频,搜狐视频首页推荐位轮播图介绍》。Github: https://github.com/hejunlin2013/SuperIndicator
今天的Agenda如下:
- 主工程下的的build.gradle配置Maven,jcenter服务
- 创建一个类module
- 上传类库到jcenter仓库
- 注册/bintray账号
- 添加package
- 添加bintray插件
- 编译类库
- 配置local.properties添加Bintray认证
- Android Studio终端使用命令上传
- Bintray中同步到Jcenter,发送打包请求
- 升级类库,再打包过程
背景
AndroidStudio是从Maven Repository 下载类库的。基本上有jcenter和Maven Central这两个服务器用于下载Android的类库。
在工程(注意是主工程下的)中的build.gradle有一段脚本如下:
buildscript {
repositories {
jcenter() //jcenter仓库
mavenCentral() //Maven Central仓库
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
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()
}
}
了解到Google studio团队最先使用MavenCentral作为远程仓库下载我们用的编译类库的。
MavenCentral有一些问题。首先是对于开发者体验不好,种种原因Google studio团队远程仓库换成jcenter。
jcenter有一个打包工厂,每天特别多的类库从此诞生,用于github上各种项目中。
像我们平时在app目录下build.gradle中的dependencies中经常看到的:
compile 'com.hejunlin.superindicatorlibray:superindicatorlibray:1.0.3'
这是什么意思呢?它实际上相当于
GROUP_ID:ARTIFACT_ID:VERSION
在这句代码里面的GROUP_ID是com.hejunlin.superindicatorlibray,ARTIFACT_ID是superindicatorlibray(类库名),VERSION是1.0.3。
创建一个类module
首先在Android Studio中点击File菜单,选择New->New Module,然后在弹出视图中选择Android Library,点击Next后填写库的名称。
创建完新的library后就可以写公用部分的类代码了,我这里是写superindicatorlibray,写好后,肯定还得有一个sample之类的测试这个类库,我用的是默认app工程,里面有Activity之类的,接下来就在app工程引用这个类库,在app下的build.gradle中添加依赖:
compile project(‘:superindicatorlibray’) //冒号后是你的类库的名字
本地充分测试好后,接着你就上要开始上传jcenter仓库了。
本文出自逆流的鱼,文章链接:http://blog.csdn.net/hejjunlin/article/details/52452220
上传类库到jcenter仓库
那么如何上传你的类库到jcenter仓库?
- 注册Bintray用户,Bintray是一个可以托管Android库的平台,JCenter则由Bintray进行维护的。打开https://bintray.com/,进行注册,然后登录。
点击add,然后如图填写:
- 填完后,如出现前面图中那样,有一个maven的仓库,接下来要在这里添加package,
点击Add New Package,如图:
现在一个空仓库和一个package已经创建好了,接下来要在studio,写脚本配置,上传类库
- 添加bintray插件
在module中类库下build.gradle中添加如下脚本
apply plugin: 'com.jfrog.bintray'//添加bintray插件
apply plugin: 'com.github.dcendents.android-maven'
Bintray在上传库时需要一个pom文件,而这个文件可以让Maven插件自动生成,但你还是需要给出groupId和version的值,将下面这两行代码添加到库module的build.gradle中。
group = 'com.hejunlin.superindicatorlibray'
version = '1.0.3'
- 编译类库
写过ant脚本的话,知道,ant中都是一个个target,而gadle中是task,所以接下来写几个task,对应分别分别生成Jar,Javadoc和JavadocsJar,将下面三个task代码添加到库module的build.gradle文件即可。
task generateSourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier 'sources'
}
task generateJavadocs(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs //source指定了源码位置
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
//这里dependsOn意为仅当generateJavadocs完成后才开始本task,和ant脚本也是对应的。
task generateJavadocsJar(type: Jar, dependsOn: generateJavadocs) {
from generateJavadocs.destinationDir
classifier 'javadoc'
}
将本地编译过的类库及源码及doc文件上传到Maven仓库中package中,需要将task添加到一个archive中,只需要向库module下的build.gradle中添加如下代码:
artifacts {
archives generateJavaDocsJar
archives generateSourcesJar
}
本文出自逆流的鱼,文章链接:http://blog.csdn.net/hejjunlin/article/details/52452220
配置local.properties添加Bintray认证
接下来还要配置local.properties添加Bintray认证,git提交时,也会让你填用户名和密码,那jcenter,如何配置呢?
我们须要本地local.properties文件下配置,如果没有没有就创建一个,放在主工程目录下:
内容如下:
bintray.user=你的Bintray注册时的名字
bintray.apikey=xxxxxxxxxxxxxxxxxxxxx
接下来说下这个apikey在哪?
输入密码,就可以得到这个key。接下来回到库module下的build.gradle中添加如下脚本:
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
bintray {
user = properties.getProperty("bintray.user")
key = properties.getProperty("bintray.apikey")
pkg {
repo = 'maven'
name = 'com.hejunlin.superindicatorlibray'
version {
name = '1.0.3-release'
desc = "a superindicatorlibray for viewpager, banner"
vcsTag = '1.0.3'
}
licenses = ['Apache-2.0']
vcsUrl = 'https://github.com/hejunlin2013/SuperIndicator.git'
websiteUrl = 'https://github.com/hejunlin2013/SuperIndicator'
}
configurations = ['archives']
}
Android Studio终端使用命令上传
最后我们在Android studio中Terminal命令行中,执行:
gradlew install
如果顺利的话,过几分钟就会出现
恭喜你,编译成功了,去类module看,多了个build的目录,这里东西一会要上传jcenter:
接下来需要把build成功的文件upload到bintray上,同样在Terminal命令行,执行如下命令:
gradlew bintrayUpload
顺利的话,也会出现,和上面的图一样的BUILD SUCCESSFUL
Bintray中同步到Jcenter,发送打包请求
这时检查你在bintray创建的package,你会看到对应的版本号
点击进去,如图,首次没有打包时,这里是一个add to jcenter的字样,我这里是打了包的。就变成了下图:
点击那个箭头的“add to jcenter”,接下来会跳到一个Request to include package GradientUI in jcenter的页面
填下你的groupId,直接send,就会发起一个打包版本的请求,
过几个小时,通过jcenter那边的审核就会在bintray上收到jcenter那边的同意消息提醒。
恭喜你,你的类库上传到jcenter成功了!大家都可以用你的类库了。
升级类库,再打包过程
我们上传完成后,如发现类库中的一个bug,这就涉及到更新问题,那么怎么更新呢?
一句话,修改代码后,改本地build.gradle的版本号,按上面的操作,执行gradlew install,gradlew bintrayUpload,到bintray上点击“
Stage snapshots on oss.jfrog.org”同样发送一个请求,不用几分钟,就可以用了,升级,不像首次提交那样,非常快。马上就你可以更新github上的引用版本号,瞬间心情爽爽哒。
其实写这篇文章,是没有一点技术分析的过程,但是,如果当初有人写这么一个图文并茂的教程。我可能不会走那么多弯路,可以更节省我的时间,做更多有意义的事情。如果脚本什么的,没写全,可以参考我的github:SuperIndicator类库:https://github.com/hejunlin2013/SuperIndicator,喜欢可以点star。
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。
如果你觉得好,随手点赞,也是对笔者的肯定,也可以分享此公众号给你更多的人,原创不易
手把手图文并茂教你发布Android开源库的更多相关文章
- 发布Android开源库,看这个文章就够了!
最近在Flipboard实习期间写了一个轮播工具,技术上没什么难点,不过动画效果还是不错的,决定改改代码写个库开源出去.项目地址:http://github.com/chengdazhi/Decent ...
- 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...
- 教你一步步发布一个开源库到 JCenter
今天想来分享下,如何一步步自己发布一个开源库到 JCenter 这方面的博客网上已经特别多了,所以本篇并不打算仅仅只是记录流程步骤而已,而是尽可能讲清楚,为什么需要有这个步骤,让大伙知其然的同时还知其 ...
- [转]使用Gradle发布Android开源项目到JCenter
转自:http://blog.csdn.net/maosidiaoxian/article/details/43148643 使用Gradle发布Android开源项目到JCenter 分类: G ...
- GitHub上排名前100的Android开源库介绍(来自github)
本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍,至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果,然后过滤了 ...
- GitHub Top 100的Android开源库
摘要: 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best M... 本项目主要对目前 GitH ...
- 【Java&Android开源库代码分析】のandroid-async-http の开盘
在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正 ...
- Android 开源库和项目 3
Android 开源库和项目 Android 开源库和项目 2 1.Matisse Android 图片选择器 -- 知乎开源 github 地址:https://github.com/zhihu/M ...
- Android 开源库获取途径整理
介绍眼下收藏 Android 开源库比較多的 GitHub 项目.站点.Twitter.App 及怎样获取最新的 Android 开源库. 微信号: 1. GitHub Android 开源项目汇总 ...
随机推荐
- 机器学习技法:14 Radial Basis Function Network
Roadmap RBF Network Hypothesis RBF Network Learning k-Means Algorithm k-Means and RBF Network in Act ...
- 再深刻理解下web3.js中estimateGas如何计算智能合约消耗的gas量
我们可使用web3.js框架的estimateGas函数获得一个以太坊智能合约的Gas估计值 ,通过执行一个消息调用或交易,该消息调用或交易直接在节点的VM中执行,并未在区块链中确认,函数会返回估算使 ...
- [SDOI 2017]新生舞会
Description 题库链接 给你个 \(2\times N\) 的带权二分图,两个权值 \(a,b\) ,让你做匹配使得 \[\frac{\sum a}{\sum b}\] 最大. \(1\le ...
- [Codeforces 933A]A Twisty Movement
Description 题库链接 给你一个长度为 \(n\) 的只含有 \(1,2\) 的序列.你可以选择其中的一段 \([l,r]\) ,将区间翻转,翻转后使得单调不下降序列最长.求最长长度. \( ...
- [HNOI 2001]产品加工
Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机 ...
- ●POJ 1741 Tree
题链: http://poj.org/problem?id=1741题解: 树上点分治. 入门题,不多说了. 代码: #include<cstdio> #include<cstrin ...
- Thinkphp中的A 函数(Thinkphp3.2.3版本)
A函数是TP中实例化控制器的一个快捷函数,它的语法结构如下: A('模块/控制器') //当控制器层名称不是 Controller 时须这样写 A('模块/控制器','控制器层名称') 如果要调用的控 ...
- 以太坊MetaMask钱包插件简介
MetaMask是一个以太坊钱包插件,虽然只能在Chrome浏览器中使用,但作为以太坊钱包的metamask却很受以太坊开发者欢迎. MetaMask 评价(5★):安装设置:★★★★界面操作:★★★ ...
- C语言程序设计 第一次作业
(一)实验总结 1.求圆面积和周长 (1)题目 输入圆的半径,计算圆的周长和面积. (2)流程图 (3)测试数据及运行结果 (4)实验分析问题一:输出时往输出框输不上.原因 :没有加双引号.2.判断闰 ...
- C# 获取当前屏幕DPI
1.通过Graphics类获取 Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(mainWindow).Han ...