Android SDK 开发 云托管

news/2024/5/30 16:46:57/文章来源:https://blog.csdn.net/Naide_S/article/details/136690813

开发SDK,拒绝重复造轮子。
本文陈述两种SDK开发方式,第一种AAR方式;第二种远程依赖方式。
具体步骤分为:
一、如何开发SDK?
二、如何打包AAR?
三、如何打包AAR?
四、如何进行SDK远程托管?
五、如何升级远程托管SDK版本?

本文开发一个打印日志工具作为SDK开发示例。

一、如何开发SDK?

首先创建module(Android library),写入功能代码即可。创建module library示意图如下:
sdk是测试打包工具,内部只包含一个NLog日志打印工具类,工具类包含打印debug、error、ignore三级日志方法、设置日志开关的方法及设置日志过滤方法。
项目创建示例1
项目创建示例2
日志工具代码块

/*** 日志输出工具*/
public class NLog {// 日志过滤public static String TAG = "nlog";// 当前等级,用于控制打印哪一级日志private static int level = 0;// debug 日志等级public static final int DEBUG = 1;// ignore 日志等级public static final int IGNORE = 2;// error 日志等级public static final int ERROR = 3;/*** 打印debug日志* @param s*/public static void d(String s){if (level < DEBUG){Log.d(TAG,s);}}/*** 打印ignore日志* @param i*/public static void i(String i){if (level < IGNORE){Log.i(TAG,i);}}/*** 打印error日志* @param e*/public static void e(String e){if (level < ERROR){Log.e(TAG,e);}}/*** set isPrint log* @param mLevel 打印日志的等级*/public static void setSwitch(int mLevel){level = mLevel;}/*** 设置日志过滤* @param tag*/public static void setTag(String tag) {TAG = tag;}
}

这个日志工具类供外部调用,接下来我们使用Android studio自带的gradle工具打包aar。

二、如何打包AAR?

我使用gradle的assembleRelese或者bundleReleaseAar来生成aar包的。直接使用Android
studio 自带的gradle工具栏进行AAR打包操作。
1、打开AS左侧gradle工具栏,找到打包目标module->gralde->tasks->other,
找到assembleRelese或者bundleReleaseAar。选中双击即可。
打开gradle工具栏
2、如果不选择开源,可以在打包前开启混淆,在打包后进行壳加固。开启源码保护。

开启混淆
混淆规则,此处不介绍,可直接搜索。

3、打包结束后,输出的aar包在nadesdk\build\outputs\aar文件下。
AAR包输出

4、注意,如果在AS右侧gradle工具烂里找不到。可以按照示例图进行设置。

修改gradle配置

同步项目gradle配置文件
如未立即生效,重启AS。然后执行二、1步骤打包AAR。

三、如何使用AAR?

在需要的module的build.gradle配置文件添加引用即可。
在项目添加AAR文件包,添加AAR引用。

android {sourceSets {main {jniLibs.srcDirs = ['libs']}}
}dependencies {implementation files('libs/nadesdk-release.aar')
}

测试SDK提供的日志输出:

NLog.d("test app module add arr libaray")

达到预设目标,此时开发SDK完成。

四、如何进行SDK远程托管?

远程托管SDK的目的是开源代码供各位同行一起讨论探讨,也方便管理SDK版本。
SDK开发完成后,创建远程仓库(jitpack,Maven仓库)。把SDK推送到远程仓库托管,通过implementation引用到项目中使用。
方式:我将项目托管到GitHub平台(GitHub作为仓库托管平台,SDK版本分支管理),再通过jitpack生成Maven仓库动态连接。注册GitHub平台、jitpack使用授权GitHub账号登录。

传送门
https://jitpack.io/
https://github.com/

项目推送到托管到github,这里不多说。这里只说如何生成动态连接。

1、创建git远程仓库时,一定注意:选公开(public),jitpack只能拉取到公开仓库。
如图:

创建GIT仓库
2、推送SDK代码

3、以SDK版本,创建release。如图:

创建release

创建release2
4、复制release节点仓库地址,生成SDK。
复制release连接

5、打开jitpack平台,拉取release仓库代码,生成SDK仓库地址。

生成meven
6、通过implementation引用远程仓库,使用SDK。
如何使用,如图。

使用示例

五、如何升级远程托管SDK版本?

1、上传更新代码后,新增release节点。

升级SDK
2、打开jitpack平台,复制GitHub节点连接,拉取节点仓库代码。

升级SDK

3、拉取release节点代码,生成SDK仓库地址。

生成meven仓库连接

implementation 'com.github.394646857:nadesdk:v1.0.1'
 NLog.d("test app module add arr libaray")

测试效果达到预设目标,SDK远程托管完成。

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

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

相关文章

【LeetCode热题100】21. 合并两个有序链表(链表)

一.题目要求 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 二.题目难度 简单 三.输入样例 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入…

webpack5零基础入门-6webpack处理图片资源

1.在webpack5中file-loader和url-loader为内置模块 通过在加载器中配置rule即可激活 {test: /\.(png|jpe?g|gif|webp)$/,type: asset} 2.使用webpack进行打包 执行npx webpack 可以看到图片资源打包后都被放到了dist文件目录下 3.使用webpack进行图片格式转换为base64 优势…

Vue.js+SpringBoot开发考研专业课程管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 考研高校模块2.3 高校教师管理模块2.4 考研专业模块2.5 考研政策模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 考研高校表3.2.2 高校教师表3.2.3 考研专业表3.2.4 考研政策表 四、系统展示五、核…

Midjourney绘图欣赏系列(九)

