AI 驱动的跨端迁移实践(上):一套工作流,一端变三端

AI 驱动的跨端迁移实践(上):一套工作流,一端变三端

如何用 AI Agent 工作流,把一个 iOS Objective-C 应用系统化地迁移到 iOS Swift、Android Kotlin、HarmonyOS ArkTS 三个原生平台?


从一个问题说起

你手上有一个运行了多年的 iOS Objective-C 应用,几十万行代码,功能完善,用户稳定。现在老板说:我们要同时支持 Android 和鸿蒙

这不是纸上谈兵------这是我在一个艺术类应用(以下简称 ArtApp)项目中真实遇到的需求。

传统的做法要么是招三个团队各写一遍,要么用跨平台框架(Flutter/RN)重写。但我选了第三条路:用 AI Agent 驱动的系统化工作流,把一端代码逐模块迁移到三端原生实现


为什么不用跨平台框架?

这个选择并非拍脑袋。ArtApp 是一个以高清艺术品浏览为核心的应用,涉及:

  • 高清图片缩放与手势交互------需要原生级性能
  • WebView + JSBridge 业务页------深度依赖平台 WebView 能力
  • gRPC 通信------Android/iOS 有成熟的 protobuf 库,HarmonyOS 需手写编解码
  • 平台特性------如 iOS 的 SwiftUI、Android 的 Material Design、鸿蒙的 ArkUI

跨平台框架在"最大公约数"上会让每个平台都不够原生。我需要的是三个100%原生的应用,只是它们的功能要完全一致。


核心理念:Spec-First + Golden Reference

整个工作流建立在两个核心理念上:

1. Spec-First(规格优先)

不直接翻译代码,而是先从 OC 源码中提取功能规格说明书。这份规格与平台无关,描述的是"这个模块做什么",而不是"怎么用 OC 做"。

为什么要多这一步?因为直接翻译 OC 代码到 Kotlin/ArkTS 会带入大量 OC 特有的模式(delegate、category、block 嵌套等),而提取规格后,每个平台可以用最地道的方式实现。

2. Golden Reference(金标准)

iOS Swift 实现作为跨端对齐的基准。并非 iOS 优先,而是因为我们有 OC 原版可以真机对比,iOS Swift 最容易验证正确性。一旦 iOS Swift 通过用户验收,它就成为 Android 和 HarmonyOS 的参照标准。


9 阶段工作流全景

这是整个迁移的核心流程,每个模块都走一遍:

蓝色 = 调度,紫色 = 分析,红色 = 实现,橙色 = 比对,绿色 = 验收,紫罗兰 = 沉淀。虚线箭头表示修复回退路径。

关键规则

  • 不允许跳过阶段------每个阶段都有准入/准出门禁
  • Stage 5 后规格冻结------iOS 验收通过后,规格不再修改
  • 修复不超过 3 轮------第 3 轮仍未通过就升级处理(回退到更早阶段)
  • Stage 6 持续推进------Agent 不等"继续"指令,自动修复直到通过

7 个 Agent 各司其职

这不是一个 Agent 包打天下,而是专业化分工

  • 主 Agent 负责全局调度,分配模块、管理阶段流转
  • Master Agent 从 OC 源码中提取功能规格书
  • iOS Agent 按规格实现 SwiftUI 版本,产出金标准
  • Android / Harmony Agent 参照金标准并行实现各自原生版本
  • Comparison Agent 对每个平台做四维代码比对,输出差异报告
  • Workflow Optimizer 在每轮结束后提取经验,更新知识库

每个 Agent 有明确的输入输出约定和共享策略(如统一的 Proto 定义、统一的配置项),确保三端行为一致。


统一的技术底座

三端虽然各自原生,但共享同一套"基因":

通信层:统一 Proto 定义

复制代码
所有平台共用相同的 .proto 文件
iOS / Android:protobuf 自动代码生成
HarmonyOS:基于 .proto 手写编解码(ArkTS 无官方 protobuf 插件)

配置统一

复制代码
ServerAPPKey: <your-app-key>
ServerToken:  <your-server-token>
Host:         <your-grpc-host>:9090

Manager 层模式复用

复制代码
XxxInfoManager   → 用户/业务信息管理(三端同名同接口)
XxxBusinessMgr   → 业务逻辑调度
RPCHelper        → gRPC 请求封装

这意味着无论在哪个平台调试,数据模型、接口定义、业务逻辑都是对齐的。


下篇预告

方法论说完了,但"纸上得来终觉浅"。在中篇里,我会分享:

  • 20+ 个模块是怎么拆分和排序的?
  • 四维代码比对到底比什么?
  • 并行实现 Android + HarmonyOS 时踩了哪些坑?

敬请期待。


作者按:本文所描述的工作流已在 ArtApp 项目中完成了 20+ 个模块的迁移,涵盖浏览、检索、用户、详情、设置等完整功能链。整个过程由 AI Agent 协同完成,人工主要参与需求确认和真机验收。

相关推荐
小兵张健13 小时前
Codex 使用教程(2):设置与项目配置详解
程序员·openai·ai编程
Java小白笔记13 小时前
OpenClaw 实战方法论
java·开发语言·人工智能·ai·全文检索·ai编程·ai写作
周末程序猿14 小时前
从 OpenAI Agents SDK 中了解最新的 Agent 设计理念
agent·ai编程
zhougl99614 小时前
MCP服务
ai编程
CodingPioneer15 小时前
AICoding基础资料
ai编程
Irissgwe16 小时前
LangChain快速上手
ai·langchain·llm·ai编程
程序员Better16 小时前
前端成功转型AI全栈,我踩过的坑都替你填上了
前端·后端·ai编程
飞坦16 小时前
failed to set model 和 GatewayRequestError 怎么解决?排查了一整天,总结 4 种修法
ai编程·claude
C澒17 小时前
AI 生码 - D2C:Figma to Code 全流程实现
前端·低代码·ai编程·figma
带娃的IT创业者17 小时前
Claude Code Routines 深度解析:重新定义 AI 辅助编程的工作流自动化
运维·人工智能·自动化·ai编程·工作流·anthropic·claude code