CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率

HarmonyOS开发者社区
发布于 2025-10-13 11:57
浏览
0收藏

你是否曾遇到过这样的场景:看到一个精美的APP界面,想要借鉴实现却苦于手动编写代码的过程繁琐耗时?或者作为开发者,你拿到了产品经理发的截图,却需要从头开始编码实现?

现在,这一切都有了革命性的变化!鸿蒙AI辅助编程工具CodeGenie的最新功能——根据图片自动生成鸿蒙应用页面代码,正在重新定义应用开发流程

一、从“手敲页面代码”到“图生页面代码”

只需将你的APP截图或设计稿截图(JPG/PNG)上传至CodeGenie ,即可生成可编译运行的鸿蒙 ArkTS 页面代码,包括ArkUI 组件、布局结构、组件属性等,快速完成页面框架搭建。

这不仅仅是简单的图像识别,而是真正理解页面结构的智能生成。当上传图片后,AI会进行多层次的信息分析和处理,包括基础元素识别、布局结构解析、样式与文本提取,从而实现从“手敲页面代码”到“图生页面代码”的梦想:

基础元素识别:

· 组件类型判断:可以区分不同类型的UI组件,如按钮、输入框、列表项等

· 图像区域划分:识别图片、图标、背景图等视觉元素,并分析尺寸与比例

布局结构解析:

· 容器关系推断:通过元素的空间分布推断布局容器类型,识别Column、Row、Grid等布局关系

· 间距尺寸测量:计算元素自身的尺寸及其相互间的间距关系,生成对应的布局参数

· 对齐与分布:识别左/右/顶/底对齐、等距/两端分布等,并输出对应配置参数

样式与文本提取:

· 样式属性解析:识别背景色、字体、边框等视觉属性,生成对应的样式代码

· 文本内容提取:提取界面中的文字信息,包括标题、正文、按钮文字等,并尽量保持原文风格和格式

二、为什么“只靠图片也能还原”

“图生代码“业界挑战:

“图生码”即为Screenshot2code场景,比较早的研究包括基于小模型的pix2code和img2cook,以及当前基于大模型的Flame-Code-VLM和各种依托VLM/LLM构建的AI辅助产品(比如Cursor、V0等)。 当前业界的挑战主要有以下2点:

​1. 视觉理解精度不足:

生成代码编译预览后,与原始输入图片进行比较可直观反映还原效果,因此视觉还原度往往是评价生成质量的首要标准。UI 页面通常涵盖组件类型、尺寸、样式、布局与相对位置等多种元素,不同于UX稿已经包含了详细的样式信息, 图片的样式是以像素承载的,需要额外去进行解析。如果图片理解准确度不高,会导致生成结果与原设计在视觉一致性上出现显著偏差。

2. 代码效果质量不稳定:

对于生成的代码,可从“可编译预览率”与“代码质量”两个维度进行评估:

可编译预览率:

对于大颗粒的工程级代码生成场景,若生成的代码无法即时预览,会比较大的影响用户体验,特别是在0-1 原型构建的场景。实时预览可使用户快速判断生成结果是否可用,也可以为后续调整提出方向。当前基于VLM/LLM的方式单次生成编译预览率低,往往需要人工调试修复,通常耗时10min以上且预览依旧难以保证。而且在鸿蒙场景下,模型更容易出现幻觉。

代码质量:

仅还原视觉布局与样式并不足以满足生产要求,代码还需符合软件工程规范(如合理使用循环结构foreach、避免变量冗余等)。当前大模型在复杂场景下,对开发框架与编码规范的理解和实现能力仍存在较大差距,制约了生成代码的实际可用性。

我们的解法:

针对以上挑战,我们在鸿蒙场景下探索了多种生成方式,考虑到当前 VLM/LLM 在端到端图片到代码生成中的可用性仍较低,我们最终选择了“先解析、后生成”的架构方案。首先基于 VLM 与目标检测模型实现高精度视觉解析,达到85%以上的元素解析准确率,然后基于鸿蒙知识库增强,构建需求分析、代码生成、验证修复三类Agent协同生成最终的ArkTS代码。

目前可实现2min左右完成页面代码生成,可编译预览率接近100%,自Beta试用以来线上采纳率约40%。

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

1. 大小模型结合的高精度元素解析:

直接基于 VLM 执行目标检测面临输出 token 易超长、推理耗时高,以及标签体系与模型本身不匹配导致的细粒度解析不稳定等问题。综合考虑微调成本、时延,我们采取了先用小模型分块,再用VLM进行详细解析的方式。