Midjourney介绍 Midjourney 是生成式人工智能的一个很好的例子&#xff0c;它根据文本提示创建图像。它与 Dall-E 和 Stable Diffusion 一起成为最流行的 AI 艺术创作工具之一。与竞争对手不同&#xff0c;Midjourney 是自筹资金且闭源的&#xff0c;因此确切了解其幕后内容尚不…

Apache SeaTunnel MongoDB CDC 使用指南

随着数据驱动决策的重要性日益凸显&#xff0c;实时数据处理成为企业竞争力的关键。SeaTunnel MongoDB CDC(Change Data Capture) 源连接器的推出&#xff0c;为开发者提供了一个高效、灵活的工具&#xff0c;以实现对 MongoDB 数据库变更的实时捕获和处理。 本文将深入探讨该连…

如何使用ChatGPT辅助写论文、数据分析、AI绘图?【附学习资料】

原文链接&#xff1a;如何使用ChatGPT辅助写论文、数据分析、AI绘图&#xff1f;【附学习资料】https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247597452&idx1&sn8aa991235ffee89fc76590a90b9005d7&chksmfa823c6bcdf5b57df0cb02ecd1821921f38ea6de34c7…

【MMDetection3D实战(2)】: 利用MMDet3D预训练模型进行推理

安装完成MMDet3D环境后,我们就可以基于MMDet3D提供的预训练模型在点云和单目图像上进行推理。 下图是利用是基于预训练模型的推理结果,可以看到无论是基于点云还是图像,它都能给出一个正确的推理结果,把对应的car和motor的3D box正确的框出来。 推理的实现很简单,大体分…

【git】GitHub仓库没有 Contribution activity

解决方案 检查并更改本地的 git 绑定的邮箱和名字 git config --global user.name "Your New Name" git config --global user.email "yournewemailexample.com"查询方式 git config --global user.name git config --global user.email成功显示

【SQL】1070. 产品销售分析 III(窗口函数)

题目描述 leetcode题目&#xff1a;1070. 产品销售分析 III 方法一&#xff1a;窗口函数 select product_id, year as first_year, quantity, price from (select *,dense_rank() over(partition by product_id order by year) as rkfrom Sales ) A where A.rk 1方法二 …

IDEA开启Run Dashboard

1、Run Dashboard是什么&#xff0c;为什么要使用 Run Dashboard 是 IntelliJ IDEA 中的一个工具窗口&#xff0c;用于管理和监视项目中正在运行的应用程序和配置。它提供了一种集中管理运行和调试过程的方式&#xff0c;可以让开发人员更方便地查看和控制正在运行的应用程序。…

【Swing】Java Swing实现省市区选择编辑器

【Swing】Java Swing实现省市区选择编辑器 1.需求描述2.需求实现3.效果展示 系统&#xff1a;Win10 JDK&#xff1a;1.8.0_351 IDEA&#xff1a;2022.3.3 1.需求描述 在公司的一个 Swing 的项目上需要实现一个选择省市区的编辑器&#xff0c;这还是第一次做这种编辑器&#xf…

Midjourney新算法来袭!解决你角色形象一致性的大难题——亲测猫与女孩跨场景表现

嘿&#xff0c;朋友们&#xff0c;你们想过这个问题吗&#xff1f; 当你在制作一部电影或写一部小说时&#xff0c;你总希望同一个角色能在不同的场景和背景下出现&#xff0c;对吧&#xff1f; 但这时&#xff0c;一个难题冒出来了&#xff1a;如何确保这个角色的形象在各个…

机器学习-04-分类算法-03KNN算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法与knn算法部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程化…

[Unity]Mesh.uv赋值报错“Mesh.uv is out of bounds“

一、原因 顶点的数量和UV的数量不同&#xff0c;Mesh不会复制数组中数据&#xff0c;其实只是函数调用先后顺序的问题&#xff0c;类使用C的include有先后顺序。 二、解决 先赋值顶点&#xff0c;再赋值UV即可

【Vue】Request模块 - axios 封装Vuex的持久化存储

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue ⛺️稳中求进&#xff0c;晒太阳 Request模块 - axios 封装 使用axios来请求后端接口&#xff0c;一般会对axios进行一些配置&#xff08;比如配置基础地址&#xff0c;请求响应拦截器…

掌握Java建造者模式:逐步构建复杂对象的艺术与实践

建造者模式的主要目的是将一个复杂对象的构建过程封装起来&#xff0c;使得客户端代码不需要知道对象创建的细节。这种模式特别适用于那些具有多个组成部分、创建过程复杂、对象属性多且大多数属性可选的场合。 在Java中&#xff0c;建造者模式通常涉及以下几个角色&#xff1…

Three.js点线几何空间图形代码

Three.js点线几何空间图形代码。效果如下 下载地址 Three.js点线几何空间图形代码

Simple Admin:基于Go Zero的大型项目分布式微服务后端管理系统

Simple Admin 是一个开箱即用的分布式微服务后端管理系统&#xff0c;基于go-zero开发&#xff0c;为开发中大型后台提供了丰富的功能&#xff0c;支持三端代码生成。 官方自带多种扩展&#xff0c;助力中小企业快速上云&#xff0c;快速迭代。适合用于微服务学习和商用&#x…

【AI+编程】利用chatGPT编写python程序处理日常excel工作提升效率小技巧

之前写过一篇AI编程相关的文章 【人工智能】为啥我最近很少写python编程文章了&#xff0c;浅谈AI编程RPA提升工作效率 。 最近有同学私信我&#xff0c;怎么利用AI编程来提升工作效率&#xff0c;除了文章里讲的 使用AI帮忙写算法、代码提示、代码优化、不同语言转换(如J…

HTML静态网页成品作业(HTML+CSS)——电影加勒比海盗介绍设计制作(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有1个页面。 二、作品演示 三、代…