通过JitPack发布Android Library
烦恼
相信大家在刚接触Gradle的时候都被其使用依赖库的方式折磨过,在Gradle中配置依赖库确实非常简单,可是一旦出了什么问题就会很懵逼。明明是按人家的开发文档进行配置的,却老是报错,这时候如果对Gradle的依赖机制不够了解的话就不知道该怎么去处理了,能不能依赖成功全看老天的心情了。对于一个不怎么有追求的程序猿来说,一定会想去探个究竟的,看看到底是哪里出问题了。当然,在这之前必然要知道当你在dependencies节点下配置了一个依赖库,并点sync
按钮之后,Gradle都干了些啥,为啥正常情况下sync
之后你就能使用那个库了?为了搞清楚这个过程,首先当然是google了,可是并没有找到理想的答案,搜出来的都是如何如何配置依赖库,也许是关键词没选好。为此我想到了另一种办法,就是自己去jCenter或其它地方发布一个aar,然后从工程中来引用它,也许会对gradle的依赖机制了解得更清楚。做准备工作的时候发现在Maven中央库或jCenter库发布东西很麻烦,我就想着能不能找个在国内的Maven仓库上发布,找来找去都没找到,最后发现了JitPack。
JitPack介绍
JitPack是什么?就是一个Maven仓库,我们可以在上面发布自己的sdk供别人使用。
什么又是Maven仓库?嗯。。。这个这个。。。那个那个。。。。。(还是自己搜一下吧,扯出来又是一大片)
一开始在官网看使用说明的时候,看起来好像很简单,可仔细想想又不对,这都是啥呀,说来说去都是如何配置工程。压根没提配置完了要干什么。后来看了看国内人家的博客并通过自己的试验才基本知道了其工作流程:
- 先根据说明配置自己的工程
- 然后上传到GitHub的releash分支
- 在https://jitpack.io/上输入 https://github.com/User/项目名 进行查找
- JitPack会自动找到releash中的工程并进行构建,如果构建成功会告诉你输出文件的目录,并告诉你怎么引用这些文件,如果构建失败了可以看log看看是哪里出问题了,然后修复,在github的releash分支重新发布,再回到第3步进行查找,JitPack又会重新构建一次。
了解了这个流程后,接下来的事就好办了,因为目标明确了嘛,并且配置起来确实也很简单。
详细发布流程
一、创建一个Library工程
这个相信不必多说了
二、配置project的build.gradle文件
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' // 添加这一行
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
三、配置library的build.gradle文件
apply plugin: 'com.android.library'
// 添加以下两行
apply plugin: 'com.github.dcendents.android-maven'
group='com.github.MingHuang1024'
group的名字可以随便取。
四、push到github,并发布release版本
接下来会让你填版本号之类的信息,填完后点Publish release
按钮,这样release版本就发布好了,接下来到第5步。
五、在JitPack官网上查找你的项目
打开JitPack官网:https://jitpack.io/
在搜索框输入GitHub上项目的地址,然后点击Look up
,JitPack会自动构建GitHub上的工程,当你的项目构建成功之后就将lib库发布完成了,接下来就看看如何引用你发布的东西了。
六、如何引用
第5步中如果构建成功,点击 get it
按钮,将会看到如何引用构建好的aar包
图中已经说的很明白了,要如何在gradle中配置。
这时再回到本文最初的疑惑中来,看看为什么这样配置就能引用到远程的aar,首先看下打出来的aar放在什么地方
上图看到的路径是相对路径,绝对路径要在前面加上 “https://jitpack.io/“,也就是对应 Step 1 中的这行配置
maven { url 'https://jitpack.io' }
Step 2 中的那行配置肯定就是后面的相对路径了,只是按照Maven的规则表示出来。现在应该可以很好地理解gradle是怎么进行依赖了,就是按照配置的路径去网上下载所需要的资源,然后将项目的Build Path指向下载下来的资源所在位置。
最后,上源码:
demo源码:https://github.com/MingHuang1024/jitpackdemo
master分支是Library,就是要发布的库,
test分支是一个测试工程,从远程引用发布的库。
由于水平有限,如果文中存在错误之处,请大家批评指正,欢迎大家一起来分享、探讨!
博客:http://blog.csdn.net/MingHuang2017
GitHub:https://github.com/MingHuang1024
Email: MingHuang1024@foxmail.com
微信:724360018