跳到主要内容

应用管理模块

应用管理模块是 ElenixOS 的核心组件之一,负责应用的安装、卸载、管理和运行。该模块提供了一套完整的应用生命周期管理机制,支持应用的安装、卸载、列表管理等功能。

核心功能​

应用安装与卸载​

应用管理模块支持通过 eos_app_install 函数安装应用,通过 eos_app_uninstall 函数卸载应用。安装过程会解析应用包(.eapk文件),验证应用信息,并将应用文件部署到指定目录。

应用列表管理​

应用列表管理功能允许获取已安装应用的数量、根据索引获取应用ID、判断应用是否存在等操作。应用列表会持久化存储,确保系统重启后应用列表保持一致。

应用排序​

通过 eos_app_order_move 函数,可以调整应用在列表中的位置,实现应用排序功能。排序结果会保存到配置文件中,确保下次启动时保持排序状态。

应用包结构​

ElenixOS 的应用包(.eapk文件)包含以下关键文件:

  • manifest.json:应用配置文件,包含应用ID、名称、版本、类型等信息
  • main.js:应用主脚本文件,包含应用的界面和逻辑
  • icon.bin:应用图标文件

应用生命周期​

  1. 安装:通过 eos_app_install 安装应用包
  2. 初始化:系统启动时通过 eos_app_init 初始化应用系统
  3. 运行:通过脚本引擎运行应用
  4. 卸载:通过 eos_app_uninstall 卸载应用

实现细节​

应用管理模块的核心实现包括:

  1. 应用包解析:解析 .eapk 文件,提取应用信息和文件
  2. 应用列表管理:维护应用列表,支持增删改查操作
  3. 应用目录管理:管理应用的安装目录和数据目录
  4. 应用排序:支持应用列表的排序和持久化

该模块与文件系统模块、脚本引擎模块紧密配合,为 ElenixOS 提供完整的应用管理功能。

当前运行时生命周期​

应用管理不直接拥有 JavaScript Realm。启动应用时,应用框架创建 App Activity,再由 SPM 启动脚本程序并将 View 绑定到 Activity。停止应用时,必须同时处理应用目录、程序记录、Activity 子栈和 Recent Apps 条目。

操作ActivitySPM 程序SNI 资源
启动创建并进入ACTIVE建立并可回调
暂停保留并停放SUSPENDED保留但暂停
恢复重新附加ACTIVE按策略后可回调
关闭/驱逐销毁STOPPING → TERMINATED按 teardown 释放

应用 ID 是所有运行时查找的稳定键。标题、列表位置和卡片地址都可能变化,不能用于恢复或卸载匹配。

应用安装与运行边界​

应用安装、卸载、列表查询和排序接口只面向应用包与应用列表,不负责创建 Activity 或执行脚本。调用方应检查操作结果;安装失败时不能把目录或列表当作已更新。具体接口由自动生成的 API 参考提供。

Recent Apps​

Recent Apps 使用包 ID 维护挂起条目。条目包含 App Activity、保存的子栈深度、最近使用时间、估算内存、恢复快照和展示缩略图。长按数字表冠进入切换器,应用切换时默认走挂起路径;用户关闭、应用卸载、数量或内存限制触发时才走停止和驱逐路径。

挂起应用仍占用内存,应用不能在 on_pause 中释放恢复必需的状态。需要释放硬件或外部订阅时,应提供可重复执行的暂停/恢复逻辑。