跳到主要内容

应用管理模块

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

目录结构

├── src/core/app/
│ ├── eos_app.c # 应用管理核心实现
│ ├── eos_app.h # 应用管理接口定义
│ ├── eos_app_list.c # 应用列表管理实现
│ └── eos_app_list.h # 应用列表管理接口定义

核心功能

应用安装与卸载

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

应用列表管理

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

应用排序

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

关键接口

应用安装接口

eos_result_t eos_app_install(const char *eapk_path);
  • 参数eapk_path - 应用包路径
  • 返回值:安装结果,成功返回 EOS_OK,失败返回错误码

应用卸载接口

eos_result_t eos_app_uninstall(const char *app_id);
  • 参数app_id - 应用ID
  • 返回值:卸载结果,成功返回 EOS_OK,失败返回错误码

应用列表操作接口

uint32_t eos_app_get_installed(void);
const char* eos_app_list_get_id(size_t index);
bool eos_app_list_contains(const char* app_id);
const char *eos_app_list_get_existing_id(const char *id);
  • eos_app_get_installed:获取已安装应用数量
  • eos_app_list_get_id:根据索引获取应用ID
  • eos_app_list_contains:判断应用是否存在
  • eos_app_list_get_existing_id:获取列表中已存在的应用ID

应用排序接口

eos_result_t eos_app_order_move(const char *app_id, size_t new_index);
  • 参数
    • app_id - 目标应用ID
    • new_index - 新的索引位置
  • 返回值:操作结果,成功返回 EOS_OK,失败返回错误码

应用包结构

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

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

应用生命周期

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

使用示例

安装应用

eos_result_t result = eos_app_install("/path/to/app.eapk");
if (result == EOS_OK) {
// 安装成功
} else {
// 安装失败
}

卸载应用

eos_result_t result = eos_app_uninstall("com.example.app");
if (result == EOS_OK) {
// 卸载成功
} else {
// 卸载失败
}

获取应用列表

uint32_t app_count = eos_app_get_installed();
for (size_t i = 0; i < app_count; i++) {
const char* app_id = eos_app_list_get_id(i);
// 处理应用ID
}

实现细节

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

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

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