同一项业务需要覆盖iOS、安卓和鸿蒙,如何实现一次开发多端运行,降低多端适配成本

简介: 小程序容器提供了一种全新的解决方案:iOS、安卓和鸿蒙仍然保留自己的宿主 APP,系统相关能力继续按平台建设;页面、路由、表单、接口调用和业务规则放进一套小程序工程,由三个客户端中的小程序运行时共同承载,大幅度降低二次开发的成本。

不少APP团队原来只维护iOS和安卓两套客户端,协作方式已经比较稳定,现在也需要开发鸿蒙客户端,加入以后,同一项需求开始需要三个团队来实现:三个团队分别做页面、接接口、处理登录和权限,再各自测试、构建和发布。

如果需求是会员查询、活动专区或售后办理,三端背后的业务流程通常没有太大区别。产品改一个字段,三个工程都要跟着修改;接口增加一种状态,三端分别补页面和异常处理;其中一端排期晚几天,功能就很难同时上线。团队表面上在维护三个客户端,很多时间却花在重复实现同一项业务。

小程序容器提供了一种全新的解决方案:iOS、安卓和鸿蒙仍然保留自己的宿主 APP,系统相关能力继续按平台建设;页面、路由、表单、接口调用和业务规则放进一套小程序工程,由三个客户端中的小程序运行时共同承载,大幅度降低二次开发的成本。

cover_16_9

重复开发的主要是业务的频繁迭代

iOS、安卓和鸿蒙有各自的应用生命周期、权限模型、导航方式和工程工具。APP 启动、账号安全、消息、支付编排、系统权限以及设备能力,通常都要留在原生宿主中处理。三个客户端分别维护这些底层代码是合理的,因为它们直接连接操作系统,差异无法靠复制一份页面代码消除。

上层业务更容易出现重复。一个订单查询页面,三端做的都是筛选、列表和详情;一项预约服务,三端都要填写信息、选择时间、提交并查看结果;内容专区也离不开栏目、列表、详情和分享入口。过去这些页面跟着客户端主工程分别开发,久而久之便形成三套相似代码,以及三条相互追赶的发布节奏。

采用小程序架构后,宿主APP 继续负责稳定的公共能力,小程序承接更新频繁、流程相对完整的业务。业务团队维护一套页面和规则,客户端团队维护各端运行环境,两边通过约定好的能力接口交换登录凭据、启动参数和处理结果。

如何实现业务与宿主APP解耦

多端复用采用“三套宿主、一份业务”的结构:iOS、安卓和鸿蒙宿主需要分别集成对应的小程序 SDK,完成应用信息配置、初始化、启动入口、页面返回、权限声明和生命周期处理。鸿蒙工程还要按照自身的 Ability、窗口和权限机制完成接入,不能直接照搬另外两端的代码。

以 FinClip 官方集成文档中的最小依赖配置为例,三个宿主工程分别引入对应的核心 SDK。代码只覆盖依赖声明;应用绑定、SDK Key 与 SDK Secret、初始化、权限以及扩展组件仍需按各端工程补齐。

iOS 工程依赖

iOS 可以通过 CocoaPods 引入核心 SDK:

target 'YourApp' do
  pod 'FinApplet'
end

FinApplet 是核心运行依赖。地图、蓝牙、通讯录等扩展能力应根据业务需要单独选择,避免把暂时不用的组件一起放进主工程。依赖写入后执行 pod installpod update,再通过生成的 .xcworkspace 打开工程。

Android 工程依赖

Android 在 App 模块的 Gradle 配置中加入 finapplet

dependencies {
   
    implementation 'com.finogeeks.lib:finapplet:x.y.z'
}

x.y.z 需要替换为项目实际使用并完成验证的 SDK 版本。宿主工程还要配置对应的软件仓库,并按照当前版本文档处理动态库打包、混淆及所需的扩展依赖,不能只复制一行 implementation 就直接进入发布构建。

HarmonyOS 工程依赖

HarmonyOS 通过 OHPM 管理依赖,在项目的 oh-package.json5 中加入核心 SDK:

{
   
  "dependencies": {
   
    "@finclip/sdk": "latest"
  }
}

官方示例使用 latest。生产工程更适合锁定已经完成联调和回归的具体版本,避免依赖更新后直接改变构建结果。工程还要完成 OHPM 仓库、build-profile.json5、Ability、窗口和权限配置。

容器接入完成后,每个宿主 APP 内都会有一套小程序运行环境。小程序代码面对相对一致的页面、组件、路由、网络和存储接口,运行时再把这些调用落到当前客户端。普通业务页面不需要知道自己运行在 iOS 还是鸿蒙上,平台差异集中在容器和宿主能力层处理,业务仓库也就不必长期堆叠三组平台判断。

登录、扫码、定位、文件选择、支付等能力需要提前形成接口契约。小程序发起“获取登录信息”或“选择文件”一类业务请求,各端宿主调用自己的系统能力,并返回约定好的数据结构。成功、失败、用户取消和权限拒绝都要有统一结果;某个旧版客户端暂不支持时,也应明确返回能力不可用,让小程序提示升级或走备用流程。

inline_01_multiplatform_architecture

业务版本与 APP主包解耦

多端架构前期的工作量主要在宿主底座。三个客户端要完成 SDK 集成,统一小程序入口和导航行为,接好登录态、权限、日志及常用原生能力,还要把宿主版本和能力版本管理起来。这部分稳定以后,后续新增业务通常沿用同一条运行通道,不需要每来一个专区就重新改三套客户端页面。

