Android library模块publish到JitPack完成流程
目次
背景 #
前段时间想要找一个支持Material You主题的FloatingActionButton,几经辗转总算是找到了,但组件是在另一个开源库的基础上封装继承,一直拖到昨天才把该部分抽离出来,放到了单独项目中。
由于View依赖了几个类,每个类都有各自的分工,聚合到一起会导致View类过大,且有应该它承担的职责,故没有将所有方法放到一个类文件中。 这样麻烦就到了引用时,昨天睡前决定以开源库的形式支持,于是有了这篇文章。
前置知识 #
Android module类型 #
Android中module分为两类,分别是application和library,application是可以运行起来的app,library则是某一部分独立的功能。library又可以细分为Java library和Android library,两者的区别在于Java library比Android library少了资源文件(项目res文件夹下),构建出来的是jar;Android library构建出来的是aar。
JitPack构建流程 #
先check out出你的代码,执行Gradle task:publishToMavenLocal
,再把生成的aar文件上传以com.github.用户名.仓库名称:tag
的格式。这些都由JitPack帮我们完成。
行动 #
决定了publish到开源仓库,接下来要决定到哪个仓库。常用的几个分别有:
- MavenCenter
- JetCenter(停止支持)
- JitPack
JetCenter从去年开始宣布停止维护,首先排除。 Google没有找到url等相关信息,加上平时用到Google仓库的都是官方提供的依赖,猜测不开放给publish。 剩下的两个MavenCenter和JitPack。JitPack依赖git,Github仓库的中打tag就可以创建,最易操作,但以来的group和artifact是不能修改的。MavenCenter搜索到的步骤很复杂,日后再说。
于是最后决定用JitPack。
项目配置 #
Android中module分为两类,分别是application和library,application是可以运行起来的app,library则是某一部分独立的功能。library又可以细分为Java library和Android library,两者的区别在于Java library比Android library少了资源文件(项目res文件夹下),构建出来的是jar文件;Android library构建出来的是aar文件。
添加Gradle Plugin并配置依赖库 #
创建一个依赖库需要用到library module。创建一个module,Templates选Android Library
,输入名称,创建。
然后就是等待构建,构建完成后在刚刚module的build.gradle(Kotlin版本对应为buil.gradle.kts)增加Gradle Plugin:maven-publish
。
最好是添加依赖后先同步,等同步完成再添加publishing代码块,否则publishing代码块会报红。
在build.gradle文件的最外层与(与plugins、android、dependencies等通层级)添加:
|
|
groupId
和artifactId
都修改成自己的(尝试后发现JitPack中修改了也还是固定的com.github.用户名.仓库名:tag的形式😅)。
另外,JitPack官方文档中用的是 from(components["java"])
,这样会提示SoftwareComponentInternal with name 'java' not found.
。原因暂时不详,参考链接:SoftwareComponentInternal with name ‘java’ not found
匹配Gradle和Target Java #
踩过的坑: 项目Gradle版本8.0,Java设置1.8,疯狂提示: No matching variant of com.android.tools.build:gradle:8.1.1 was found. 改成Java 11后提示要用18,再改成18搞定。
sourceCompatibility
、targetCompatibility
和jvmTarget
后的值都需要统一修改。
让依赖库可以被依赖 #
开始时说过是依赖Github仓库,因此这一步需要将仓库推送到Github,步骤略去。
推送后在仓库中点击Release
Draft a new release
选择Choose a tag,输入一个tag,这里是tag会对应到依赖库的版本,可以输入
1.0.0
这样的格式,其他当然也可以。要点击Create new tag: xxx on publish
,Release title也填入1.0.0
。
这样完成了Github部分的步骤。
接下来打开JitPack首页,把刚刚的Github仓库地址复制下来,粘贴到搜索框点击Look up
,就可以看到这样的ui:
想要得到依赖库,需要点击Get it
。
刚刚的部分会显示这样的状态,标识正在构建:
完成后前面多出一个绿色的icon,表示已经成功:
点击可以见到log,在log的最后能够看到依赖库的地址。
当红色的icon时表示出了问题,可以点击红色的icon查看问题的原因。 再然后就是导入了,可以参考官网文档。
总结: #
总结一下步骤:
- Android项目中创建module,添加插件并配置;
- 上传到Github仓库;
- Github仓库打tag;
- 到JitPack找到仓库,点击Get it得到依赖库。