Leoric骷髅王保活方案阅读

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

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

  • 监听SCREEN_ON/OFF广播
  • 启动一像素的透明Activity
  • 利用系统机制,启动空通知,提升fg-service
  • 利用厂商rom特性,后台播放无声音乐

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

  • 监听系统广播拉起进程,notificationListenerService
  • 第三方广播,如第三方推送sdk的广播
  • 双进程互相拉起,开两个service

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # Awesome Python [![Awesome](https://cdn.rawgit.com/sindr...
    emily_007阅读 2,228评论 0 3
  • youtube下载神器:https://github.com/rg3/youtube-dl 我擦咧 vim插件:h...
    smart_small阅读 9,049评论 2 47
  • youtube下载神器:https://github.com/rg3/youtube-dl 我擦咧 vim插件:h...
    北冥风尘阅读 500评论 0 4
  • youtube下载神器:https://github.com/rg3/youtube-dl 我擦咧 vim插件:h...
    zgcrichard阅读 4,925评论 0 0
  • 长安秋望 [唐代]杜牧 楼倚霜树外, 镜天无一毫。 南山与秋色, 气势两相高。
    修源正本阅读 176评论 0 1