最近公司一个应用需要让应用启动后不能被360和一些清理内存工具杀死,然后搜索一些相关的资料确定了下面的方法进行进程的守护:使用jni fork出一个子进程用select方法检测管道是否可读,主体进程打开新建管道的写端,当主进程死亡时 写端自动关闭,select检测退出,然后启动service。
注意:这个方法在android5.0以上系统和部分小米机型不行,因为5.0以上的系统killbackgroundprocesses会杀死所有和当前被杀死APK的USERID一样的进程,由于守护进程的所有者和apk的USERID是一样的,所以会被同时杀死,导致进程守护失败。我试过用setuid去修改userid但是没有root权限是不可行的,如果有root权限就能将子进程的userid改成root,从而可以完美的实现守护的功能。
下面附上详细的实现过程:
需要从java端传入app
android使用JNI进程守护service
守护进程方案
最新推荐文章于 2025-09-06 09:35:20 发布

最低0.47元/天 解锁文章
924

被折叠的 条评论
为什么被折叠?



