CJMP SDK v0.7.0 发布:WebView 跨平台补齐、工程自动化与性能诊断三线并进

本文基于 CJMP 社区文档仓 CJMP/Docs 的发布说明
cjmp-sdk-0.7.0 撰写。

一、CJMP 是什么

CJMP 是一套基于仓颉(Cangjie)生态的高性能跨平台开发框架,目标是让开发者用一份仓颉代码同时覆盖 HarmonyOS、Android、iOS 三端。它的技术栈围绕"仓颉语言 + 自研 Engine 渲染引擎 + CJ-UI 组件库"展开,配套 keels 命令行工具、VS Code 插件与 DevTools 调试工具链,构成从开发、构建、签名到调试的完整闭环。其文档仓 CJMP/Docs 提供应用开发者快速入门、框架开发者快速入门等文档(Apache-2.0 开源)。

从版本历史看,CJMP 自 2025 年 10 月发布 v0.1.4 首个正式版以来保持约月度迭代,v0.7.0(2026-09-09 发布)是工程化与可观测性集中补强的一版。

二、v0.7.0 核心亮点速览

  • WebView 能力落地:CJ-UI 与 Engine 在 Android、iOS 上支持控制器、页面事件、网络与权限交互、Cookie、存储、媒体和相机生命周期等基础能力;
  • HarmonyOS 自渲染融合:Engine 新增鸿蒙端自渲染融合基础能力,多前端宿主可直接嵌入 Engine UI;
  • iOS 自动签名:keels config --select-ios-signing 配置一次,构建/运行/IPA 导出自动应用;
  • 三端统一资源同步与产物导出:lib/resources 一处维护、三端同步;project.outputDir 统一收集产物;
  • DevTools 可观测性:三端内存快照 + Engine 帧耗时/内存采样报告;
  • keels clean:带白名单与 --dry-run 的安全清理命令。

三、逐模块解读

3.1 CJ-UI:WebView 与图像接口

WebView 基础能力新增了类型、控制器和页面回调,覆盖 Cookie、存储、请求拦截、Scheme 响应、广告拦截、媒体播放及相机生命周期——这意味着混合开发中"原生页面 + H5 页面"的经典诉求在 CJMP 内部有了统一抽象,而不再依赖各平台原生 API 各写一套。

图像侧补充了 PixelMap / ImageSource 的部分 Cangjie API:像素读写、透明度、字节数、图像变换,输入源支持 URI、文件描述符、Buffer、RawFileDescriptor 等,为自定义渲染和图像处理打下底座。

3.2 Engine:自渲染融合与跨平台 WebView 运行时

自渲染融合是本版最值得关注的架构级特性。 它打通了多前端(当前为类 RN 框架)宿主节点与 Engine UIContent、渲染管线的创建和挂载链路,支持 Engine UI 节点随多前端 VSync 完成布局与绘制——上层业务无需改动即可使用。换句话说,存量类 RN 应用可以把 CJMP 的 Engine UI 直接嵌入现有页面做混合渲染,这是降低迁移门槛的关键一步。

同时,Engine 新增了独立的 WebView 跨平台运行时(实例、控制器,支持页面事件、权限、下载、认证、消息通道、Cookie、存储和媒体),与 CJ-UI 侧的 WebView 声明式 API 形成上下两层配合。

兼容性变更也值得注意:

  • HarmonyOS 低 API 兼容改为运行时动态符号查询,避免 API 22 以下设备因缺少新 C API 符号而加载即崩溃;
  • Android/iOS Release 静态库不再保留调试符号,减小体积且不影响运行行为。

修复的问题集中在图像与交互细节:透明 PixelMap 深拷贝色边、卡片复用时图片误判导致截断、多节点共用 PixelMap 概率性不显示、StyledString 更新崩溃,以及鸿蒙外层列表滚动时 Engine 内部节点误触发点击。

3.3 Tools:把"重复劳动"交给 keels

这一版 keels 的方向非常明确——消灭三端开发中的一切手工重复:

