手把手图文并茂教你发布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干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。

如果你觉得好,随手点赞,也是对笔者的肯定,也可以分享此公众号给你更多的人,原创不易

时间: 2024-10-17 08:50:23

手把手图文并茂教你发布Android开源库的相关文章

Android开源库与设计模式开源组SAOS建立

Android开源库与设计模式开源组建立 简介 在2014年年底突然参与了CSDN的博客之星评选,看着自己的博客水平实在太低,于是就想一定得写一些跟别人不太一样的博客出来.经过自己的一番思考,觉得在Android开源库的深入实现上并没有什么太多的资料,或者只是大概讲述了一些基本原理.这样我觉得是不够的,很多事情你没有自己去经历你不会有很深的认识,或者你根本不知道原来它会出现这样的问题.于是我就想我没通过学习轮子制造过程来更加深入的学习,这样不仅能够了解那些知名的开源库,也能够从实战的角度学习开源

Android 开源库获取途径整理

介绍目前收藏 Android 开源库比较多的 GitHub 项目.网站.Twitter.App 及如何获取最新的 Android 开源库. 1. GitHub Android 开源项目汇总 Android 优秀开源项目实现原理解析 把这两个放在前面,是因为这两个项目我和一群小伙伴在精心维护,同时任何人都可以提交 PR 参与进来.其他网站或 App 都可以以此为数据源 AndroidElementals 西班牙一工程师整理的,目前项目数量和介绍上与 Android 开源项目汇总 还有一定差距 2.

[转]使用Gradle发布Android开源项目到JCenter

转自:http://blog.csdn.net/maosidiaoxian/article/details/43148643 使用Gradle发布Android开源项目到JCenter 分类: Gradle笔记2015-01-26 09:41 8508人阅读 评论(33) 收藏 举报 gradle发布jcenter发布项目 目录(?)[+] 喜欢做些开源项目的朋友,相信有不少人都希望能把自己的项目发布到公共的中央仓库,如maven中央仓库,以供别人方便地集成使用.而使用了Android Stud

(android开源库android-gif-drawable)第一篇 eclipse使用这个开源库

android开源库android-gif-drawable的使用 android的开源库是用来在android上显示gif图片的.我在网上查了一下,大家说这个框架写的不错,加载大的gif图片   不会内存溢出,于是我就想试试这个开源库,我下了作者的源代码和例子,但是我却跑不起来.不知道为什么,我又到网上去找使用这个开源库的例子发现有一个,我也下载了下来,发现还是跑不起来.我决定自己好好试试这个源代码,终于在我的努力下现在可以用了.废话完了 现在教大家怎么用这个库.大家不想看怎么做的 可以到后面

如何在android上 使用gif图片(android开源库android-gif-drawabl)

android开源库android-gif-drawable的使用 android的开源库是用来在android上显示gif图片的.我在网上查了一下,大家说这个框架写的不错,加载大的gif图片   不会内存溢出,于是我就想试试这个开源库,我下了作者的源代码和例子,但是我却跑不起来.不知道为什么,我又到网上去找使用这个开源库的例子发现有一个,我也下载了下来,发现还是跑不起来.我决定自己好好试试这个源代码,终于在我的努力下现在可以用了.废话完了 现在教大家怎么用这个库.大家不想看怎么做的 可以到后面

GitHub Top 100的Android开源库

本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据GitHub搜索Java语言选择「Best Match」得到的结果,然后过滤了跟Android不相关的项目,所以排名并不具备任何官方效力,仅供参考学习,方便初学者快速了解当前一些流行的Android开源库. 1. React Native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native,

(android开源库android-gif-drawable)第二篇 加载网络gif图片

大家好,  今天给大家带来如何使用 android开源库android-gif-drawable来 加载网络gif图片 同样的DEMO下载地址在 最后 请大家去下载 . 如果gif图片地址无效 了.      请大家自行到网上去寻找一个 gif图片地址 复制过去就可以了.谢谢大家 不会在 eclipse下使用  (android开源库android-gif-drawable)     请看我的这篇博客   (android开源库android-gif-drawable)第一篇 eclipse使用

Android开源库

http://blog.csdn.net/xiaanming/article/details/9470223 一.兼容类库 ActionBarSherlock : Action Bar是Android 3.0后才开始支持的,ActionBarSherlock是让Action Bar功能支持2.X后的所有平台,而且他会自动的判断是调用原生Action Bar还是使用扩展ActionBar.在我的小熊词典里有用到这个库,而且很多非常知名的App也在使用这个库.GitHub Official Acti

【Java&Android开源库代码分析】のandroid-async-http の开盘

在<[Java&Android开源库代码剖析]のandroid-smart-image-view>一文中我们提到了android-async-http这个开源库,本文正式开篇来具体介绍这个库的实现,同一时候结合源代码探讨怎样设计一个优雅的Android网络请求框架.做过一段时间Android开发的同学应该对这个库不陌生,由于它对Apache的HttpClient API的封装使得开发人员能够简洁优雅的实现网络请求和响应,而且同一时候支持同步和异步请求. 网络请求框架一般至少须要具备例如