应用管理模块
应用管理模块是 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:根据索引获取应用IDeos_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- 目标应用IDnew_index- 新的索引位置
- 返回值:操作结果,成功返回
EOS_OK,失败返回错误码
应用包结构
ElenixOS 的应用包(.eapk文件)包含以下关键文件:
- manifest.json:应用配置文件,包含应用ID、名称、版本、类型等信息
- main.js:应用主脚本文件,包含应用的界面和逻辑
- icon.bin:应用图标文件
应用生命周期
- 安装:通过
eos_app_install安装应用包 - 初始化:系统启动时通过
eos_app_init初始化应用系统 - 运行:通过脚本引擎运行应用
- 卸载:通过
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
}
实现细节
应用管理模块的核心实现包括:
- 应用包解析:解析 .eapk 文件,提取应用信息和文件
- 应用列表管理:维护应用列表,支持增删改查操作
- 应用目录管理:管理应用的安装目录和数据目录
- 应用排序:支持应用列表的排序和持久化
该模块与文件系统模块、脚本引擎模块紧密配合,为 ElenixOS 提供完整的应用管理功能。