1. 创建一次 C++26 项目
先安装 DevKit。在准备存放项目的目录执行,不需要进入固件工作区。若已使用 AI 一键配置,下文的 pxa 换成工作区的 .pxa/pxa(Windows 为 .pxa\pxa.cmd),项目使用 apps/hello,不要再安装另一套工具:
pxa init hello --id pxa-hello
pxa run hello
预期打开 Hello PXA,数字从 0 开始,点击 +1 后变为 1。先关闭窗口,再进行下一个步骤。若已经创建 hello,直接运行,不要重复 init;工具拒绝覆盖非空目录。
项目包含 main.cpp、CMakeLists.txt、package.json 与忽略规则;首次构建生成应提交的 pxa.lock。.pxa/ 与 dist/ 是可删除的生成物。清单里的应用 ID 是 pxa-hello,目录名是 hello,两者分别用于安装身份和源码定位。
2. 看懂界面代码
生成的 hello/main.cpp 使用以下完整 C++26 示例:
#include <pxa/app.hpp>
#include <pxa/ui_component.hpp>
#include <pxa/ui_environment.hpp>
#include <pxa/ui_layout.hpp>
using namespace pxa;
using namespace pxa::ui;
using namespace pxa::ui::literals;
struct Hello {
Environment<> environment;
State<int> count{0};
Result<void> on_start(Context&, std::span<const std::byte> configuration) {
return environment.initialize(configuration);
}
Result<bool> on_event(Context&, const Event& event) {
return environment.update(event);
}
auto view() {
return SafeArea(environment.display(), Column(
Text("Hello PXA").font(Font::title),
Text(count).font(Font::headline),
Button("+1").on_click([this] {
count.update([](int value) { return value + 1; });
}).height(44_dp).fill()
).gap(12_dp).fill()).padding(12_dp);
}
};
PXA_APPLICATION(Hello)
State<int> 保存计数,点击时修改状态,SDK 更新受影响的界面。Environment 读取显示、安全区、DPI、语言等配置,并处理配置事件。SafeArea 与 dp 尺寸用于适配不同屏幕。
把 Hello PXA 改成 Hello from my app,保存后运行:
pxa run hello --watch
保存源码会增量构建并重启应用;计数从 0 重新开始。这不是保持应用内存的热替换。语法错误导致构建失败时,模拟器中先前成功的应用继续运行;修正并保存后恢复更新。按 Ctrl+C 停止 watch。
3. CMake 描述源文件
hello/CMakeLists.txt 内容为:
cmake_minimum_required(VERSION 3.20)
project(hello LANGUAGES CXX)
find_package(Pxa CONFIG REQUIRED)
pxa_add_app(main SOURCES main.cpp)
pxa_add_app 默认创建 C++26 应用组件 main,采用 O3。新增 .cpp 时加入 SOURCES,不维护另一份编译源文件列表,也不手动复制 ABI 常量或编译器路径。package.json 单独描述身份、版本、资源和所需服务。
4. 检查圆屏和高 DPI
以下命令分别运行,关闭窗口后再执行下一条:
pxa run hello --profile sensecap-watcher
pxa run hello --profile esp-mosaico
pxa run hello --profile esp32s31-korvo-1
比较按钮可触及性、文字和安全区。Profile 改变屏幕与 DPI,桌面执行目标仍是 linux-x86_64。
5. 在真机运行
设备需运行 Core 2.1 并提供清单所需服务。连接设备,关闭占用串口的 monitor 或其他调试客户端,核对实际端口:
pxa device info --port /dev/ttyACM1 --baud 2000000
pxa run hello --device /dev/ttyACM1 --baud 2000000
工具读取设备架构,生成匹配 AOT,再安装并启动。设备验证包内发布者与签名;开发密钥由本机用户数据目录保存。若产品额外限制开发发布者,还需按其策略授权。这里的 ACM1 是示例端口,换成自己的设备。
6. 打包已验证版本
pxa build hello --target esp32s3,esp32s31,simulator --offline
pxa publish hello/dist/pxa-hello.pxa --check-only
预期产生 hello/dist/pxa-hello.pxa,校验命令输出包身份、目标和 SHA-256。--check-only 不上传。发布时继续签名与打包和商城登记。Core ABI 2.1、DevKit 0.10.0 与应用版本 0.1.0 是独立版本。