1. 复制可运行示例
先完成环境准备。复制完整示例,保留本地化资源:
mkdir -p local/my-apps
cp -R deps/pxa-system/apps/pxa/hello local/my-apps/hello
示例目录包含 main.c、package.json 与 i18n/。CLI 的 hello 是源码目录名;示例 manifest 中的应用身份是 pxa-hello。安装后启动使用应用身份。
2. 认识清单
{
"format": "pxa-package-source-0.1",
"min_sdk": [0, 1],
"target_sdk": [0, 1],
"compile_sdk": [0, 1],
"id": "pxa-hello",
"version": "0.1.0",
"name": "Hello PXA",
"description": "My first PXA application",
"services": ["ui"]
}
保留示例的 SDK 声明与 UI 服务,先修改 description,再修改 i18n/ 中的标题和正文。pxa_app_messages.h 由本地化构建流程生成,不需要手写。
3. 登记源码,简化后续命令
运行 realpath local/my-apps 得到实际绝对路径,在 local/apps.toml 中加入以下配置;已有文件保留其他条目。将示例路径替换为你自己的路径,不要把 $PWD 当作 TOML 自动变量:
[apps.hello]
source_root = "/home/me/pxa-workspace/local/my-apps"
这里填写 hello/ 的父目录。登记名用源码目录名 hello,不是包内 ID pxa-hello。现在即可使用下面的短命令:
tools/dev.sh sim hello --watch
tools/app.sh build hello --target simulator
多应用配置、自动发现、覆盖优先级和路径排查见用 apps.toml 管理应用。本页剩下的命令默认你已经完成登记。
4. 在桌面构建并持续运行
tools/dev.sh sim hello --watch
保存源码后,工具会增量打包、覆盖安装并重新启动应用。观察终端里的构建结果与 Guest 日志。它会重启 App,内存中的临时状态不会保留。
需要分步检查时:
tools/app.sh build hello --target simulator
tools/simulator.sh product --profile pai-touch \
--package local/app-output/pai-touch/pxa-hello \
--publisher-key deps/pxa-system/apps/pxa/.dev-signing/publisher-public.der
期望结果:出现 Hello PXA 窗口,显示本地化标题与正文。打包器同时输出包目录、.pxa 和 provenance 文件;provenance 用于追溯构建,不是安装包。
5. 安装到 ESP32-S3
连接已经运行 PXA 固件的 pai-touch 板子,关闭占用串口的监视器或 GUI:
tools/app.sh build hello --board pai-touch --target esp32s3
pxadb package install local/app-output/pai-touch/pxa-hello.pxa --port /dev/ttyACM0
pxadb package list --port /dev/ttyACM0
pxadb package run pxa-hello --port /dev/ttyACM0
如果设备策略不信任示例开发发布者,安装会被拒绝;使用该产品允许的开发签名配置或自己的发布流程,不要关闭验签。模拟器包不能代替匹配芯片的 AOT 包。
6. 进入自己的应用
将示例复制为新的源码目录,再修改 manifest 的 id、名称和版本。保持已发布应用的 ID 与发布者身份不变。下一步学习生命周期和 UI,并在公开分发前阅读签名与打包。
也可以暂不登记 catalog,继续为单次命令显式传入 --source-root local/my-apps。想换圆屏或竖屏验证,参阅 Profile 与多设备模拟;日志、watch 和真机联调见日常开发与联调流程。
更多可运行应用与真实项目结构,见开源应用仓库 pxa-apps,包括商城、天气、街机游戏、诊断工具与 GameRender 示例。