android使用JNI进程守护service

最近公司一个应用需要让应用启动后不能被360和一些清理内存工具杀死,然后搜索一些相关的资料确定了下面的方法进行进程的守护:使用jni fork出一个子进程用select方法检测管道是否可读,主体进程打开新建管道的写端,当主进程死亡时 写端自动关闭,select检测退出,然后启动service。


注意:这个方法在android5.0以上系统和部分小米机型不行,因为5.0以上的系统killbackgroundprocesses会杀死所有和当前被杀死APK的USERID一样的进程,由于守护进程的所有者和apk的USERID是一样的,所以会被同时杀死,导致进程守护失败。我试过用setuid去修改userid但是没有root权限是不可行的,如果有root权限就能将子进程的userid改成root,从而可以完美的实现守护的功能。


下面附上详细的实现过程:


  1. 需要从java端传入app的数据路径用于创建管道,进行进程监听

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值