Android发布开源库到JitPack
最近在整合项目资料的时候,注意到项目中很多可以通用的module,每次新建项目都需要把这些module依赖进来,如果module发生了改变,那么所有的项目都需要手动更改代码,因此尝试把通用的组件提取出来,放到JitPack上,当然还有阿里云Maven,和MavenCentral,这个我们下篇在介绍。
创建项目
在Android Studio中创建一个名为JitShare
的项目
点击Finish
完成工程创建。
新建Module与依赖
File --> New --> New Module
输入Module name
,点击Finish。
创建好module的工程目录结构如下
可以看到app
和share
是不同的图标,app
是可运行模块,share
是可依赖模块。
下一步是配置app
模块依赖share
模块。在开始依赖之前,我们先看app
module的build.gradle
。
下面来添加share
模块的依赖.
点击这个图标,或者使用快捷键Ctrl + Alt + Shift + S
在弹框中,按照下图所示操作(Dependencies –> app –> + –> Module Dependency )。
勾选上share
,点击OK
再看Modoule
级别的app
的build.gradle
。
可以看到,app
模块已经完成了对share
模块的引用。
测试依赖库
因为share
模块里面是空的,所以现在也无法判断是否正确引用了,因此我们在share
模块中,添加一些测试代码.
我们在share
模块中,新建一个Logger
类
package com.carl.demo.share |
然后在app
模块中添加测试代码
可以发现,能够正常调用,运行模拟器,能够正常输出日志。
项目配置
打开工程的build.gradle
,添加如下代码:
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' |
maven { url "https://jitpack.io" } |
因为gradle 7.0之后工程结构发生了变化,因此需要修改的位置发生了变化。(如果不知道用的话,可以降低Android Studio的版本,还是沿用以前的配置)
对于仓库的引用,移到了settings.gradle
中的dependencyResolutionManagement
里面
完整配置如下:
dependencyResolutionManagement { |
对于classpath
的引用,我们仍然可以按照之前的方法,在Project
的build.gradle
中,手动添加依赖,完整配置如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules. |
提交代码
需要先安装
git
点击File
–> Settings
,在Version Control
里面找到Github
这个选项,点击+
,选择用Token或者用户名登录.
登录完成后,会显示当前登录的用户
登录完成后,我们将代码提交到Github。
在工具栏CVS
–> Share Project on Github
然后在弹出框中,输入提交信息
等待代码发布到Github即可。
我们打开Github,查看刚才提交的仓库
创建Releases/Tags版本
点击tags
点击Create a new release
输入版本号,这里建议用v1.0.0
这样的格式,如果你勾选了Set as a pre-release
可以用v0.2.0-alpha
或者v5.9-beta.3
这样的格式。
注意: 这里输入完
v1.0.0
之后,需要按一下Enter
,不然会创建失败(提示 We weren’t able to create the release for you. Make sure you have a valid tag.),创建成功后,Choose a tag
的文字就会变成v1.0.0
了
最后,我们点击Publish release
,完成初次提交。出现类似下面的界面,就表示完成了。
注意:这里发布的版本,需要是能够编译通过正常构建的,不然下面的操作会失败。
提交到JitPack
打开Jitpack
在Git repo url
中输入我们git仓库的地址(现在已经支持gitee,因此我们也可以把代码发布到gitee),点击Look up
。
点击Get it
我们可以按照上面的提示,将svg的代码添加到README.MD
中。
测试JitPack依赖
按照上面的提示,我们新建一个工程,把仓库依赖添加到的dependencies
implementation 'com.github.winstone-su:JitShare:Tag' |
把上面的Tag
换成最新的版本号即可,这里是1.0.0
如果提示,找不到这个依赖,我们要可能需要等待它构建完成。
完成后如图
把鼠标悬浮在Log下报告中,如果显示Status:ok
,那么表示构建成功了,重新再sync project
在主工程的MainActivity
中添加测试代码
能够正常引用,说明已经完成了依赖。
依赖库升级
在我们往JitShare
中添加了一些新功能,这个时候我们需要升级我们的依赖库。
我们先把JitShare
的代码push到github
打开仓库对应的地址,点击Draft a new release
然后选择一个新的tag
,输入标题和说明,勾选上Set as the latest release
,点击Publish release
然后查看,可以看到这里成功了。
我们再进入JitPack,按照之前的步骤操作
完成后,在Android Studio中更新依赖
implementation 'com.github.winstone-su:JitShare:1.0.1' |
其他问题
Could not resolve com.android.tools.build:gradle:8.0.2.
错误日志参考: https://www.jitpack.io/com/github/winstone-su/EasyExcel/V1.0.2/build.log
写这篇文章的时候,AS默认使用的Gradle版本还是7.3.1
,后面再去创建工程的时候,默认的AGP
版本已经升级到了8.0.2
,同时JDK要使用JAVA 17
了
// project build.gradle |
我在使用这个配置的时候,发现报错找不到gradle 8.0.2
因此需要把Gradle的版本降级到7.3.1
// project build.gradle |