Android --- Kotlin学习之路:自己写一个SDK给别的APP用(暴漏一个接口,提供学生的身高数据)
今天又来肝kotlin了,主题是:用kt写一个SDK给其他人用,这个小技能在项目中会经常用到,应该有很多小伙伴还不会用,不会的请往下看—⬇
在项目里面新建一个module

选择Android library,然后点击finish就行了

接下来你就会在项目工程下面看到刚刚所创建的module,我这里是hights

开始写接口,对外暴露了

package com.example.hightsobject HeightInterface {fun getStudentHeight() : List<Double> {val studentHeights = mutableListOf<Double>()studentHeights.add(181.0)studentHeights.add(182.0)studentHeights.add(172.0)return studentHeights.toList()}
}
在文件build.gradle.kts下添加以下代码,为了后面打包用,写完下面代码,记得sync一下

tasks.register<Copy>("makeJar") {// 如果之前存在,则先删除delete("build/libs/mysdklib.jar")// 设置拷贝的文件来源//from("build/intermediates/aar_main_jar/debug/")// 生成jar包后的文件目录位置into("build/libs/")// 设置过滤条件include("classes.jar")// 重命名为 mysdklib.jarrename("classes.jar", "mysdklib.jar")
}tasks.getByName("makeJar").dependsOn("build")
通过gradle打包,控制台输入:
./gradlew makeJar

最终打包好的aar就会输出到build/libs/下面
到另外一个app,把刚才打包好的hights-release.aar放到libs下面

并在build.gradle.kts中引入aar

implementation(files("libs/hights-release.aar"))
最后随便写个main,调用SDK中的方法就可以了

