当前位置: 首页 > article >正文

Sonic云真机平台二次开发指南:自定义插件与扩展开发

Sonic云真机平台二次开发指南自定义插件与扩展开发【免费下载链接】sonic-serverBack end of Sonic cloud real machine platform. Sonic云真机平台后端服务。项目地址: https://gitcode.com/gh_mirrors/so/sonic-serverSonic云真机平台是一个开源的移动设备远程控制调试与自动化测试平台为企业提供完整的真机设备管理解决方案。本文将详细介绍如何对Sonic平台进行二次开发包括自定义插件开发、功能扩展和架构定制帮助开发者快速上手平台扩展开发。 平台架构概览Sonic云真机平台采用微服务架构设计主要包含以下几个核心模块sonic-server-controller- 核心控制中心负责设备管理、任务调度和业务逻辑处理sonic-server-gateway- API网关服务处理请求路由和认证sonic-server-eureka- 服务注册与发现中心sonic-server-folder- 文件管理服务sonic-server-common- 公共组件和工具类 开发环境搭建1. 获取源代码首先需要克隆Sonic云真机平台的后端代码仓库git clone https://gitcode.com/gh_mirrors/so/sonic-server cd sonic-server2. 环境要求Java 17 或更高版本Maven 3.6MySQL 8.0Redis 6.03. 项目结构解析Sonic采用标准的Spring Boot多模块项目结构sonic-server/ ├── pom.xml # 父级POM文件 ├── sonic-server-controller/ # 控制中心模块 ├── sonic-server-gateway/ # 网关模块 ├── sonic-server-eureka/ # 服务注册中心 ├── sonic-server-folder/ # 文件管理模块 └── sonic-server-common/ # 公共模块 自定义插件开发指南1. 机器人插件扩展Sonic平台支持多种机器人通知插件包括钉钉、微信、飞书等。以添加新的机器人通知插件为例创建新的机器人实现类 在sonic-server-controller/src/main/java/org/cloud/sonic/controller/tools/robot/vendor/目录下创建新的实现类Component public class CustomRobotImpl implements RobotMessenger { Override public void sendMessage(DeviceMessage message) { // 实现自定义机器人消息发送逻辑 } Override public void sendMessage(TestSuiteMessage message) { // 实现测试套件消息发送 } }注册到机器人工厂 修改RobotFactory.java文件添加新的机器人类型支持case RobotType.CUSTOM_ROBOT - robotMessenger context.getBean(CustomRobotImpl.class);2. 设备管理插件Sonic支持多种设备类型管理可以通过扩展设备管理插件来支持新的设备类型创建设备处理器 在sonic-server-controller/src/main/java/org/cloud/sonic/controller/services/impl/目录下创建新的设备服务实现Service public class CustomDeviceServiceImpl implements DevicesService { Override public RespModelPageDevices findAll(int platform, String deviceStatus, String deviceVersion, String deviceModel, String deviceName, PageDevices pageable) { // 实现自定义设备查询逻辑 } Override public RespModelString updateImg(UpdateDeviceImg updateDeviceImg) { // 实现设备图片更新逻辑 } }️ API扩展开发1. 创建新的Controller在sonic-server-controller/src/main/java/org/cloud/sonic/controller/controller/目录下创建新的控制器Tag(name 自定义功能管理) RestController RequestMapping(/custom) public class CustomController { Autowired private CustomService customService; Operation(summary 获取自定义数据) GetMapping(/list) public RespModelListCustomDTO getCustomList() { return new RespModel(RespEnum.SEARCH_OK, customService.getList()); } Operation(summary 添加自定义数据) PostMapping public RespModelString addCustom(Validated RequestBody CustomDTO customDTO) { return customService.save(customDTO); } }2. 数据模型扩展在sonic-server-controller/src/main/java/org/cloud/sonic/controller/models/domain/目录下创建新的实体类Data Accessors(chain true) Entity Table(name custom_table) public class CustomEntity { Id GeneratedValue(strategy GenerationType.IDENTITY) private Integer id; Column(nullable false) private String name; Column private String description; Column(name create_time) private Date createTime; } 服务集成扩展1. 第三方服务集成Sonic平台支持与第三方测试框架和服务集成可以通过以下方式扩展创建服务客户端 在sonic-server-controller/src/main/java/org/cloud/sonic/controller/feign/目录下创建Feign客户端FeignClient(name third-party-service, url ${third.party.url}) public interface ThirdPartyServiceClient { PostMapping(/api/test) RespModelString executeTest(RequestBody TestRequest request); GetMapping(/api/results/{id}) RespModelTestResult getResult(PathVariable(id) String testId); }2. 消息队列集成Sonic支持消息队列集成可以在sonic-server-controller/src/main/java/org/cloud/sonic/controller/config/目录下配置Configuration public class RabbitMQConfig { Bean public Queue testQueue() { return new Queue(sonic.test.queue, true); } Bean public TopicExchange testExchange() { return new TopicExchange(sonic.test.exchange); } Bean public Binding testBinding() { return BindingBuilder.bind(testQueue()) .to(testExchange()) .with(test.routing.key); } } 数据库扩展1. 自定义数据表Sonic使用MyBatis Plus作为ORM框架支持动态表创建。可以通过注解方式定义新表Table(name custom_config) TableComment(自定义配置表) public class CustomConfig { IsKey IsAutoIncrement private Integer id; Column ColumnComment(配置键) private String configKey; Column ColumnComment(配置值) private String configValue; Column ColumnComment(创建时间) private Date createTime; }2. 数据访问层创建对应的Mapper接口Mapper public interface CustomConfigMapper extends BaseMapperCustomConfig { Select(SELECT * FROM custom_config WHERE config_key #{key}) CustomConfig selectByKey(Param(key) String key); Update(UPDATE custom_config SET config_value #{value} WHERE config_key #{key}) int updateByKey(Param(key) String key, Param(value) String value); } 测试与部署1. 单元测试编写在sonic-server-controller/src/test/java/org/cloud/sonic/controller/目录下创建测试类SpringBootTest class CustomServiceTest { Autowired private CustomService customService; Test void testCustomFunction() { // 编写测试逻辑 assertNotNull(customService); } }2. 打包与部署使用Maven进行项目打包mvn clean package -DskipTests部署到生产环境# 构建Docker镜像 docker build -t sonic-custom:latest . # 运行容器 docker run -d --name sonic-custom \ -p 8090:8090 \ -v /path/to/config:/config \ sonic-custom:latest 调试与监控1. 日志配置Sonic使用SLF4J日志框架可以在application.yml中配置日志级别logging: level: org.cloud.sonic.controller: DEBUG com.example.custom: INFO file: name: logs/sonic-custom.log2. 健康检查扩展健康检查端点Component public class CustomHealthIndicator implements HealthIndicator { Override public Health health() { // 实现自定义健康检查逻辑 boolean healthy checkCustomService(); if (healthy) { return Health.up().withDetail(customService, Available).build(); } else { return Health.down().withDetail(customService, Unavailable).build(); } } } 最佳实践建议1. 代码规范遵循Sonic项目的代码风格和命名规范使用统一的异常处理机制RespModel返回结果合理使用Spring的依赖注入2. 性能优化对于频繁查询的数据使用缓存合理设计数据库索引使用异步处理耗时操作3. 安全性对所有API接口进行权限验证使用参数校验注解Validated防止SQL注入和XSS攻击4. 可维护性编写清晰的文档和注释保持代码模块化设计编写完整的单元测试 总结通过本文的指南您已经了解了如何在Sonic云真机平台基础上进行二次开发。平台提供了灵活的插件机制和清晰的架构设计使得扩展开发变得简单高效。无论是添加新的机器人通知渠道、集成第三方服务还是开发全新的功能模块都可以通过标准的Spring Boot开发模式快速实现。记住在进行二次开发时始终遵循平台的设计原则和编码规范确保代码的质量和可维护性。Sonic社区的活跃开发者和丰富的文档资源也将为您的开发工作提供有力支持。祝您在Sonic云真机平台的二次开发之旅顺利【免费下载链接】sonic-serverBack end of Sonic cloud real machine platform. Sonic云真机平台后端服务。项目地址: https://gitcode.com/gh_mirrors/so/sonic-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

