KeepAlive: Android活页夹ioctl高级进程保活技术
需积分: 34 88 浏览量
更新于2024-12-17
1
收藏 2.65MB ZIP 举报
资源摘要信息:"KeepAlive:使用活页夹ioctl Android高级保活对抗Android上的强制停止杀死过程"
1. KeepAlive技术原理:
KeepAlive技术通过利用JNI(Java Native Interface)和ioctl系统调用与Android底层通信,实现进程的复活。技术方案分为两个分支:
- master分支通过libbinder.so与ActivityManagerService通信,实现进程复活。
- ioctl分支使用ioctl与Binder驱动通信,达到相同目的。
2. 实现方式:
- 在JNI层面,通过注册的KeepAlive服务,应用能够在被系统杀死后,利用底层机制重新启动进程。
- KeepAlive的注册方式通常是在应用的attachBaseContext方法中进行。
3. 技术适用性:
- 从Android 4.4到Android 9.0的模拟器中表现良好,能够有效对抗系统的强制停止进程机制。
- 在真实的设备上,尤其是经过深度定制的系统(如MIUI)上,保活成功率无法保证。
- 对于自研的轻量级定制Android系统,KeepAlive提供了系统应用保活的优势,具体表现在资源占用小,用户无感知,成功率高。
4. 应用场景建议:
- 由于存在被定制系统封杀的风险,不建议在面向最终消费者(C端产品)的应用中使用KeepAlive技术。
- 对于开发者而言,可以将KeepAlive作为一个学习Binder框架和进程管理的案例,来深入了解Android底层通信机制。
5. 关键技术点解析:
- JNI:Java Native Interface,提供了一种Java代码与本地代码(如C/C++)交互的方式。在KeepAlive技术中,JNI被用来从Java层调用本地库实现进程复活。
- ioctl系统调用:是Linux内核提供的一种输入输出控制方法,允许用户空间的进程向内核发起请求,以控制设备或更改内核参数。在KeepAlive的ioctl分支中,它被用来直接与Binder驱动交互,绕过ActivityManagerService的限制,提高进程复活的成功率。
- Binder框架:是Android的一种跨进程通信(IPC)机制,用于不同应用或同一应用的不同部分之间进行通信。KeepAlive利用这一框架来实现进程通信。
- ActivityManagerService:是Android系统中负责管理系统上所有应用程序的组件,包括进程的创建、任务的切换等。KeepAlive技术尝试通过与该服务的通信来复活进程。
- NDK:Native Development Kit,允许开发者使用C或C++代码开发Android应用的部分,可以提高性能,减少应用体积。在KeepAlive中,NDK被用来实现底层进程复活逻辑。
6. 资源占用与用户体验:
- KeepAlive的设计理念是在不增加太多资源消耗的前提下,提高进程复活率,同时保持用户无感知。
- 成功的进程复活对于需要长时间后台运行的服务(如音乐播放、后台任务处理)等场景非常关键。
7. 风险与限制:
- 在非标准的Android系统上(如MIUI、EMUI等),系统可能已经对类似保活策略进行了限制,导致KeepAlive方案失效。
- 过度使用保活技术可能会对系统的整体稳定性造成影响,引起其他应用或系统的性能问题。
8. 学习与探索:
- KeepAlive项目可以作为开发者学习和探索Android底层通信机制、Binder框架以及系统安全限制的一个实践案例,有助于深入理解Android操作系统的工作原理。
1979 浏览量
246 浏览量
2021-05-07 上传
645 浏览量
2021-05-14 上传
2021-06-03 上传
2021-07-14 上传
293 浏览量
十月飘零
- 粉丝: 38
- 资源: 4672
最新资源
- Spring Live (160页)
- iBatis Developer's Guide中文版
- Spring iBatis Learning Notes
- Verilog Hardware Description Language
- 《linux完全命令手册》(Linux Complete Command Reference)
- 数控机床RS232通讯接口及参数介绍
- 多型与虚拟.pdf 中文版
- WindowsCE内核简介
- 经典C源程序100例
- 初学者c51学习教程
- GoF 23种设计模式解析附C++实现源码.pdf
- c++编程手册,题目
- Windows 2000 安全配置
- 中南大学微机原理课件
- UML参考手册 UML Reference
- jsp跳转的五种方式