接到一个集成功能的需求,然后看了一下是由上层应用 + linux进程实现的功能,需要增加开机自动启动linux进程,没弄过有点懵。
这个不怎么正确,仅供参考,在权限那块需要更改,放到system下
环境
- android 9.0
- mtk 平台
实现思路
因为集成的功能只是demo状态,对应的功能提供公司只提供的是三个apk,5个动态库(*.so),一个linux可执行程序和一个可执行程序的配置文件。
在linux可执行程序执行之前,这个功能还需要设置一个环境变量,尝试了几种方式,改变文件放置位置、权限,但是最终还是失败告终。有点沮丧了,重新分析一次,决定要用shell实现设置环境变量,接着执行linux可执行程序,最终是这种方式实现了。
实现
1. 编写shell
通过shell脚本实现设置环境变量,再启动目标linux进程
shell文件/system/bin/acr/startacr.sh
#!/system/bin/sh
#因为这个linux可执行程序需要在可写目录执行,需要在对应目录写入记录文件,所以这里切换到可写的data目录
cd /data/
#因为需要,先设置环境变量
export LD_LIBRARY_PATH=/mnt/vendor/linux_rootfs/lib:/system/bin/acr
#执行linux程序
/system/bin/acr/alacr