Sonic云真机平台二次开发指南:自定义插件与扩展开发

Sonic云真机平台二次开发指南:自定义插件与扩展开发 【免费下载链接】sonic-server 🎉Back end of Sonic cloud real machine platform. Sonic云真机平台后端服务。 项目地址: https://gitcode.com/gh_mirrors/so/sonic-server Sonic云真机平台是…...

5MW海上永磁风电直驱+1200V风电并网Simulink仿真:矢量控制与混合储能系统

5MW海上永磁风电直驱1200V风电并网simulink仿真!采用矢量控制,混合储能采用超级电容与锂电池,采用滑动平均滤波算法分配高频与低频功率。 有参考!! 凌晨三点半盯着Simulink波形图突然跳红,我猛灌一口凉透的…...

永磁体磁场的有限元模拟(FEA仿真)

磁场是看不见摸不着的,那么怎样画出磁场的形状、描绘磁场的走向呢?借助有限元模拟是很好的方式。 有限元模拟也叫FEA仿真(Finite Element Analysis),是使用计算机利用复杂的数学方程、模型和公式对真实物理系统进行模拟…...

Hyper-V DDA图形化配置工具:从命令行泥潭到可视化管理的转型实践

Hyper-V DDA图形化配置工具:从命令行泥潭到可视化管理的转型实践 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 开篇&…...

