- zygote :预加载类和资源。加载过多会影响开机时间。
- 查看
/sdcard/mtklog/bootprof文件。 - 减少预加载的类和资源,确保没有冗余的资源图片。
- 查看
- 开机动画进程 :bootanimation 或 mtkbootanimation,走 android 流程比 movie 流程占用内存资源少,开机速度快。
- 开机动画分两种情况:
- 播放 mp3 时,mp3 文件不能过长,最好不要超过 system_server 启动时间。
- 不播放 mp3 时,不会影响开机时间。
- 开机动画分两种情况:
- SystemServer.java :系统服务优化,不需要的服务可以考虑阉割。
- 可以异步加载或阉割掉 DropBoxManagerService 和调试相关的部分。
- 排查其他 Service 是否可以去除。
- system_server 特定服务:非必要的服务可以放在 system_server 进程外启动。
- kernel init 时间长 :检查客户版本的 init.rc 文件相对 Driveronly 版本是否有添加新的 init,这些是否都是必须添加的。
- 在 uartlog 中,查找关键字
------------``[ cut here ]------------,找到频繁打出的 call stack,排查客制化的点。
- 在 uartlog 中,查找关键字
- uartlog 中排查驱动设备初始化:检查驱动设备初始化是否完成或延时较长。
- dex2oat 导致的开机慢问题 :
- 刷机后第一次开机:在 sys_log.boot 中检查这两个 log 的时间,如果时间较长,打开 DEBUG_DEXOPT 的 log,进一步检查是哪个 apk 在进行 dex2oat。
- 非第一次开机 log:在 bootprof 文件中包含 PMS:performDexOpt,说明在编译时没有打开 dex2oat 选项。
- 若确认为 dex2oat 导致的问题,可以按照下面修改:
- 在
/device和/build目录下,修改下面的宏:- build/core/dex_preopt.mk
- WITH_DEXPREOPT := true
- WITH_DEXPREOPT_PIC := true
- DONT_DEXPREOPT_PREBUILTS := false(或注释掉)
- build/core/dex_preopt.mk
- 在
- persist APP 优化 :
- 尽量少把 APP 设置为 persist。
- 优化每个有源码的 persist APP,使其启动尽可能快。
- 精简 apk 包:
- 删除没有用到的图片、资源文件、jar 包文件和 so 文件。
- 预置自己的 APP,删除 drawable 包中重复的资源。
- 预置自己的 APP,删除多语言支持资源。
- apk 中只保留和系统适配的 so 文件。
- 在 Application 的 onCreate 方法中不要有耗时的代码段。
- 通过修改
--compiler-filter为 speed、quick、speed-profile 来提高 apk 的启动速度。
- 定频定核 :调高 CPU 频率会带来一定的功耗。
- 以 6763 的 O1 版本代码为例:
- 在
/system/core/rootdir/init.rc文件中添加以下代码:- on early-init
#mtk begin
write /proc/ppm/policy/ut_fix_core_num "4 4"
write /proc/ppm/policy/ut_fix_freq_idx "0 0"
#mtk end - on property:sys.boot_completed=1
bootchart stop
#mtk begin
write /proc/ppm/policy/ut_fix_core_num "-1 -1"
write /proc/ppm/policy/ut_fix_freq_idx "-1 -1"
#mtk end
- on early-init
- 在
- 以 6763 的 O1 版本代码为例:
- 客制化进程的启动速度:关注客制化进程的启动速度是否影响开机速度。
- PackageManagerService :
- 删除没有必要的 apk 包。
- 尝试将单线程 scan 分区里面的 apk 改为多线程异步 scan。
mtk android开机及重启速度优化
amlinsan2024-06-22 18:16
相关推荐
素师良码19 小时前
第5篇:显示驱动必备调试工具浅析维克兜率天20 小时前
【维克】配对交易的季节性:哪些品种适合长拿?墨天梦20 小时前
B06_XML控件布局与ViewBinding晚风叙码21 小时前
MySQL 表的操作:从建表到删表,一篇讲清楚事圆则缓1 天前
Android 性能优化常见工具与使用场景:从症状到证据的排查指南avi91111 天前
Unity 非后台,非自动构建,但统计报表 BuildReport ,构建自动化系统C#新鲜势力呀1 天前
PHP 定时任务系统实战:从 Cron 混乱执行到任务调度中心 + Redis队列 + 失败重试YF02111 天前
Android 16系统 如何修改 eth0 IP ?其实防守也摸鱼1 天前
渗透测试学习计划(全栈综合 · 零基础进阶)释厄6231 天前
BSD 简单真理循环论——简单真理 × 复杂循环=大一统