Android 写自己的开源库,发布到 JitPack.io

博客地址首发:http://icodeyou.com/2015/12/23/2015-12-23-AndroidLibraryJitPack

之前一直在用别人的开源库,尤其有了 Gradle 后,依赖别人的开源库就更简单了,只需要在项目的 build.gradle 文件中添加上类似 compile 'com.github.icodeu:CommonAdapter:v1.0' 的就好了,剩下的就可以交给 Gradle 帮助我们完成 library 依赖了。但这个是怎么做的,如果你也想学习怎么写自己的 library,然后能够提供给别人使用的话,可跟着本篇博客学习一下。本篇分为两个部分,首先讲解如何单纯的写个 library 并在本地自己依赖着(玩),然后进入主题讲解怎么使用 JitPack.io 来发布我们自己的 library,所以如果你已经知道了怎么写 library,可以直接跳到第二部分。

我也试图在网上找一些关于使用 JitPack.io 的教程,但是搜出来的基本是这篇的复制品,根本没讲什么实质性的东西,所以一切只好自己来了。

如何写 library

在本节,我们一起来新建个 library,打开 Android Studio,New Project,在此工程名为 Hellolibrary,此后一直点击 next 直至 finish 即可。此时应该是只有一个 module 名为 app,一会我们会把它当做依赖 library 的示例模块来使用,暂时先不管,我们先来创建一个 library,File->New->Module,选择 Android library,之后起个名字,在此叫做 library,finish 即可,此时工程目录如下所示,其中 app 用来依赖使用 library。

img
img
img
img

怎么指定一个 module 到底是普通的 application 还是 library 呢?打开 module 对应的 build.gradle 文件,看第一行 apply plugin: xxx,如果是 application 的话,plugin 就是 'com.android.application',library 的话就是 'com.android.library',就这么简单,如下图:

img
img

接下来在 library 中 New->Java Class,在此就是演示,所以我们就尽可能把不重要的东西简单化,名字就叫做 CustomUtil,只有一个静态方法,如下图所示:

img

其实到此最简单的 library 就写好了,下面就在 app 中来依赖刚才的这个 library 看看效果。打开 app 的 build.gradle,在最后的 dependencies 节点添加一行,compile project(':library'),再 Sync 一下 Gradle即可,这样 app 就完成了对 library 的依赖。另外还有一种方法去依赖 library,右键 app 这个 module,选择 Open Module Settings,切换到最后一个Tab:Dependencies,点击左下角的加号->Module dependency->选择 library,这样也能完成 app 对 library 的依赖。

img

那怎么能在代码上看出来 app 确实成功依赖了 library 呢?我们打开 app 中的 MainActivity,输入 CustomUtil 试一下,如果发现像下图那样给你智能提示了,那就OK了,从下图还能看到 CustomUtil 类所在的包是 com.icodeyou.library。我们调用一下它吧,如下图也很简单,不解释了。

img
img

到此为止我们就自己写了一个最简单的 library 并完成了自己本地的依赖调用,这都是自己玩玩,那怎么能让别人也用上咱们刚才那个高大上的 library 呢,继续往下看。

如何在 JitPack.io Publish Android Library

首先来概览一下我们要完成的最终效果是什么,我之前有一个开源库,地址在 https://github.com/icodeu/CommonAdapter,打开 JitPack.io 的网站,将我的开源库地址粘贴进去,Look up->Get it,即可看到熟悉的 compile 了,按照下面那个提示复制到相应的 build.gradle 文件中就可以完成 library 的依赖了,不信你试试啊。

img

下面就来具体讲解一下如何将刚才本地的 library 与 JitPack.io 结合起来,JitPack 的官方文档在这里 Publish Android library

打开 Project 的 root build.gradle,在 dependencies 节点添加一个 classpath:classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3',再打开 library 的 build.gradle,在文件起始添加如下两行 apply plugin: 'com.github.dcendents.android-maven' group='com.github.icodeu'(注意这是你GitHub的用户名),两个文件的示意图如下:

img
img

下面检查你的Project目录是否存在 gradle/wrapper/gradle-wrapper.jar、gradle-wrapper.properties 这两个文件,如果存在可跳过下面这步,如果不存在,请按下面的进行操作。打开当前项目的 Terminal,先后执行 gradle wrapper./gradlew install 两个命令,如下图:

img
img
img

从 JitPack 首页也能看出来,其实我们是要粘贴一个 GitHub 项目地址进去,所以我们接下来就要把 library 先上传到 GitHub 上面。

在 GitHub 上新建一个仓库,这里命名为 HelloLibrary,之后 clone 到本地,再把 Project 目录所有的文件复制进去,比如在我这里,仓库 clone 到了桌面的 HelloLibrary 文件夹,如下图:

img
img

把这些文件 push 到 GitHub 上,push 成功之后,点击项目的 releases->Create a new release,填写好版本号等内容,如下图:

img
img

填写好后点击 Publish release 即可,然后我们复制下图红框中的项目地址,粘贴到 JitPack.io 上面,Look up->Get it,在下面就能看到使用方法了。

img
img

首先打开 Project root 的 build.gradle,在 repositories 节点添加上 maven { url "https://jitpack.io" },之后打开想依赖这个 library 的模块,比如这里我们是 app 这个 module,在 dependencies 节点添加上 compile 'com.github.icodeu:Hellolibrary:v1.0',Sync 一下 Gradle,这样就可以了。如果 Sync 成功了,那我们在 app 中就成功依赖了 GitHub 上的 library,此时可以打开 app 的 Module Settings,看一下它的 Dependencies,如下图:

img
img
img

好了,到此就完成了使用 JitPack.io + GitHub 发布开源库了,相比 jCenter 和 MavenCentral 方式简直爽的不要不要的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容