AppleRa1n:轻松绕过iOS 15-16激活锁的图形化工具

AppleRa1n:轻松绕过iOS 15-16激活锁的图形化工具 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 还在为忘记Apple ID密码而无法使用自己的iPhone或iPad而烦恼吗?或者你购买了一…...

Acrobat-Pro-DC-2026|Win中文|PDF编辑器|免安装版安装教程

我用夸克网盘给你分享了「Acrobat-....001」,点击链接或复制整段内容,打开「夸克APP」即可获取。动作辌辍渥玠璜多好/~3c073Y3Gtf~:/链接:https://pan.quark.cn/s/4af90540fc07Adobe Acrobat Pro DC 2026功能强大!全球最牛PDF编辑…...

Windows与Office激活终极指南:告别弹窗烦恼的完整解决方案

Windows与Office激活终极指南:告别弹窗烦恼的完整解决方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经遇到过Windows系统突然弹出激活提示,或者Office软件…...

3个步骤掌握Unity游戏插件加载:MelonLoader使用指南

3个步骤掌握Unity游戏插件加载:MelonLoader使用指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾想为喜…...

基于全同态加密的逻辑回归心脏病预测示例详解

(1)人口统计学(Demographic) 性别(Sex):男性或女性(分类变量) 年龄(Age):患者年龄(连续变量——虽然记录为整数&#xff0…...

NLP入门教程:从传统方法到深度学习

NLP入门教程:从传统方法到深度学习 标签:#自然语言处理、#人工智能、#大模型、#大模型实战、#transformer、#机器学习、#深度学习2.5 关键词提取 文末给大家准备了一份系统学习资料包,需要学习规划和欢迎扫码交流模块三:NLP核心工…...

3分钟完成Windows与Office永久激活:KMS_VL_ALL_AIO完整指南

3分钟完成Windows与Office永久激活:KMS_VL_ALL_AIO完整指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹出激活提示而烦恼吗?或者Office软件突然变…...

从电压比较器到超级电容:DyingGasp掉电检测电路的设计与调优

1. DyingGasp功能的核心价值与应用场景 想象一下你正在视频会议中突然断电,对方只会看到你突然消失的画面,完全不知道发生了什么。而在通信设备的世界里,这种"突然失联"会给整个系统带来更多麻烦。DyingGasp(临终喘息&a…...

从DeepFM源码到业务落地:Normalized Gini Coefficient在CTR预估中的实战调优指南

从DeepFM源码到业务落地:Normalized Gini Coefficient在CTR预估中的实战调优指南 当你在TensorFlow-DeepFM的源码中第一次看到Normalized Gini Coefficient这个评估指标时,是否和我一样产生过疑惑——为什么不用常见的AUC或LogLoss?这个问题困…...

从零搭建NLP系统:文本分类与知识抽取

从零搭建NLP系统:文本分类与知识抽取 标签:#自然语言处理、#人工智能、#大模型、#大模型实战、#transformer、#机器学习、#深度学习 自然语言处理行业价值、核心应用场景 原理:从句子中抽取人名、地名、组织名等实体。 1. 高薪敲门砖&#xf…...

HTML怎么显示导出文件体积优化建议_HTML压缩图片选项【操作】

优化图片需用现代格式(如WebP)合理尺寸有损压缩;HTML压缩只删注释、合并空白、移除可选闭合标签;构建时图片须经imagemin插件压缩,CSS背景图也要走loader处理。HTML里怎么让图片变小却不模糊导出体积大,八成…...

从激光雷达到摄像头:手把手教你用知识蒸馏提升单目3D检测性能(以UniDistill为例)

从激光雷达到单目视觉:UniDistill框架下的跨模态3D检测实战指南 当自动驾驶车辆在暴雨中行驶时,激光雷达点云变得稀疏,而摄像头图像因雨滴模糊失真——这正是跨模态知识蒸馏技术大显身手的场景。本文将带您深入UniDistill框架的核心&#xff…...

EEG数据处理全攻略:从EDF文件读取到.set文件保存的完整MATLAB代码示例

EEG数据处理全攻略:从EDF文件读取到.set文件保存的完整MATLAB代码示例 在神经科学研究中,脑电图(EEG)数据的处理是基础且关键的一环。对于使用MATLAB进行EEG数据分析的研究人员来说,从原始EDF文件读取到最终保存为.set格式的完整流程&#xf…...

说话人识别中的性别差异:为什么你的模型对女声准确率更低?

说话人识别中的性别差异:为什么你的模型对女声准确率更低? 在语音技术领域,说话人识别系统已经取得了显著进展,但一个长期存在的问题是:为什么这些系统对女性声音的识别准确率往往低于男性?这种现象不仅存在…...

从零入门RAG:手把手教你构建大模型知识增强系统

本文深入解析RAG(检索增强生成)技术,阐述其解决大模型知识缺失、滞后及幻觉问题的核心优势,对比RAG与微调、Agent的适用场景,并拆解RAG的九步实现流程及四大核心组件(知识嵌入、向量数据库、检索器、生成器…...

WeChatIntercept:Mac微信消息防撤回的本地化解决方案

WeChatIntercept:Mac微信消息防撤回的本地化解决方案 【免费下载链接】WeChatIntercept 微信防撤回插件,一键安装,仅MAC可用,支持v3.7.0微信 项目地址: https://gitcode.com/gh_mirrors/we/WeChatIntercept 核心价值&#…...

别再手写推理Wrapper了!.NET 11内置ModelRunner抽象层实战拆解:3张核心类图+2个致命陷阱+1份生产环境压测报告

第一章:.NET 11 ModelRunner抽象层的演进本质与设计哲学.NET 11 中的 ModelRunner 抽象层并非简单接口叠加,而是对模型执行生命周期进行语义升维的结果——它将推理调度、状态管理、资源隔离与可观测性注入统一契约,使框架层与模型实现彻底解…...

生成式 AI 驱动下网络安全手册重构与防御体系研究

摘要 生成式 AI 正从根本上改变网络攻击的组织方式、实施效率与欺骗能力,使传统依赖静态特征、固定流程与人工研判的安全手册全面失效。本文以 AI 重构安全手册为核心议题,系统分析生成式 AI 对钓鱼攻击、漏洞利用、渗透测试与社会工程学的赋能机理&…...

小参数模型逆袭:用调参trick超越大参数模型

总结:互联网中厂大厂,尤其是给你权限给你机器玩的,去,提升极大。小公司or普通研究院,非常一般。一段实习,通常需要满足一些前置的技术条件才能拿到offer。但offer只是开始,还需要自己有意识地在…...

【2026年最新600套毕设项目分享】微信小程序的家庭记账本系统(30002)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...

解锁毕业论文新姿势:好写作AI,你的学术“智能外挂”!

在学术的江湖里,毕业论文就像是一场终极BOSS战,每一位学子都是手持“知识之剑”的勇士,誓要斩断迷茫,赢得学术的桂冠。但面对浩如烟海的文献、错综复杂的逻辑、还有那令人头疼的格式规范,不少勇士都感到力不从心。别怕…...

STM32CubeMX+Keil5+ESP8266:基于HAL库的物联网设备快速联网实战

1. 环境准备与工具链搭建 第一次接触STM32ESP8266组合开发时,我花了整整两天时间才把开发环境理顺。现在回想起来,其实只需要三个核心工具:STM32CubeMX、Keil MDK-ARM和串口调试助手。建议使用Keil5版本,它对HAL库的支持最稳定。我…...

【2026年最新600套毕设项目分享】基于小程序的购物系统(30001)

有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项…...

恒压供水全套图纸程序 西门子s7-200smart西门子触摸 屏 1.恒压供水系统

恒压供水全套图纸程序 西门子s7-200smart西门子触摸 屏 1.恒压供水系统,采用西门子S7-200smart PLC,西门子IE700触摸屏; 2.一拖三,根据设定压力自动投切电机,自动升降频率,PID调节,程序逻辑…...

Amber插件系统开发指南:如何扩展框架功能的完整教程

Amber插件系统开发指南:如何扩展框架功能的完整教程 【免费下载链接】amber A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance. 项目地址:…...

PHP表单开发效率提升370%的秘密:基于Swoole+Vue3的低代码引擎架构拆解(含性能压测对比数据)

第一章:PHP低代码表单引擎开发概述 PHP低代码表单引擎是一种面向业务人员与开发者协同的轻量级开发范式,它将表单结构定义、校验逻辑、数据绑定与渲染流程抽象为可配置、可复用的组件体系,显著降低CRUD类表单应用的构建门槛。该引擎不依赖重型…...