[Kotlin]创建一个私有包并使用

1.创建Kotlin测试项目

  • 在Android Studio或其他IDE中选择“Create New Project”。
  • 选择Kotlin和Gradle作为项目类型和构建系统。
  • 指定项目名称和位置,完成设置。

2.创建Android Library模块

官方文档:创建 Android 库  |  Android Studio  |  Android Developers

 

注意:创建的Library依赖libs.plugins.androidLibrary,所以后续导入时需确保项目级别的build.gradle 有添加androidLibrary这个依赖。

若已有的Library库的话,可以选择Import导入模块。

添加依赖: 如果你的库需要额外的依赖,可以在 build.gradle (Module: app) 文件中添加依赖。例如:

dependencies {implementation(kotlin("stdlib"))
}

配置 Gradle:

  • 版本控制: 确保 build.gradle 文件中设置了正确的版本号和版本配置,这对发布库非常重要。
android {namespace = "com.randomdt.myprivatepackage"compileSdk = 34defaultConfig {applicationId = "com.randomdt.myprivatepackage"minSdk = 24targetSdk = 34versionCode = 1versionName = "1.0.0"testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"vectorDrawables {useSupportLibrary = true}}
}

Manifest 设置: 检查 AndroidManifest.xml 文件,确保所有必要的权限和应用配置都已正确设置。

3.Library开发

创建必要的Kotlin类和功能模块,在 src/main/kotlin 目录下编写代码。

例如,我们创建一个计算类GACalculate

GACalculate:

class GACalculate {// 实例方法:执行加法fun addInstance(a: Int, b: Int): Int {return a + b}companion object {// 类方法:执行加法fun addStatic(a: Int, b: Int): Int {return a + b}}
}

4.测试

具体介绍参考另一文: [Android]单元测试和模块测试-CSDN博客

可以直接在Library写测试用例,也可以去测试项目(模块间可以相互调用)的 src/test/kotlin 目录下编写JUnit测试用例:

import com.randomyyds.mylibrary.GACalculate
import org.junit.Testimport org.junit.Assert.*/*** Example local unit test, which will execute on the development machine (host).** See [testing documentation](http://d.android.com/tools/testing).*/
class ExampleUnitTest {@Testfun addition_isCorrect() {assertEquals(30,  GACalculate().addInstance(10, 20))}
}

4.发布

(1).发布到私有Git仓库

添加所有文件到Git

$ git init
$ git add .
$ git commit -m "Initial commit"

将项目推送到远程私有Git仓库(例如GitHub, GitLab等):

$ git remote add origin <your-private-git-repo-url>
$ git push -u origin master

(2).发布成为公开的包

配置maven-publish插件

plugins {`maven-publish`
}publishing {publications {create<MavenPublication>("mavenJava") {from(components["java"])}}repositories {maven {url = uri("https://your-public-maven-repo.com/repository/maven-releases/")credentials {username = provider { "user" }password = provider { "password" }}}}
}

发布到公开Maven仓库

./gradlew publish

5.在项目中使用该包

(1).Git依赖

如果项目托管在Git上,可以在“settings.gradle.kts”文件中添加"https://jitpack.io"启用 JitPack。

JitPack具体使用参见另一文:[Android]常见的包管理方式-CSDN博客

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

在app/build.gradle中添加库作为依赖

假设你想添加一个名为 SomeLibrary 的库,该库由用户 SomeUser 在 GitHub 上维护,并且你想使用标签 1.0.0 的版本,你可以这样添加依赖:

dependencies {implementation ("com.github.SomeUser:SomeLibrary:1.0.0")
}

进入仓库网站:https://jitpack.io/ 搜索GitHub仓库地址

(2).本地依赖

在 Kotlin 项目中直接引用本地库,您可以通过几种方式将本地库集成到您的项目中。下面的说明基于您使用 Gradle 作为构建工具,因为 Kotlin 项目通常使用 Gradle。

方法 1: 使用本地 Jar 文件

如果您的库以 Jar 文件的形式存在,您可以直接在项目的 build.gradle 文件中添加对这个 Jar 文件的依赖。

  • 将 Jar 文件放置到您的项目中,例如在 libs 目录下。

  • 在 build.gradle 中添加对这个 Jar 文件的引用:

dependencies {implementation(fileTree("libs") {include("*.jar")})// 或者指定单个文件// implementation(files("libs/your-library.jar"))
}

方法 2: 引用本地项目

如果您的库是一个本地的 Gradle 项目,您可以通过以下方式将其作为依赖项添加:

  • 确保本地库是一个可以独立构建的 Gradle 项目。

  • 在您的主项目的 settings.gradle 文件中包含这个库:

include(":myLocalLibrary")
project(":myLocalLibrary").projectDir = file("../my-private-package/mylibrary")

这里 path_to_your_library 是相对于当前项目的路径。

  • 在主项目的 build.gradle 文件中添加对本地项目的依赖:

dependencies {implementation(project(":myLocalLibrary"))
}

注意:添加上述配置,直接同步会报错,提示缺少androidLibrary

添加androidLibrary

 plugins {alias(libs.plugins.androidApplication) apply falsealias(libs.plugins.jetbrainsKotlinAndroid) apply falsealias(libs.plugins.androidLibrary) apply false
}   
...[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
jetbrainsKotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
androidLibrary = { id = "com.android.library", version.ref = "agp" }

然后同步,就会在目录上看到本地库。

方法 3: 使用 Maven 本地仓库

如果您的库已经被安装到本地 Maven 仓库(通常在您运行 mvn install 后),您可以如下引用:

  • 确保本地 Maven 仓库(通常是 .m2 目录)在您的构建配置中被包括。

  • 在 build.gradle 中添加对本地 Maven 仓库中的库的依赖:

dependencies {implementation 'group:artifact:version'
}

替换 groupartifact 和 version 为您的库的实际 Maven 坐标。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/325118.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片转word如何转换?

要将图片转换为Word文档&#xff0c;你可以使用以下方法之一&#xff1a; 以上这些方法都可以帮助你将图片中的文本转换为可编辑的Word文档&#xff0c;你可以根据自己的喜好和需求选择其中一种方法来操作。 使用OCR软件或在线工具&#xff1a;有许多OCR&#xff08;Optical Ch…

2024年怎样提取小程序里的视频

在未来的2024年&#xff0c;我们亲眼目睹了科技的飞速发展和互联网的无限可能。在这个数字化世界中&#xff0c;小程序已经成为我们日常生活中不可或缺的一部分&#xff0c;无论是购物、学习&#xff0c;还是娱乐&#xff0c;小程序都给我们带来了前所未有的便利。然而&#xf…

【OceanBase诊断调优】—— 租户资源统计项及其查询方法

本文主要介绍 OceanBase 数据库中租户资源统计项及其查询方法。 适用版本 OceanBase 数据库 V4.1.x、V4.2.x 版本。 CPU 资源统计项 逻辑 CPU 使用率&#xff08;线程处理请求的时间占比&#xff09;。 通过虚拟表 __all_virtual_sysstat 在 SYS 系统租户下&#xff0c;查看…

棱镜七彩参编《网络安全技术 软件供应链安全要求》国家标准发布

据全国标准信息公共服务平台消息显示&#xff0c;《网络安全技术 软件供应链安全要求》&#xff08;GB/T 43698-2024&#xff09;国家标准已于2024年4月25日正式发布&#xff0c;并将于2024年11月1日正式实施。棱镜七彩作为主要编制单位之一参与该国家标准的编制&#xff0c;为…

Linux下安装mysql8.0(以rpm包安装)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; Linux下安装mysql8.0&#xff08;以rpm包安装&#xff09;https://myweb.myskillstree.cn/125.html 目录 1、查操作系统信息 2、下载mysql 8.0.34的rpm包 …

7.STL_string(详细)

1. 什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架。 2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版…

org.springframework.jdbc.BadSqlGrammarException

Cause: java.sql.SQLSyntaxErrorException: Table ‘web.emp’ doesn’t exist 产生原因&#xff1a;web表找不到&#xff0c;所以可能数据库配置错误 spring.datasource.urljdbc:mysql://localhost:3306/web02 更改完成后运行成功

抽空学学go

2024年5月9日11:14:24 学习go 看课8小时转职Golang工程师(如果你想低成本学习Go语言)_哔哩哔哩_bilibili 文档8小时转职Golang工程师 (yuque.com) 1.安装go 2024年5月9日11:27:16 2.安装 vscode go配置环境 vs code配置go开发环境 (zhihu.com) vscode里面配置代理&#xf…

BGP综合实验

一.实验拓扑图 二.实验思路 1.划分网段配置IP地址 2.在AS 2内部配置OSPF协议&#xff0c;整个配置BGP协议&#xff08;将R3&#xff0c;R6作为反射器&#xff0c;防止水平分割使R4、R7、R8学习不到宣告进的网段&#xff09; 3.手工路由聚合&#xff0c;减少路由条目&#xf…

Curator分布式锁

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 分布式锁服务宕机,…

【GlobalMapper精品教程】079:投影坐标系转地理坐标系(UTM转WGS1984/2000)

文章目录 一、矢量UTM转WGS1984/20001. UTM转WGS19842. UTM转CGCS2000二、栅格UTM转WGS1984/2000一、矢量UTM转WGS1984/2000 加载配套实验数据(data079.rar)中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,为UTM投影,Zone48N。 设置系统坐标系:点击…

【JavaEE网络】HTTPS详解:从对称与非对称加密到证书认证

目录 HTTPSHTTPS 是什么“加密” 是什么HTTTPS 的工作过程引入对称加密引入非对称加密引入证书完整流程总结 HTTPS HTTPS 是什么 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现…

【JVM】ASM开发

认识ASM ASM是一个Java字节码操纵框架&#xff0c;它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件&#xff0c;也可以在类被加载入虚拟机之前动态改变类行为&#xff0c;ASM从类文件中读入信息后能够改变类行为&#xff0c;分析类信息&#xff…

【CSS】认识CSS选择器及各选择器对应的用法

目录 一、什么是CSS&#xff1f; 二、CSS 选择器 1. 标签选择器 2. 类选择器 3. ID选择器 4. 通配符选择器 5. 复合选择器 一、什么是CSS&#xff1f; CSS(Cascading Style Sheet)&#xff0c;层叠样式表。它与 HTML&#xff08;超文本标记语言&#xff09;一起使用&am…

线下研讨会 技术沙龙|乐鑫芯片与 ESP RainMaker® 为科技初创企业赋能

众多科技初创企业在智能硬件市场迅猛发展的背景下&#xff0c;对不断变化的需求展现出了高度的敏锐性&#xff0c;期望能够快速将其转化为切实的产品方案。然而&#xff0c;面对复杂繁重的软硬件集成任务&#xff0c;这些企业往往容易陷入研发瓶颈、资金短缺以及效率低下等多重…

前端小程序调用 getLocation 实现地图位置功能,通过 纬度:latitude 经度: longitude 获取当前位置

1、首先登录一下 腾讯的位置服务 有账号就登录没账号就注册&#xff0c; 点击右上角的控制台点击左侧的应用管理 ---> 我的应用 ---->> 创建应用 1、创建应用 2、列表就会显示我们刚刚创建好的 key 3、点击添加 key 4、按照要求填写信息 我们用的是小程序 所以选择…

vue2和vue3区别: 探索关键差异

vue2和vue3区别&#xff1a; 探索关键差异 Vue.js 作为流行的前端框架&#xff0c;其版本 3 带来了许多令人兴奋的改进和新功能。虽然 Vue 3 保持了与 Vue 2 的相似性&#xff0c;但也存在一些关键差异需要开发者注意。本文将通过表格形式&#xff0c;清晰地展现 Vue 2 和 Vue …

Python-VBA函数之旅-str函数

目录 一、str函数的常见应用场景 二、str函数使用注意事项 三、如何用好str函数&#xff1f; 1、str函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://myelsa1024.blog.csdn.net/ 一、str函数的常…

搭建Springboot的基础开发框架-01

本系列专题虽然是按教学的深度来定稿的&#xff0c;但在项目结构和代码组织方面是按公司系统的要求来书定的。在本章中主要介绍下基础开发框架的功能。后续所有章节的项目全是在本基础框架的基础上演进的。 工程结构介绍 SpringbootSeries&#xff1a;父工程&#xff0c;定义一…

Linux(Ubuntu24.04) 安装 MinIO

本文所使用的 Ubuntu 系统版本是 Ubuntu 24.04 ! # 1、下载 MinIO wget https://dl.min.io/server/minio/release/linux-amd64/minio# 2、添加可执行权限 chmod x minio# 3、导出环境变量&#xff0c;用于设置账号密码&#xff0c;我设置的账号和密码都是 minioadmin export MI…