package com.example.kotlindemoimport com.example.hights.HeightInterfacefun main() {val list: List<Double> = HeightInterface.getStudentHeight()list.forEach() {println("学生的身高为:${it}")}
}
输出如下
学生的身高为:181.0
学生的身高为:182.0
学生的身高为:172.0Process finished with exit code 0
相关文章:
Android --- Kotlin学习之路:自己写一个SDK给别的APP用(暴漏一个接口,提供学生的身高数据)
今天又来肝kotlin了,主题是:用kt写一个SDK给其他人用,这个小技能在项目中会经常用到,应该有很多小伙伴还不会用,不会的请往下看—⬇ 在项目里面新建一个module 选择Android library,然后点击finish就行了 …...
租用海外服务器需要考虑哪些因素
当企业选择租用海外服务器时需要考虑到哪些因素呢? 对于海外服务器的租用我们需要考虑到机房的位置以及服务器的稳定性如何,所以企业可以选择离目标用户群体比较近一点的机房,以此来降低服务器的延迟度并且能够提高用户的访问速度。 对于机房…...
php将png转为jpg,可设置压缩率
/** * 将PNG文件转换为JPG文件 * param $pngFilePath string PNG文件路径 * param $jpgFilePath string JPG文件路径 * param $quality int JPG质量,0-100,值越低,压缩率越高 * return void * throws Exception */ function convertPngToJpg($pngFilePath, $jpgFile…...
华为HCIP Datacom H12-821 卷37
1.多选题 下面关于Network- Summary-LSA 描述正确的是 A、Network- Summary-LSA中的Metric被设置成从该ABR到达目的网段的开销值 B、Network- Sumary-LSA中的Net mask 被设置成目的网段的网络掩码 C、Network- Summary-LSA 是由ASBR产生的 D、Network- Summary-LSA 中的Li…...
某某会员小程序后端性能优化
背景 某某会员小程序后台提供开放平台能力,为三方油站提供会员积分、优惠劵等api。当用户在油站加油,油站收银会调用我们系统为用户发放积分、优惠劵等。用户反馈慢,三方调用发放积分接口性能极低,耗时30s; 接口情况…...
Docker:基础概念、架构与网络模式详解
1.Docker的基本概念 1.1.什么是docker Docker是一个用于开发,交付和运行应用程序的开放平台.docker使您能够将应用程序域基础框架分开,以便你可以快速开发交付软件.使用docker,你可以管理你的基础架构以管理应用程序相同的方式.通过利用docker用于交付,测试和部署代码的方法,你…...
全国大学生数据建模比赛c题——基于蔬菜类商品的自动定价与补货决策的研究分析
基于蔬菜类商品的自动定价与补货决策的研究分析 摘要 商超蔬菜不易保存,其质量会随着销售时间的增加而变差,影响商超收益,因此,基于各蔬菜品类的历史销售数据,制定合理的销售策略和补货决策对商超的营收十分关键。本文…...
【漏洞复现】飞企互联-FE企业运营管理平台 uploadAttachmentServlet—文件上传漏洞
声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。 一、漏洞描述 企互联-FE企业运营管理平台是一个利用云计算、人工智能、大数据、物联网和移动互联网等现代技术构建的云…...
基于深度学习的语言生成
基于深度学习的语言生成(NLG, Natural Language Generation)是一种利用深度学习模型生成自然语言文本的技术。它在智能写作、自动摘要、对话系统、机器翻译等领域有广泛应用。以下是对这一领域的系统介绍: 1. 任务和目标 语言生成的主要任务…...
Kafka Rebalance详解
作者:耀灵 1.rebalance概览 rebalance中文含义为再平衡。它本质上是一组协议,规定了一个 consumer group 是如何达成一致来分配订阅 topic 的所有分区的。比方说Consumer Group A 有3个consumer 实例,它要消费一个拥有6个分区的topic&#…...
在 Markdown 编辑器中插入 空格 Space 和 空行 Enter
1. 空格 Space  2.空行 Enter <br/>...
js逆向-webpack-python
网站(base64):aHR0cHM6Ly93d3cuY29pbmdsYXNzLmNvbS96aA 案例响应解密爬取(webpack) 1、找到目标url 2、进行入口定位(此案例使用 ‘decrypt(’ 关键字搜索 ) 3、找到位置进行分析 --t 为 dat…...
Python精神病算法和自我认知异类数学模型
🎯要点 🎯空间不确定性和动态相互作用自我认知异类模型 | 🎯精神病神经元算法推理 | 🎯集体信念催化个人行动力数学模型 | 🎯物种基因进化关系网络算法 | 🎯电路噪声低功耗容错解码算法 📜和-…...
npm install 报错:PhantomJS not found on PATH
npm install 报错:PhantomJS not found on PATH 整体报错内容 npm ERR! code 1 npm ERR! path G:\work-learn\open-coding\bruno\node_modules\phantomjs-prebuilt npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.…...
【C++进阶学习】第六弹——set和map——体会用C++来构建二叉搜索树
set和map基础:【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 前言: 在上篇的学习中,我们已经学习了如何使用C语言来实现二叉搜索树,在C中,我们是有现成的封装好的类模板来实现二叉搜索树…...
sqlmap确定目标/实操
安装kali,kali自带sqlmap,在window系统中跟linux系统操作有区别 sqlmap是一款自动化SQL工具,打开kali终端,输入sqlmap,出现以下界面,就说明sqlmap可用。 sqlmap确定目标 一、sqlmap直连数据库 1、直连数据库…...
Java笔试|面试 —— 对多态性的理解
谈谈对多态性的理解: 一个事物的多种形态(编译和运行时状态不一致性) 实现机制:通过继承、重写和向上转型(Object obj new 子类())来实现。 1.广义上的理解 子类对象的多态性,方法的重写&am…...
从RL的专业角度解惑 instruct GPT的目标函数
作为早期chatGPT背后的核心技术,instruct GPT一直被业界奉为里程碑式的著作。但是这篇论文关于RL的部分确写的非常模糊,几乎一笔带过。当我们去仔细审查它的目标函数的时候,心中不免有诸多困惑。特别是作者提到用PPO来做强化学习,…...
location匹配的优先级和重定向
nginx的重定向(rewrite) location 匹配 location匹配的就是后面的uri /wordpress 192.168.233.10/wordpress location匹配的分类和优先级 1.精确匹配 location / 对字符串进行完全匹配,必须完全符合 2.正则匹配 ^-前缀级别ÿ…...
观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系
V表示摄像机的观察矩阵(View Matrix),它的作用是把对象从世界坐标系变换到摄像机坐标系。因此,对于世界坐标系下的坐标值worldCoord(x0, y0, z0),如果希望使用观察矩阵VM将其变换为摄像机坐标系下的坐标值localCoord(x…...
PyTorch 3.0静态图分布式训练插件下载与安装(官方未公开的--enable-static-graph标志使用手册)
第一章:PyTorch 3.0静态图分布式训练插件下载与安装PyTorch 3.0 并非官方发布的正式版本(截至 2024 年,PyTorch 最新稳定版为 2.3.x),因此“PyTorch 3.0 静态图分布式训练插件”属于概念性技术预研组件,目前…...
量化模型实测:百川2-13B-4bits在OpenClaw复杂任务中的精度损失
量化模型实测:百川2-13B-4bits在OpenClaw复杂任务中的精度损失 1. 测试背景与实验设计 去年在部署本地AI助手时,我遇到一个现实矛盾:大模型的能力与硬件成本难以兼得。当尝试用OpenClaw实现自动化办公流程时,发现13B参数的百川原…...
前端埋点数据爆炸?WebTracing缓存策略与采样率配置避坑指南
前端埋点数据治理实战:WebTracing缓存策略与采样率配置深度解析 当你的应用日活突破百万量级时,埋点数据会像雪崩一样涌向服务器。某电商平台曾因未合理配置前端监控,导致单日产生2.3TB冗余埋点数据,不仅每年浪费数百万云存储成本…...
机械设计制造及自动化—万门大学月特训班 (清华老师讲授) 1、机械制图 2、机械制造 3、机械原理 4、机械设计
机械设计制造及自动化—万门大学月特训班 (清华老师讲授) 1、机械制图 2、机械制造 3、机械原理 4、机械设计 全580集,直接从零基础到机械设计与自动化行业大佬 在这里插入图片描述...
YOLOv5实战:如何用Python手写IoU计算函数提升目标检测精度
YOLOv5实战:手写IoU计算函数提升目标检测精度的Python实现 在目标检测任务中,边界框的定位精度直接影响模型性能。IoU(Intersection over Union)作为衡量预测框与真实框重合度的核心指标,其计算准确性对模型优化至关重…...
GEE实战指南:Sentinel-2多光谱植被指数批量计算与优化
1. 为什么需要植被指数? 植被指数是遥感领域用来量化植被生长状态的核心指标。简单来说,就像医生用体温计判断病人是否发烧一样,我们可以通过卫星数据计算出的植被指数,快速了解一片区域的植被健康状况。Sentinel-2卫星提供的多光…...
VSCode远程开发终极指南:5分钟搞定跳板机+服务器免密配置(附SSH密钥生成教程)
VSCode远程开发终极指南:5分钟搞定跳板机服务器免密配置 每次连接远程服务器都要输入密码、反复跳转终端,是不是已经让你精疲力尽?作为开发者,我们值得拥有更优雅的远程开发体验。今天要分享的这套方案,不仅能让你在VS…...
Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比)
Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比) 在FPGA开发中,团队协作和代码共享是常见需求,但如何平衡代码保护与功能灵活性一直是开发者面临的难题。Vivado提供了多种模块封装方案,每…...
DeepFace模型预下载全攻略:从根源解决首次运行痛点
DeepFace模型预下载全攻略:从根源解决首次运行痛点 【免费下载链接】deepface A Lightweight Face Recognition and Facial Attribute Analysis (Age, Gender, Emotion and Race) Library for Python 项目地址: https://gitcode.com/GitHub_Trending/de/deepface …...
SpringBoot+Mybatis多数据源实战:TDengine与MySQL混搭的物联网数据存储方案
SpringBootMybatis多数据源实战:TDengine与MySQL混搭的物联网数据存储方案 在物联网系统开发中,数据存储架构的设计往往面临一个核心矛盾:海量设备时序数据的高效存储与业务数据的复杂关系处理如何平衡?传统单一数据库方案要么在时…...
