2016-03-19 01:38:13 +08:00
|
|
|
|
# 用优雅的方式发布Android开源库(论JitPack的优越性)
|
2016-03-20 01:56:30 +08:00
|
|
|
|
### 作者微博: <a href="http://weibo.com/GcsSloop" target="_blank">@GcsSloop</a>
|
2016-03-19 20:57:16 +08:00
|
|
|
|
## 前言
|
2016-03-19 01:38:13 +08:00
|
|
|
|
自从谷歌宣布不支持Eclipse之后,大批Android程序猿情愿或者不情愿的迁移到了AndroidStudio,从此过上了使用Gradle构建程序的"优越"生活。
|
|
|
|
|
|
|
|
|
|
|
|
> 关于Gradle的坑,就不吐槽了,我怕一会儿控制不住情绪。今天我们就谈一下Gradle的优越性。
|
|
|
|
|
|
|
|
|
|
|
|
说到Gradle的优越性,其中有一点比较明显的就是依赖开源库更加方便了,基本上一两行代码就能搞定。免去了还要手动下载自己配置的痛苦。
|
|
|
|
|
|
|
|
|
|
|
|
然而,这也仅仅是对使用者而言,而对于发布这些开源库的人就苦逼了,主要是上传太痛苦。
|
|
|
|
|
|
|
2016-03-19 20:43:34 +08:00
|
|
|
|
目前来说,比较常见的 Android 开源库托管地址有以下几类:
|
2016-03-19 01:38:13 +08:00
|
|
|
|
|
|
|
|
|
|
类型 | 吐槽
|
|
|
|
|
|
------------- | ------------
|
|
|
|
|
|
Maven Central | 发布过程繁杂冗长, 每次发布成功都应该感谢一下上苍的厚爱。
|
|
|
|
|
|
jCenter | jCenter貌似稍微简单一点,但也不是省油的灯。
|
|
|
|
|
|
自定义仓库 | 一般的猿猿玩不起,企业内部可能会见到。
|
|
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
在这些托管地址上面发布过项目的都应该能理解其中的痛苦,不说了,让我哭会儿(我就是那个每次发布都折腾半天的“bug狂魔”,从未一次发布就成功过)。
|
2016-03-19 20:43:34 +08:00
|
|
|
|
|
|
|
|
|
|
然而,现在福音来了,JitPack可以帮助你简单快速的发布你的开源仓库。
|
|
|
|
|
|
|
2016-03-19 20:57:16 +08:00
|
|
|
|
## 在正式讲解之前我们先了解一下JitPack
|
|
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
**JitPack是什么?**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
> **JitPack是一个自定义的Maven仓库。**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
**JitPack安全吗?**
|
|
|
|
|
|
|
|
|
|
|
|
> **私以为还是比较安全的,毕竟开源库都是给大家用的,源码都能分享出来,如果你是担心它在里面插入恶意代码的话,在AndroidStudio的 External Libraies里面能够看到你的依赖库的源码,可以查看一下。**
|
|
|
|
|
|
|
|
|
|
|
|
**JitPack好处都有啥(金坷垃,雾)**
|
|
|
|
|
|
|
|
|
|
|
|
> **省时间,省时间,省时间,省下的时间都够你修复好几个bug了。**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
简单的了解了JitPack之后,开始本篇的正文。
|
|
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
|
|
|
|
|
|
|
2016-03-19 20:57:16 +08:00
|
|
|
|
## 如何在JitPack上发布你的Library。
|
|
|
|
|
|
|
2016-03-19 21:05:01 +08:00
|
|
|
|
**首先,假设大家有已经具备了以下条件:**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-19 21:05:01 +08:00
|
|
|
|
序号 | 条件
|
|
|
|
|
|
:---:|---------
|
2016-03-20 01:56:30 +08:00
|
|
|
|
1 | 会使用GitHub,能提交项目到GitHub上
|
2016-03-19 21:05:01 +08:00
|
|
|
|
2 | 使用AndroidStudio,且Gradle版本在2.4以上
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-19 21:44:30 +08:00
|
|
|
|
在具备了这些条件之后,正式开始发布一个项目(以我的一个工具仓库Sutil为例)。
|
|
|
|
|
|
|
|
|
|
|
|
### 第 1 步: 新建一个Project
|
|
|
|
|
|
|
|
|
|
|
|
在AndroidStudio中新建一个Project用于发布项目,新建完成之后结果是这样子:
|
|
|
|
|
|
|
2016-03-19 22:50:50 +08:00
|
|
|
|

