流星雨模块框架文档中心

打包与交付

两种交付形式

形式产物适用
源码交付模块目录(含 manifest.json内部模块、开源模块、需要平台方审核源码的场景
加密交付单个 .jmod 文件商业分发、需要保护源码的场景

两种方式宿主都能直接加载,模块代码不需要为加密做任何改动。

生成 .jmod

bash
python tools/encrypt_module.py encrypt \
    --in modules/my_module \
    --out modules/my_module.jmod \
    --key-id dev-alice

什么会被打进 .jmod

内容是否打包
所有 .py 文件(含子目录)
ui/ 下的文件(含多页面 HTML)
assets/ 下的文件
manifest.json✅(作为元信息,不重复存)
__pycache__.pyc.pyo
其他目录(tests/docs/、临时文件)

结论:模块要用的东西只能放在 .pyui/assets/ 里,放别处加密交付后会丢。

交付前自检

bash
python tools/encrypt_module.py inspect --in modules/my_module.jmod

只输出元信息(模块名、版本、权限、打包时间、完整性校验值、包体大小),不会还原源码。可以放心把输出贴给平台方当审核材料。建议每次交付前跑一次。

多文件模块

text
my_module/
├── manifest.json
├── main.py             # 入口(entry 指定)
├── core/
│   ├── __init__.py
│   ├── parser.py       # 可被 main.py 导入
│   └── client.py
├── ui/
│   ├── index.html
│   └── app.js
└── assets/
    └── icon.png

多个 .py 打成一个包后,模块内 import core.parser 照常工作,不用额外配置。交付后用户机器上不会留下源码文件。

第三方 Python 依赖

安装到宿主

模块目录.jmod 文件放进宿主的 modules/ 目录,重启宿主即可。同名模块的源码目录与 .jmod 并存时,.jmod 为准

版本升级

  1. 递增 manifest.jsonversionx.y.z 语义化:修复补丁 z、新增功能 y、不兼容变更 x);
  2. 重新打包;
  3. 替换宿主 modules/ 下的产物并重启;
  4. 升级不清除持久化数据。数据结构变了自己做迁移(见 持久化存储);
  5. 保留上一版 .jmod,出问题直接替换回去。

交付物清单

模块目录或 .jmod,外加一段说明:功能、所需权限及理由、所需配置、外部依赖(adb 这类外部可执行文件不算模块的一部分,需宿主环境提供或单独约定)。