最近在整合项目资料的时候,注意到项目中很多可以通用的module,每次新建项目都需要把这些module依赖进来,如果module发生了改变,那么所有的项目都需要手动更改代码,因此尝试把通用的组件提取出来,放到JitPack上,当然还有阿里云Maven,和MavenCentral,这个我们下篇在介绍。

创建项目

在Android Studio中创建一个名为JitShare的项目

create project

点击Finish完成工程创建。

新建Module与依赖

File --> New --> New Module

create module

输入Module name,点击Finish。

创建好module的工程目录结构如下

project structure

可以看到appshare是不同的图标,app是可运行模块,share是可依赖模块。

下一步是配置app模块依赖share模块。在开始依赖之前,我们先看appmodule的build.gradle

module:app

下面来添加share模块的依赖.

点击这个图标,或者使用快捷键Ctrl + Alt + Shift + S

project Structure

在弹框中,按照下图所示操作(Dependencies –> app –> + –> Module Dependency )。

add dependencies

勾选上share,点击OK

Add Module Dependency

再看Modoule级别的appbuild.gradle

dependencies

可以看到,app模块已经完成了对share模块的引用。

测试依赖库

因为share模块里面是空的,所以现在也无法判断是否正确引用了,因此我们在share模块中,添加一些测试代码.

我们在share模块中,新建一个Logger

package com.carl.demo.share

import android.util.Log

object Logger {
fun e(message: String) {
Log.e("share", message )
}
}

然后在app模块中添加测试代码

app.MainActivity

可以发现,能够正常调用,运行模拟器,能够正常输出日志。

项目配置

打开工程的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 {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}

对于classpath的引用,我们仍然可以按照之前的方法,在Projectbuild.gradle中,手动添加依赖,完整配置如下:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
}
}

plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.20' apply false
}

提交代码

需要先安装git

git config

点击File –> Settings,在Version Control里面找到Github这个选项,点击+,选择用Token或者用户名登录.

login github

登录完成后,会显示当前登录的用户

github user

登录完成后,我们将代码提交到Github。

在工具栏CVS –> Share Project on Github

Share Project on Github

image-20230316152507216

然后在弹出框中,输入提交信息

image-20230316152601050

等待代码发布到Github即可。

image-20230316152641977

我们打开Github,查看刚才提交的仓库

image-20230316152740699

创建Releases/Tags版本

点击tags

image-20230316152927054

点击Create a new release

image-20230316153001834

输入版本号,这里建议用v1.0.0这样的格式,如果你勾选了Set as a pre-release可以用v0.2.0-alpha或者v5.9-beta.3这样的格式。

image-20230316153113471

注意: 这里输入完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,完成初次提交。出现类似下面的界面,就表示完成了。

image-20230316153446087

注意:这里发布的版本,需要是能够编译通过正常构建的,不然下面的操作会失败。

提交到JitPack

打开Jitpack

Git repo url中输入我们git仓库的地址(现在已经支持gitee,因此我们也可以把代码发布到gitee),点击Look up

image-20230316153809342

点击Get it

image-20230316154151995

image-20230316154314814

我们可以按照上面的提示,将svg的代码添加到README.MD中。

测试JitPack依赖

按照上面的提示,我们新建一个工程,把仓库依赖添加到的dependencies

implementation 'com.github.winstone-su:JitShare:Tag'

把上面的Tag换成最新的版本号即可,这里是1.0.0

如果提示,找不到这个依赖,我们要可能需要等待它构建完成。

image-20230316154745901

完成后如图

image-20230316154957884

把鼠标悬浮在Log下报告中,如果显示Status:ok,那么表示构建成功了,重新再sync project

在主工程的MainActivity中添加测试代码

image-20230316155445666

能够正常引用,说明已经完成了依赖。

依赖库升级

在我们往JitShare中添加了一些新功能,这个时候我们需要升级我们的依赖库。

我们先把JitShare的代码push到github

image-20230316155847933

打开仓库对应的地址,点击Draft a new release

image-20230316160029767

然后选择一个新的tag,输入标题和说明,勾选上Set as the latest release,点击Publish release

image-20230316160206249

然后查看,可以看到这里成功了。

image-20230316160410365

我们再进入JitPack,按照之前的步骤操作

image-20230316160459486

完成后,在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
plugins {
id 'com.android.application' version '8.0.2' apply false
id 'com.android.library' version '8.0.2' apply false
}

// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip

我在使用这个配置的时候,发现报错找不到gradle 8.0.2

因此需要把Gradle的版本降级到7.3.1

// project build.gradle
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
}

// gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip