mapplauncherd 是 sailfishos 使⽤的⼀种应⽤启动加速的模块,类似于 Android 的 zygote。最初 mapplauncherd 是由 MeeGo 开发,后被各 Linux based 系统⽤于应⽤启动的模块。本⽂主要分析 mapplauncherd 的基本运⾏原理
源码参考
https://github.com/sailfishos/mapplauncherd.git
编译
安装依赖
sudo apt-get install libcap-dev libsystemd-dev libdbus-1-dev mkdir build
&& cd build
cmake ../
make
使用方法
# 安 装
cd build
mkdir testbin
DESTDIR=./testbin make install# 运 ⾏ daemon
LD_LIBRARY_PATH=./usr/local/lib ./usr/local/libexec/mapplauncherd/booster-generic# 再打开另⼀个 terminal 运⾏ invoker
./usr/local/bin/invoker -t generic /path/to/exec
源码分析
文件布局,关键文件解释
invoker ⽬录,⽤来将应⽤信息传递给 launcher daemon 的⼯具
launcherlib ⽬录,其中定义了核⼼的功能类
appdata 应⽤信息
booster 启动加速类
connection 连接管理
daemon 守护进程
框架简述
mapplauncherd 整体上分为两个部分
- daemon service,主控服务,其作⽤是整体管控应⽤的启动、结束、异常等流程
- invoker,应⽤启动⼯具,⽤来通知 daemon service 启动某个应⽤