把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.

相关推荐
千里马学框架5 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台5 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone5 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc5 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
lpfasd1235 天前
2026年第38周GitHub趋势周报
python·科技·github
ttyyttemo5 天前
Kotlin 协程中的 Job 结构化并发与取消
android
u1301305 天前
GitHub 热榜项目:日榜(2026-09-21)
人工智能·github
sun0077005 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
张洛闻Eren5 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
其实防守也摸鱼5 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透