应用开发

PXA 创作与开发指南

生命周期、界面与服务

理解 Guest 入口、UI 事务、资源与服务声明的实际开发方式。

中文指南 · 4 分钟阅读 · PXA 0.10.0
适用环境与阅读准备

适用环境C++ SDK

开始前已运行 Hello;本页解释代码与架构

术语速查 →

C 和 C++ SDK

PXA 同时提供独立的 C SDK 和 C++ SDK,使用相同 Core ABI、包身份和系统服务;C++ SDK 不是 C SDK 的包装层。性能取决于实现、编译优化与 Host 调用,不能单凭语言判断。

选择 接口形式 入口与示例
C SDK pxa.h 和按需服务头文件,如 pxa_ui.h;显式缓冲区、回调与请求 token sdk/guest-c、examples/hello/main.c
C++ SDK pxa/*.hpp;类型化服务、资源句柄、声明式 UI 与异步封装 sdk/guest-cpp、examples

pxa init 与当前 AI 模板默认 C++26。DevKit 0.9.0 已包含两套 SDK。配置过 AI 工具后,可以直接创建真正的 C 项目:

.pxa/pxa init apps/hello-c --id pxa-hello-c --language c
.pxa/pxa run apps/hello-c --profile pai-touch

先关闭模拟器再执行下一条命令。生成的是 main.c、C 项目的 CMake 与匹配清单,不是把 C++ 文件改名。独立 DevKit 的裸 pxa init 只创建 C++ 模板,不接受 --language;历史 C 例子有些采用旧 direct 构建方式,不能直接当作当前 CLI 的 CMake 项目。需要纯手工接入时参考 C 模板的三份文件,并设置自己的应用 ID。

两套 SDK 都提供输入、游戏绘制、音频、存储、网络和国际化等能力,具体服务以锁定 SDK 与目标 Host 为准,不混用另一套语言的接口。

C++ 按需链接,C SDK 的小型编码器多为头文件。避免冗余复制和逐帧更新静态 UI 比切换语言更有用。接口对照 可用于迁移。

布局与屏幕

UI 使用 dp 与字体尺寸能力,读取 Environment 中的 DPI、安全区和屏幕形状。用 SafeArea 保护必要内容;游戏画面可以延伸到安全区外,交互控件与文字仍需可触及、可读。避免只按一台设备的像素宽度写固定坐标。

屏幕预览不增加设备上的 UI 合成层。声明式 UI 交给 Host 的 UI 渲染器;游戏 Canvas/Surface 批次走绘制路径。更新受影响节点和提交必要批次,避免每帧重新发送静态菜单。

游戏与音频

将更新、几何处理、批次编码、Host 光栅化、显示和排队分开统计。限制在途帧并处理背压,避免提交很高 FPS 却显示旧帧。开放世界透明材质仍需正确深度和裁剪。

音效资源、音效组和轨道控制按需使用。动作发声与视觉事件共享时间基准;短音效不要排在长音乐的解码任务后。桌面声卡延迟不是设备音频延迟的证据。

服务与错误处理

package.json 声明所需服务、版本范围及 feature bits。可选能力在运行时查询,失败时采用合理降级。商城筛选会检查 Core、服务范围和必需 feature;设备 Host 仍是最后的验证者。

Core ABI 2.1 与 DevKit 0.9.0 独立演进。C++ API 可在 pre-1.0 期间变化;pxa.lock 锁住实际源码与工具链,升级后重新编译和测试。

输入与提交

游戏可按需使用 pxa/input.hpp 统一触摸和手柄状态;手柄事件带明确的连接状态与按键位图,断开或转入后台后应释放按下状态。新增模块不要求无输入需求的应用分配缓存。

搜索、登录等提交型输入框需要单行模式,例如 TextInput(text, editor).single_line().on_submit(...)。多行编辑器的回车表示换行;不要将普通字符更新当成提交。异步请求返回时,更新结果区域即可,避免替换正在编辑的输入框导致光标与输入法关闭。

参考实现与资料guest-cpp/README.zh-CN.md ↗hello/main.cpp ↗zh-CN/pxa-binding.md ↗

输入关键词,搜索全部教程。