|
2016-03-19 21:44:30 +08:00
|
|
|
|
|
|
|
|
|
|
### 第 2 步: 在这个Project中添加一个Library
|
|
|
|
|
|
|
|
|
|
|
|
添加的这个Library就是我要发布的仓库,Library的名字无所谓,可以随便起(*我这里就叫library*)。添加完成之后是这样子:
|
|
|
|
|
|
|
2016-03-19 22:50:50 +08:00
|
|
|
|

|
2016-03-19 21:44:30 +08:00
|
|
|
|
|
2016-03-19 23:16:35 +08:00
|
|
|
|
**注意: 1是新添加的Library 2是Library的build.gradle 3是Library的plugin**
|
|
|
|
|
|
|
|
|
|
|
|
library的plugin是下面这样子:
|
|
|
|
|
|
|
|
|
|
|
|
``` gradle
|
|
|
|
|
|
apply plugin: 'com.android.library'
|
|
|
|
|
|
```
|
2016-03-19 21:44:30 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
### 第 3 步: 给你的项目添加配置(重点)
|
|
|
|
|
|
|
|
|
|
|
|
你需要对你的项目简单的配置一下:
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
**在你项目的根节点的 build.gradle(图示1) 中添加如下代码:**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
``` gradle
|
|
|
|
|
|
buildscript {
|
|
|
|
|
|
dependencies {
|
|
|
|
|
|
// 重点就是下面这一行(上面两行是为了定位这一行的添加位置)
|
|
|
|
|
|
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
|
|
|
|
|
|
```
|
|
|
|
|
|
**[完整示例]()**
|
|
|
|
|
|
|
|
|
|
|
|
**在你要发布的library的 build.gradle(图示2) 中添加如下代码:**
|
|
|
|
|
|
|
|
|
|
|
|
``` gradle
|
|
|
|
|
|
apply plugin: 'com.github.dcendents.android-maven'
|
|
|
|
|
|
|
|
|
|
|
|
group='com.github.YourUsername'
|
|
|
|
|
|
```
|
|
|
|
|
|
**[完整示例]()**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
### 第 4 步: 提交项目到GitHub仓库
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
这一步就不多啰嗦了,不论你是用命令行还是客户端都可以。
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 00:57:51 +08:00
|
|
|
|
**为了提交更加快速,你可以删除无用的文件(文件夹),至于需要保留哪些文件你可以参考官方给出的[示例仓库](https://github.com/jitpack/android-example)**
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 01:40:03 +08:00
|
|
|
|
### 第 5 步: Release你的仓库或者给你的仓库打一个TAG
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 01:40:03 +08:00
|
|
|
|
### 第 6 步: 将你的仓库地址提交到JitPack
|
2016-03-19 20:57:16 +08:00
|
|
|
|
|
2016-03-20 01:56:30 +08:00
|
|
|
|
## About Me
|
|
|
|
|
|
|
|
|
|
|
|
### 作者微博: <a href="http://weibo.com/GcsSloop" target="_blank">@GcsSloop</a>
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://github.com/GcsSloop/SloopBlog/blob/master/FINDME.md" target="_blank"> <img src="http://ww4.sinaimg.cn/large/005Xtdi2gw1f1qn89ihu3j315o0dwwjc.jpg" width=300/> </a>
|
2016-03-19 01:38:13 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|