Leoric骷髅王保活方案阅读

2020-03-18  本文已影响0人  普通的程序员

很久之前整理过一套完整的Android 保活方案
主要集中在

1.提升进程优先级(oom_adj),降低被LMK机制杀死的概率
典型的方案有

2.进程被杀后,重新拉起进程
方案有

3.比较文明的请求用户给电量白名单。

这些方案已经写在
Android保活/拉活(一)教程检索
https://www.jianshu.com/p/b51e2dbf2311

Android保活/拉活(二)代码实现
https://www.jianshu.com/p/ce60fcedd3d6

现在遇到的问题是,force-stop,一锅端。
force-stop机制,详细说明了为什么这个AMS提供的功能, 可以做到一锅端,甚至株连。
http://gityuan.com/2016/10/22/force-stop/

维数大老提供了一个新的方案,要杀无所谓,只要能迅速孵化zygote一个新进程就行。
https://github.com/tiann/Leoric

库里提供了一篇解析腾讯Tim利用 监听文件锁的方式,6个进程相互拉活的文章。
说实话,我没看太懂,但是不妨碍先去了解。
http://gityuan.com/2018/02/24/process-keep-forever/

只需要先知道两个tim的两个核心思路
1.监听文件锁
2.产生4个进程(进程关系见图)


image.png

weishu的开源方案也有写文章,如果说太长不看,也没问题
http://weishu.me/2020/01/16/a-keep-alive-method-on-android/

重点:


image.png

有助于理解上一张图所说的进程关系。
骷髅王的核心

  1. 使用native 层给 ams 发送 binder 消息拉起进程,5ms内快速创建进程
  2. 进程间感知死亡

这里jni层,我就看不太懂了。
https://github.com/tiann/Leoric/blob/master/library/jni/leoric.c

https://www.jianshu.com/p/f75d4fa71686

上一篇下一篇

猜你喜欢

热点阅读