日常业务更新也会换一条发布链路。小程序开发完成后上传到管理平台,经过体验、审核、灰度和正式发布,已关联的三端宿主就可以取得新的业务版本。页面文案调整、表单字段变化、接口规则修改或活动内容更新,只需要发布小程序,三个 APP 主包不用跟着重新构建,也不必因为一次业务修改再次进入应用市场审核。

新增系统权限、修改宿主自定义 API、升级原生 SDK、调整窗口或应用生命周期,仍然属于客户端改动,需要三端正常发版。小程序能够独立更新的是页面、组件和业务逻辑,无法替代操作系统层面的工程变更。管理平台还应记录小程序版本依赖的最低宿主版本,避免业务已经发布,旧客户端却缺少对应能力。

inline_02_release_workflow

多端复用仍然需要分别验证

一套业务代码可以减少重复开发,但测试不能只跑一遍。三端运行时最终依赖各自系统的字体、网络、输入法、权限和窗口行为,页面在安全区域、键盘弹起、文件选择、前后台切换等场景中仍可能出现差异。容器提供的是相对一致的运行环境,不会抹掉操作系统本身的区别。

比较实用的测试方式,是建立一条共用业务基线,再补充平台差异清单。登录、路由、接口异常、缓存、上传、版本更新和回退可以共用一套用例;iOS 重点检查系统版本和授权行为,安卓覆盖主要设备与系统差异,鸿蒙检查 Ability 启动、权限以及扩展能力组合。涉及宿主接口的改动,还要同步验证三个客户端返回的数据结构和错误处理。

基于小程序的多端运行架构

小程序容器可以为iOS、Android 和 HarmonyOS 提供对应的小程序 SDK,三个宿主分别完成运行时接入,再通过管理平台关联同一项小程序业务。页面、组件、路由和业务规则集中在一套小程序工程中,宿主 APP 继续管理账号、安全、支付、消息和设备能力。具体 SDK 能力、版本要求和权限配置需要按各端项目逐项核对。

宿主底座搭好以后,业务团队可以通过管理平台上传、审核、灰度、发布、回退和下架小程序版本。三个客户端共用一份业务资产和发布节奏,普通业务更新不再反复推动 APP 主包发版。三端客户端仍然存在,但它们更多是在维护稳定的运行环境;变化频繁的业务回到同一套代码和同一条发布链路中,重复建设也会随之减少。

相关文章
|
JSON JavaScript 数据可视化
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
1824 0
SpringBoot+Thymeleaf+ECharts实现大数据可视化(基础篇)
|
21天前
|
JSON 人工智能 Java
【AI】Agent 全栈进阶|工具调用与结构化输出
文章介绍了大模型的关键能力——Function Calling(函数调用)与结构化输出,主要包含四部分内容: Function Calling 原理,工具定义与注册,JSON Schema 约束输出,最小工具调用循环
114 2
|
21天前
|
JSON 自然语言处理 小程序
节假日查询-假期信息查询 API 接口文档教程
本文为开发者与系统工程师提供阿里云「法定节假日查询」API的权威接入指南,涵盖单参数调用、调休补班识别、多语言示例、免费试用及透明计费等核心能力,助力电商、HR、金融、ERP等场景快速实现假期自动化识别。
162 0
节假日查询-假期信息查询 API 接口文档教程
|
21天前
|
人工智能 数据安全/隐私保护 自然语言处理
阿里云百炼AI通用型节省计划、资源包、Token Plan三种计费方式详解与选型指南
本文介绍了阿里云百炼平台三大核心计费模式的底层差异与选型策略。AI通用型节省计划通过承诺月消费换取阶梯折扣,最高5.3折,覆盖阿里直供全模型,适合长期稳定的多模型混合使用场景;资源包为预付费固定资源量方案,仅支持单一指定模型,灵活性低,适配短期测试、单一模型轻量使用场景;Token Plan采用统一Credits订阅制,全模型通用且支持团队席位管理,成本可控,适合新用户入门试水。文章结合抵扣优先级、适用场景与最新优惠活动,为不同规模的企业和开发者提供精准降本选型指南。
阿里云百炼AI通用型节省计划、资源包、Token Plan三种计费方式详解与选型指南
|
21天前
|
Arthas 监控 Java
阿里程序员常用的 15 款开发者工具!
阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。
252 1
|
21天前
|
搜索推荐 Linux API
趁 DeepSeek Harness 刚火,我做了一个 DSH 插件市场,2 天冷启动记录
DeepSeek Harness 插件生态分散难用?DSH Marketplace(dshmarketplace.dev)应运而生:聚合插件、标注兼容性、提供一键安装。支持Web/CLI/Python/API/DSH内置Store等多入口,含自托管插件。开源共建,欢迎用户反馈与作者入驻。(239字)
|
前端开发 小程序
微信小程序系列——无缝引入CSS或者WXML文件
微信小程序系列——无缝引入CSS或者WXML文件
|
JSON 小程序 数据格式
微信小程序动态修改页面标题title
微信小程序动态修改页面标题title
2521 0
微信小程序动态修改页面标题title
|
存储 应用服务中间件 网络安全
Android 网络链接稳定性测试解决方案
Android 网络链接稳定性测试解决方案
781 0
|
Python
【已解决】ModuleNotFoundError: No module named ‘DBUtils‘,from DBUtils.PooledDB import PooledDB,
【已解决】ModuleNotFoundError: No module named ‘DBUtils‘,from DBUtils.PooledDB import PooledDB,
1848 0