把Android Library 上传到github并在工程中引用该远程仓库

修改原有demo,新建个库模块,在其中写个工具类AppUtils:

Kotlin 复制代码
package com.zx.library

import android.Manifest
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities
import android.os.Build
import android.text.TextUtils
import androidx.annotation.RequiresPermission
import java.util.regex.Pattern

/**
 * 通用公共工具类
 * 网络判断、手机号、邮箱、字符串、手机号脱敏、时间、密码校验等
 */
object AppUtils {

    //region 网络相关
    /**
     * 判断网络是否可用
     */
    @RequiresPermission(Manifest.permission.ACCESS_NETWORK_STATE)
    fun isNetworkAvailable(context: Context): Boolean {
        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val network = connectivityManager.activeNetwork ?: return false
            val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false
            return capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
                    || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)
                    || capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)
        } else {
            @Suppress("DEPRECATION")
            val networkInfo = connectivityManager.activeNetworkInfo
            return networkInfo?.isConnected ?: false
        }
    }
    //endregion

    //region 正则校验
    /**
     * 校验手机号(国内11位)
     */
    fun isPhoneNumber(phone: String): Boolean {
        if (TextUtils.isEmpty(phone)) return false
        val regex = "^1[3-9]\\d{9}$"
        return Pattern.matches(regex, phone)
    }

    /**
     * 校验邮箱
     */
    fun isEmail(email: String): Boolean {
        if (TextUtils.isEmpty(email)) return false
        val regex = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+\$"
        return Pattern.matches(regex, email)
    }

    /**
     * 简单密码校验:6-20位字母数字组合
     */
    fun isSimplePwd(pwd: String): Boolean {
        if (TextUtils.isEmpty(pwd)) return false
        val regex = "^[A-Za-z0-9]{6,20}$"
        return Pattern.matches(regex, pwd)
    }
    //endregion

    //region 字符串常用
    /**
     * 判断字符串是否为空
     */
    fun isEmpty(str: String?): Boolean {
        return str.isNullOrBlank()
    }

    /**
     * 字符串非空
     */
    fun isNotEmpty(str: String?): Boolean {
        return !isEmpty(str)
    }
    //endregion

    //region 脱敏工具(项目超常用)
    /**
     * 手机号中间4位脱敏 138****1234
     */
    fun phoneDesensitize(phone: String): String {
        return if (isPhoneNumber(phone)) {
            phone.replace(Regex("(\\d{3})\\d{4}(\\d{4})"), "$1****$2")
        } else phone
    }

    /**
     * 邮箱用户名脱敏
     */
    fun emailDesensitize(email: String): String {
        if (!isEmail(email)) return email
        val split = email.split("@")
        val name = split[0]
        val domain = split[1]
        return if (name.length > 2) {
            name.first() + "***" + name.last() + "@$domain"
        } else email
    }
    //endregion

    //region 版本、设备简单工具
    /**
     * 获取安卓系统版本号
     */
    fun getAndroidVersion(): Int {
        return Build.VERSION.SDK_INT
    }
    //endregion
}

这个模块的AndroidManifest文件加上需要的权限,修改如下:

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

app/build.gradle.kts 添加依赖该库模块:

复制代码
implementation(project(":zxlibrary"))

MainActivity 测试调用该工具方法:

运行:

ok. 上传下代码。 下面是把本地工程关联github并推送。

先控制台执行 git init 以及 git add . 命令:

commit:

再进入github首页。点击New repository按钮创建仓库:

填写如下:

点击最下面按钮创建仓库。就创建好了,如下:

关联远程仓库,并推送:

ok. 看下远程仓库,确实推送成功了:

再给项目打个版本tag,即标记为是一个正式版本:

再去JitPack一键发布. 网址为:https://jitpack.io/ , 把仓库地址输入:

点击搜索,能看到版本:

等一会,点击get it按钮:

能看到下面的提示:

现在后台正在编译库,等几分钟,刷新下页面。

顺便把上面的配置提示拷贝下来,也许安卓工程依赖远程仓库能用到:

How to

To get a Git project into your build:

Step 1. Add the JitPack repository to your build file

Add it in your root settings.gradle at the end of repositories:

复制代码
dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url 'https://jitpack.io' }
		}
	}

Add it in your settings.gradle.kts at the end of repositories:

复制代码
dependencyResolutionManagement {
		repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
		repositories {
			mavenCentral()
			maven { url = uri("https://jitpack.io") }
		}
	}

Add to pom.xml :

复制代码
<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
	</repositories>

Add it in your build.sbt at the end of resolvers:

复制代码
  resolvers += "jitpack" at "https://jitpack.io"

Add it in your project.clj at the end of repositories:

复制代码
    :repositories [["jitpack" "https://jitpack.io"]]

Step 2. Add the dependency

复制代码
	:dependencies [[com.github.qq632940642/zxLibrary "v1.0.0"]]	

过了一会i,刷新这个页面,还是显示get it按钮, 应该是没构建成功?应该是这个库文件夹名不识别? 修改下库文件夹名再重试下。右键库模块 → Refactor → Rename, 改名为library:

打一个新版本号:

bash 复制代码
git add .
git commit -m "rename lib to library"
git tag v1.0.1
git push origin v1.0.1

再去搜索下:

看到每个版本都有构建日志。 可以查看构建是否成功。看到1.0.0是成功的,后面这个1.0.1版本多余了。

验证下demo,先修改下app/build.gradle.kts 中的依赖,注释掉原来的,改成依赖远程仓库的:

settings.gradle.kts也要改,加上

复制代码
maven { url = uri("https://jitpack.io") }

如下:

ok. 编译运行成功。

再看下MainActivity,点击这个工具类:

可以看出现在是依赖远程的aar包了:

ok.

相关推荐
诸神黄昏EX2 小时前
Android Google MADA
android
盖丽男2 小时前
使用 GitHub Actions 自动打包 Android APK
android·github
七颗糖很甜2 小时前
预警!超级厄尔尼诺即将登场:2026-2027年全球气候或迎“极端狂暴模式”
java·大数据·python·算法·github
小林望北2 小时前
Kotlin 协程:StateFlow 与 SharedFlow 深度解析
android·开发语言·kotlin
zhensherlock4 小时前
Protocol Launcher 系列:Working Copy 文件操作与高级命令详解
javascript·git·typescript·node.js·自动化·github·js
alexhilton11 小时前
Compose中的CameraX二维码扫描器
android·kotlin·android jetpack
Dawn·张11 小时前
Unity小:GitHub部署静态网页
github
eric*168814 小时前
Android15 enableEdgeToEdge 全面屏沉浸式体验
android·edgetoedge
玖玖passion15 小时前
Windows 上部署 Hermes Agent 完整指南 - 让你的 AI 助手在 WSL2 中跑起来
前端·后端·github