能力价值
iOS 自动签名--select-ios-signing 选择 Automatic 证书或 Manual profile,创建工程时自动写入 Team ID,构建/运行/导出 IPA 自动应用并校验
keels clean按平台清理、深度清理、测试结果清理,--dry-run 预览;白名单 + 路径校验保护源码与签名文件
三端资源同步lib/resources 中的共享资源按相对路径同步到三端资源目录,失败自动回滚、过期资源自动清理
统一产物导出project.conf 配置 project.outputDir,APK/AAR/HAP/HAR/IPA/App/framework 按 <outputDir>/<platform>/<debug|release>/ 归位,CI 与脚本可统一定位
Android 环境统一解析config/doctor/devices/emulators/create/build/test 全部命令共用一套 Android SDK/NDK/CMake/JDK 解析,并记录路径来源与配置冲突——多 SDK 环境和 CI 的"玄学构建问题"有了确定性答案

3.4 IDE-Plugins 与 DevTools

VS Code 插件把 keels clean 做成了命令面板工作流(可选平台 + 清理类型组合),并按工作区根目录的 project.conf 识别 CJMP 工程,只显示相关入口;构建交互从"产物类型 → 平台 → 模式"精简为"产物类型决定平台,只选模式"。SDK 查找规则统一为 Workspace → User → CJMP_SDK_HOME → PATH 的 keels,显式无效配置会停止回退并提示来源。

DevTools 新增 devtools memory show(三端进程总内存、Cangjie 堆、分类明细、原生库列表,输出 JSON/HTML)和 devtools engine start/stop(经 gRPC 采集 Engine 帧耗时与内存,输出原始数据/JSON/HTML 三种报告;当前支持 Android 和 iOS)。配合 Engine Profiler 采集 UI 线程帧率、构建/布局/渲染阶段耗时,掉帧定位和内存趋势分析第一次有了原生工具支撑。注意:采样需要使用 SDK 中对应平台的 Profile Engine 产物,Release Engine 保留接口但不执行采样。

四、环境与兼容性

项目支持版本
HarmonyOS6.0.0+(API Level 20+)
Android8.0+(API 26+;modern 工具链 SDK 34 / AGP 8.5.1 / Gradle 8.9 / NDK 27.2 / JDK 17+;legacy 工具链 JDK 8)
iOS12.0+(arm64 及 Simulator arm64,Libraries 另有 x86_64 产物)
仓颉工具链ohos 1.1.3(DevEco Studio 6.1.1.280 兼容包);Android/iOS 内置 Cangjie 1.2.0
CJMP Tools / VS Code 插件keels 0.7.0 / CJMP 插件 0.2.5 + Cangjie 插件 1.2.0-beta.rc4(均随 SDK 内置)

两个容易踩坑的兼容性说明:project.outputDir 只能配置项目根目录内的相对路径,未配置则保持原有产物位置;新建工程名称校验变严(拒绝与模板目录/平台关键字冲突的名称),属不兼容变更,但已有工程不受影响。

五、升级路径

升级步骤概括为:备份代码与 project.conf(含已有的 lib/resources)→ 从 CJMP SDK 发行版 获取 v0.7.0 并解压到新目录 → 更新 CJMP_SDK_HOME 与 PATH → keels --version + keels doctor -v 验证 → 安装 SDK 内置的两个 VS Code 插件。需要 iOS 自动签名、三端共享资源或统一产物目录的,分别执行 keels config --select-ios-signing、创建 lib/resources、配置 project.outputDir 即可。官方建议升级后先跑 --dry-run 清理预览,再在三端真机/模拟器上完成编译、安装、运行验证。遇到问题可通过 CJMP SDK Issues 反馈(附 keels doctor -v 输出与环境信息)。

六、结语

如果用一句话概括 v0.7.0,那就是:能力上补齐 WebView 与图像底座,架构上打通鸿蒙自渲染融合,工程上用 keels 和 DevTools 把跨平台开发的"脏活"和"盲区"各扫掉一半。 从版本曲线看,CJMP 的重心正从"三端能跑"转向"三端好开发、好诊断"——对仓颉生态的跨平台团队来说,这是一版值得跟进并投入验证的迭代。

相关资源:

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