在每个平台都有原生质感的移动应用,并能干净利落地向前迁移。
使用 .NET MAUI 打造跨平台的 iOS、Android、Windows 与 macOS 应用,同时也是一家能低调地把遗留 Xamarin 代码库向前迁移、又不破坏现有功能的工作室。
一次编写。原生质感。随平台演进。
.NET MAUI 让同一套代码库覆盖 iOS、Android、Windows 与 macOS,同时不必牺牲原生外观与体验或平台专属的集成能力。我们从 Xamarin 时代起就一直在交付跨平台的 .NET 移动应用,相同的专业准则,搭配当下的工具链。
跨平台,原生质感
一套 C# / XAML 代码库,编译为真正原生的 iOS、Android、Windows 与 macOS 二进制文件。绝不用伪装成应用的网页视图。
与你商城相辅相成
B2B 下单应用、销售代表工具、调度与仓库助手,全部与我们已为你搭建的商城共享同一份 ERP 数据真源。
离线优先的模式
现场作业往往难有完美的网络连接。我们以无冲突的本地编辑、排队同步,以及清晰的待处理状态视觉提示来设计。
深度原生集成
BLE、NFC、相机、生物识别、推送、深度链接、App Clips、Android 分享目标,当某项集成至关重要时,我们会深入到平台原生代码层面。
资深团队
移动端的缺陷往往很微妙。电量、内存、线程、推送可靠性,为你的应用做规划的人,正是最终交付它、并在接下来一年里为它负责的人。
现代化的发布流水线
自动化构建、签名、内部测试,App Store / Play Store 发布、崩溃报告,以及稳定的发布节奏,让更新不再是一件大事。
我们把 Xamarin 代码库向前迁移。这是实打实的差异化优势。
Microsoft 已于 2024 年 5 月停止支持 Xamarin,转而主推 .NET MAUI。如果你仍停留在 Xamarin.Forms 或 Xamarin.Native,你的应用所处的平台已不再获得任何修复,无论是安全、操作系统更新还是商店政策变更,而你正与那些早已在 MAUI 上发布的团队竞争。
两边我们都做过
当初在 Xamarin 上构建这些应用的工程师,正是如今在 MAUI 上交付的同一批人。我们清楚知道什么会变、什么会出问题,以及迁移实际会花多少成本。
并行运行验证
我们以增量方式迁移,让新的 MAUI 构建与你现有的 Xamarin 应用在相同的测试流量下并行运行,从而让行为一致性得到验证,而非仅凭假设。
风险可控的上线
分阶段内部发布 → 测试群组 → 商店上线,并配备紧急开关与远程配置。我们绝不会一开关就听天由命。
我们如何构建移动端。
技术栈与架构
- 跨平台:
.NET MAUI+C#+XAML,面向 iOS、Android、Windows、macOS - MVVM,搭配
CommunityToolkit.Mvvm,使用源代码生成的绑定以提升性能 - 本地数据:
SQLite用于离线优先,Realm在同步语义更契合时采用 - 网络:
Refit+HttpClient,Polly用于重试 / 熔断 - 依赖注入与导航: 内置的 MAUI Shell,较大型应用则采用
Prism - 原生互操作:当 MAUI 的抽象不够用时,通过各平台的分部类实现
原生集成
- BLE / NFC,用于仓库、零售与现场作业
- 相机、ML Kit / Vision,用于条码与文档扫描
- 生物识别认证(Face ID、Touch ID、Windows Hello)
- 通过 APNs + FCM 推送通知,支持免打扰时段与分群投放
- 深度链接、通用链接、App Clips、分享目标
- 后台同步、地理围栏,以及契合各平台的任务调度
离线优先的模式
- 本地写入、服务端确认,配合乐观式 UI 与清晰的待处理状态提示
- 冲突解决:低风险场景采用后写者优先,订单 / 报价则采用自定义合并
- 排队式操作,跨应用重启仍持久重试并采用退避策略
- 带宽感知同步(大型媒体仅在 Wi-Fi 下,ERP 商品目录仅在前台刷新)
- 诊断信息导出,让现场问题无需再打一通电话即可复现
质量与 CI/CD
- GitHub Actions / Azure Pipelines 并行构建 iOS 与 Android
- 自动化签名、配置文件,以及商店元数据管理
- 通过 BrowserStack / Sauce Labs / Appium 在真机上进行 UI 测试
- 性能预算(冷启动、内存、电量)在各版本间持续跟踪
- 在 Play Store 与 TestFlight 群组中分阶段发布,再广泛推送
可观测性与运维
- 通过 Firebase Crashlytics / Sentry / Bugsnag / Azure Monitor 进行崩溃与 ANR 报告,并提供还原后的堆栈
- 面向转化漏斗的结构化分析事件,采用知情同意的数据采集方式
- 远程配置 + 功能开关,让我们无需通过商店更新即可关停问题版本
- 在商店政策范围内采用利于 OTA 的模式(RN 式热修复并不在此列)
- 真实用户网络追踪,在客户察觉之前发现 ERP 桥接超时
安全
- 通过 Keychain / Keystore 安全存储,令牌绝不放入 SharedPreferences
- 在威胁模型有需要时进行证书固定
- 对敏感操作(价格调整、订单审批)采用生物识别二次验证
- 面向高价值 B2B 场景的越狱 / Root 检测
- OWASP MASVS 控制项内置于构建流水线,而非事后补救
常见问题解答
你们能把 Xamarin.Forms 迁移到 .NET MAUI 吗?
能。这是我们核心的移动端工作流之一。我们已经把 Xamarin.Forms 应用干净地迁移到 .NET MAUI:项目文件转换、Forms 到 MAUI 的控件映射、自定义渲染器到处理器的重写,以及为 iOS / Android / Windows / macOS 各头项目重新梳理 Platforms 文件夹。我们不做一次性重写;而是把现有应用分支迁移到 MAUI,借助功能开关发布,并逐项消除平台专属的差异,让团队在迁移进行中仍能持续发布。
那 Xamarin.iOS / Xamarin.Android(非 Forms)呢?
答案相同,只是处理器方面的工作更多。Xamarin.iOS / .Android(有时称为“经典 Xamarin”)不像 Forms 那样能与 MAUI 的单项目模型一一对应。我们通常会在 MAUI 处理器中重建 UI 层,保留底层的业务逻辑与平台专属绑定,并分阶段迁移过来。请预留比 Forms 项目更长的迁移时间;为你维护的任何自定义原生绑定额外安排时间。
.NET MAUI 在 B2B 场景下达到生产可用了吗?
是的,但要心中有数。我们已在生产环境中为 B2B 销售代表与现场作业应用交付 MAUI,并搭配 ASP.NET Core 10 后端。优势:共享的 C#、面向内容密集型界面的 Blazor Hybrid,以及真正覆盖 iOS / Android / Windows / macOS。需要预先规划的不足:像素级精准的自定义控件比原生需要更多处理器工作,深度的 BLE / 相机 API 有时需要平台专属代码,而所支持的 iOS 最低版本也在不断抬升(在投入前请查阅 Microsoft 当前的支持矩阵)。
Xamarin → MAUI 迁移需要多长时间?
对于一个中等规模的 Xamarin.Forms 应用(比如 50 到 150 个界面,外加常见的若干自定义渲染器):约 8 到 14 周的资深工程师工作量,包含 QA。对于 Xamarin.iOS / .Android:因涉及处理器 / UI 重写,约 14 到 24 周。一旦我们看到你的项目文件、自定义渲染器数量,以及头项目中有多少原生代码,预算就会更加清晰。