模块划分:首先我们引入了专用 UI 元素检测小模型对图片进行初步区域识别,输出各个模块的位置和类别信息。模型输出的区域用于后续精细化解析,而标签体系一部分可以直接映射到鸿蒙容器组件。

VLM进行详细解析:在拿到一层模块后,我们用VLM每个模块进行并发解析,解析出各个模块的组件名称、大小高度、文字、字体、位置等信息,最终构建出完整的组件树。过程中还融入了鸿蒙知识库中预定义的常用字体和布局信息,以降低生成噪声和模型幻觉。

解析结果举例:

{
  "global_info": {
    "app_type": "xx...",
    "page_function": "首页/个人中心/...",
    "color_scheme": ["主色HEX", "辅色HEX"]
  },

  "layout_structure": [
    {
      "area_type": "顶部导航栏",
      "components": [
        {
          "component_type": "返回按钮",
          "position": [[5%,3%], [15%,10%]],
          "style": {
            "icon": "箭头方向(left)",
            "color": "# 333333",
            "size": "24x24pt"
          },
          "interaction": {
            "type": "clickable",
            "target": "返回上一页"
          }
        }
      ]
    }
  ],
  "detail_annotations": {
    "key_elements": ["搜索框", "主功能入口"],
    "dynamic_area": "轮播图(第3屏)",
    "business_flow": "旅游酒店预订流程入口"
  }
}

2. 基于 LLM + DSL2Code 的混合生成架构:

尽管当前 LLM 对 ArkTS 的生成能力已有显著提升,但在大颗粒工程代码生成中,仍存在混淆 TypeScript 语法、版本兼容性问题等挑战。为此,我们构建了融合 LLM 生成与 DSL 转换的双路径机制。

鸿蒙知识增强的LLM 生成链路:

在获取组件树后,求分析 Agent 会进一步明确页面布局与功能设计,再由 LLM 生成对应代码。为提升准确性,我们引入了鸿蒙相关组件文档与样例代码作为 RAG 知识库,增强模型对 ArkTS 的生成能力。由于单次生成仍可能存在缺陷,系统还集成了验证-修复循环机制:通过获取编译结果、报错信息让LLM进行迭代验证修复,确保输出代码具备可运行性。

DSL2Code确定型生成路径:

考虑到基于LLM的生成任有不确定性和时延开销,对于一些比较明确的场景,我们实现了一套DSL2Code系统,直接将解析所得的组件树转换为代码。DSL2Code有高效、确定性强的

优点,但生成的代码在工程规范性上可能不足,因此系统会进一步调用重构 Agent,对输出进行自动化重构与规范整理,提升代码可维护性。

三、一分钟了解工作流

如何使用“图生代码”功能?以下我们以生成“鸿蒙世界APP首页”为例,演示从截图生成鸿蒙页面代码的完整流程:

第一步:启动生成命令

在CodeGenie窗口输入框输入"/",调出指令面板,选择Generate Page,进入页面生成界面

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

第二步:上传页面截图

在窗口界面中点击添加图片,上传鸿蒙世界APP首页截图,点击

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

图标发送。

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

第三步:AI自动解析与生成

工具将自动完成以下任务:

· 解析组件和布局,包括搜索框、顶部背景图、主内容区域、文章列表、底部导航栏等。

· 还原文本内容,如标题、描述、统计数据和右侧分类图标等。

· 提取样式信息,包括颜色、字体大小、间距等视觉属性。

· 生成 ArkTS 代码并实时预览渲染效果,确保视觉一致性。

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

第四步:保存并集成至工程

点击保存到工程,工具将自动生成:

· 完整的ArkTS代码文件

· 配套的资源文件

· 可直接编译运行的项目

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

生成所有代码文件默认保存在generated目录下,可以直接编译运行,能够有效减少调试的成本。

CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开发效率-鸿蒙开发者社区

当前版本已对美食、旅游、购物、新闻和教育等重点垂直领域进行了深度优化,生成效果较为精准。同时,其它领域也具备一定的泛化能力,我们也会持续提升生成质量与适用范围。

结语:开发新范式已来

这不仅仅是效率提升工具,更是连接视觉设计与代码实现的智能桥梁。它将开发者从繁琐的界面编码中解放出来,让每个人都能更专注于业务逻辑和用户体验创新。


无论你是想要快速原型验证的创业者,还是需希望提升开发效率的开发者,这款工具都将为你打开新的可能性。快来试试用一张图片,生成你的第一个鸿蒙页面吧。

分类
标签
收藏
回复
举报
回复
    相关推荐