2025年处理MTK中DuraSpeed(快霸)引起的app被莫名其妙kill掉

处理MTK中DuraSpeed(快霸)引起的app被莫名其妙kill掉一 问题描述 之前在 MTK 源码中 添加了的自定义的 launcher 后 发现其经常会被莫名其妙 kill 掉 根据错误日志找到如下描述 DuraSpeed Add com my test to the suppress list the suppress list com android

大家好,我是讯享网,很高兴认识大家。
一、问题描述

之前在MTK源码中,添加了的自定义的launcher后,发现其经常会被莫名其妙kill掉,根据错误日志找到如下描述:

DuraSpeed: Add com.my.test to the suppress list, the suppress list = [com.android.settings, com.android.calendar, com.my.launcher, com.my.test] 
讯享网

查了下资料,发现是因为MTK内置了一套自己的进程管理软DuraSpeed(快霸)。该软件会在后台限制"白名单"之外的进程,从而提高前台进程的性能。

简单流程就是,将启动的app加入监听队列中,当LMKD将触发会去遍历进程,如资源超过了duraspeed的设定规则,会触发onPoorHealth,去kill掉得分低的进程。或者onScreenOff后五分钟,也会forceStopPackage掉app。


二、解决步骤
方式一、关闭快霸
讯享网/ 在device/along/xxxx/ProjectConfig.mk中修改 / //MTK_DURASPEED_DEFAULT_ON = yes //MTK_DURASPEED_SUPPORT = yes MTK_DURASPEED_DEFAULT_ON = no MTK_DURASPEED_SUPPORT = no 
方式二、加入白名单
  • 以xml形式(我这套源码中没有发现此文件):
\frameworks\base\core\java\com\mediatek\runningbooster\platform_list.txt 
  • 以代码形式:
讯享网/在vendor/mediatek/proprietary/frameworks/base/services/core/java/com/mediatek/server/am/AmsExtImpl中修改/ public AmsExtImpl() { 
    ... ... if (isDuraSpeedSupport) { 
    String className1 = "com.mediatek.duraspeed.manager.DuraSpeedService"; String className2 = "com.mediatek.duraspeed.suppress.SuppressAction"; String classPackage = "/system/framework/duraspeed.jar"; Class<?> clazz = null; try { 
    sClassLoader = new PathClassLoader(classPackage, AmsExtImpl.class.getClassLoader()); clazz = Class.forName(className1, false, sClassLoader); mDuraSpeedService = (IDuraSpeedNative) clazz.getConstructor().newInstance(); clazz = Class.forName(className2, false, sClassLoader); mSuppressAction = (ISuppressAction) clazz.getConstructor().newInstance(); } catch (Exception e) { 
    Slog.e("AmsExtImpl", e.toString()); } //add 过滤应用 begin  try { 
    Method method= mDuraSpeedService.getClass().getMethod("getPlatformWhitelist", null); //获取白名单列表 Object obj = method.invoke(mDuraSpeedService); if(obj != null && obj instanceof List) { 
    List<String> list = (List<String>) obj; //加入自己的过滤app list.add("com.my.launcher"); //更新白名单 method = mDuraSpeedService.getClass().getMethod("setAppWhitelist", List.class); method.invoke(mDuraSpeedService, list); } }catch (Exception e){ 
    Slog.e("AmsExtImpl add app to whitelist ", e.toString()); } } //add 过滤应用 end ... ... } 

PS:duraspeed的核心功能是以jar包导入的,具体可查看vendor/mediatek/proprietary/frameworks/opt/duraspeed_lib下的jar包。


三、参考

参考一、 参考二

小讯
上一篇 2025-03-14 09:54
下一篇 2025-02-13 14:30

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/17917.html