应用开发

PXA DEVELOPER GUIDE

打包、签名与版本

选择目标架构、维护发布者身份,并生成可验证的交付产物。

中文指南 · 4 分钟阅读 · 开发版

如果已经按 apps.toml 教程登记源码,本页构建命令中的 --source-root local/my-apps 可以省略。需要持续开发与日志收集时使用日常开发工作流。

选择制品目标

tools/app.sh build hello --target simulator --source-root local/my-apps
tools/app.sh build hello --target esp32s3 --source-root local/my-apps
tools/app.sh build hello --target esp32s31 --source-root local/my-apps
tools/app.sh build hello --target wasm --source-root local/my-apps
工具参数 制品目标 用途
simulator linux-x86_64 Linux 产品模拟器
esp32s3 esp32-s3 Xtensa ESP32-S3
esp32s31 esp32-s31 RISC-V32 ILP32F ESP32-S31
wasm 可移植 WASM 支持相应解释执行与服务的 Host

--target all 或逗号分隔目标可合并多架构包。--aot-only 省去默认 WASM 回退;不要为只支持 WASM 的组件误删其制品。每个 AOT 仍需匹配 Host 的 engine ABI。

生成自己的签名密钥

仓库自带开发签名夹具只用于测试。正式发布使用自己的 P-256 私钥,并保存安全备份:

mkdir -p local/keys
umask 077
openssl ecparam -name prime256v1 -genkey -noout -out local/keys/publisher-private.pem
openssl pkey -in local/keys/publisher-private.pem -pubout -outform DER \
  -out local/keys/publisher-public.der
export PXA_SIGNING_KEY="$PWD/local/keys/publisher-private.pem"
tools/app.sh build hello --target esp32s3 --source-root local/my-apps

以上创建密钥的命令只在首次执行;不要覆盖已有发布密钥。商城只需要公钥和签名证明,不上传私钥。更换密钥必须使用项目支持的签名 lineage 流程,不能把重新生成密钥当作普通更新。

维护版本与序号

在自己的 package.json 中同时维护面向用户的 version 和单调递增的 release_sequence:

{
  "version": "1.0.1",
  "release_sequence": 2
}

这是要合并进现有清单的片段,不能替代完整文件。首次发布可以用序号 1;发布后的下一版本必须使用更高序号。规范应用身份是发布者 lineage root 与 App ID 的组合。

产物和安装

默认输出目录是 local/app-output/<board>/。其中 pxa-hello/ 是签名 Package 目录,pxa-hello.pxa 是用于传输和商城上传的单文件容器,.provenance.json 是构建来源记录。

pxadb package install local/app-output/pai-touch/pxa-hello.pxa --port /dev/ttyACM0

安装器会验签、核对清单并通过事务提交。不要修改已经签名的包内容;修改后重新打包。覆盖安装可加 --yes,但应先确认目标设备和应用身份。

多平台分别交付

为避免设备下载其他架构,使用相同源码、版本、sequence 和密钥分别输出:

tools/app.sh build hello --source-root local/my-apps --target esp32s3 --output local/app-output/s3
tools/app.sh build hello --source-root local/my-apps --target esp32s31 --output local/app-output/s31

把两个 .pxa 上传到同一个待审版本。不同输出目录防止互相覆盖,具体合并规则见商城上架。

参考实现与资料tools/app.sh ↗pxa/package_app.sh ↗package/build_package_manifest.py ↗

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