应用管理模块
应用管理模块是 ElenixOS 的核心组件之一,负责应用的安装、卸载、管理和运行。该模块提供了一套完整的应用生命周期管理机制,支持应用的安装、卸载、列表管理等功能。
核心功能
应用安装与卸载
应用管理模块支持通过 eos_app_install 函数安装应用,通过 eos_app_uninstall 函数卸载应用。安装过程会解析应用包(.eapk文件),验证应用信息,并将应用文件部署到指定目录。
应用列表管理
应用列表管理功能允许获取已安装应用的数量、根据索引获取应用ID、判断应用是否存在等操作。应用列表会持久化存储,确保系统重启后应用列表保持一致。
应用排序
通过 eos_app_order_move 函数,可以调整应用在列表中的位置,实现应用排序功能。排序结果会保存到配置文件中,确保下次启动时保持排序状态。
应用包结构
ElenixOS 的应用包(.eapk文件)包含以下关键文件:
- manifest.json:应用配置文件,包含应用ID、名称、版本、类型等信息
- main.js:应用主脚本文件,包含应用的界面和逻辑
- icon.bin:应用图标文件
应用生命周期
- 安装:通过
eos_app_install安装应用包 - 初始化:系统启动时通过
eos_app_init初始化应用系统 - 运行:通过脚本引擎运行应用
- 卸载:通过
eos_app_uninstall卸载应用
实现细节
应用管理模块的核心实现包括:
- 应用包解析:解析 .eapk 文件,提取应用信息和文件
- 应用列表管理:维护应用列表,支持增删改查操作
- 应用目录管理:管理应用的安装目录和数据目录
- 应用排序:支持应用列表的排序和持久化
该模块与文件系统模块、脚本引擎模块紧密配合,为 ElenixOS 提供完整的应用管理功能。
当前运行时生命周期
应用管理不直接拥有 JavaScript Realm。启动应用时,应用框架创建 App Activity,再由 SPM 启动脚本程序并将 View 绑定到 Activity。停止应用时,必须同时处理应用目录、程序记录、Activity 子栈和 Recent Apps 条目。
| 操作 | Activity | SPM 程序 | SNI 资源 |
|---|---|---|---|
| 启动 | 创建并进入 | ACTIVE | 建立并可回调 |
| 暂停 | 保留并停放 | SUSPENDED | 保留但暂停 |
| 恢复 | 重新附加 | ACTIVE | 按策略后可回调 |
| 关闭/驱逐 | 销毁 | STOPPING → TERMINATED | 按 teardown 释放 |
应用 ID 是所有运行时查找的稳定键。标题、列表位置和卡片地址都可能变化,不能用于恢复或卸载匹配。
应用安装与运行边界
应用安装、卸载、列表查询和排序接口只面向应用包与应用列表,不负责创建 Activity 或执行脚本。调用方应检查操作结果;安装失败时不能把目录或列表当作已更新。具体接口由自动生成的 API 参考提供。
Recent Apps
Recent Apps 使用包 ID 维护挂起条目。条目包含 App Activity、保存的子栈深度、最近使用时间、估算内存、恢复快照和展示缩略图。长按数字表冠进入切换器,应用切换时默认走挂起路径;用户关闭、应用卸载、数量或内存限制触发时才走停止和驱逐路径。
挂起应用仍占用内存,应用不能在 on_pause 中释放恢复必需的状态。需要释放硬件或外部订阅时,应提供可重复执行的暂停/恢复逻辑。