mtk android开机及重启速度优化

  1. zygote :预加载类和资源。加载过多会影响开机时间。
    • 查看 /sdcard/mtklog/bootprof 文件。
    • 减少预加载的类和资源,确保没有冗余的资源图片。
  2. 开机动画进程 :bootanimation 或 mtkbootanimation,走 android 流程比 movie 流程占用内存资源少,开机速度快。
    • 开机动画分两种情况:
      • 播放 mp3 时,mp3 文件不能过长,最好不要超过 system_server 启动时间。
      • 不播放 mp3 时,不会影响开机时间。
  3. SystemServer.java :系统服务优化,不需要的服务可以考虑阉割。
    • 可以异步加载或阉割掉 DropBoxManagerService 和调试相关的部分。
    • 排查其他 Service 是否可以去除。
  4. system_server 特定服务:非必要的服务可以放在 system_server 进程外启动。
  5. kernel init 时间长 :检查客户版本的 init.rc 文件相对 Driveronly 版本是否有添加新的 init,这些是否都是必须添加的。
    • 在 uartlog 中,查找关键字 ------------``[ cut here ]------------,找到频繁打出的 call stack,排查客制化的点。
  6. uartlog 中排查驱动设备初始化:检查驱动设备初始化是否完成或延时较长。
  7. 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(或注释掉)
  8. persist APP 优化
    • 尽量少把 APP 设置为 persist。
    • 优化每个有源码的 persist APP,使其启动尽可能快。
    • 精简 apk 包:
      • 删除没有用到的图片、资源文件、jar 包文件和 so 文件。
      • 预置自己的 APP,删除 drawable 包中重复的资源。
      • 预置自己的 APP,删除多语言支持资源。
      • apk 中只保留和系统适配的 so 文件。
    • 在 Application 的 onCreate 方法中不要有耗时的代码段。
    • 通过修改 --compiler-filter 为 speed、quick、speed-profile 来提高 apk 的启动速度。
  9. 定频定核 :调高 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
  10. 客制化进程的启动速度:关注客制化进程的启动速度是否影响开机速度。
  11. PackageManagerService
    • 删除没有必要的 apk 包。
    • 尝试将单线程 scan 分区里面的 apk 改为多线程异步 scan。
相关推荐
00后程序员张27 分钟前
iOS App 混淆与加固对比 源码混淆与ipa文件混淆的区别、iOS代码保护与应用安全场景最佳实践
android·安全·ios·小程序·uni-app·iphone·webview
CrimsonHu30 分钟前
Android高性能音频:写一个云顶S10强音争霸混音器
android·音视频开发
灿烂阳光g8 小时前
domain_auto_trans,source_domain,untrusted_app
android·linux
低调小一10 小时前
Android传统开发 vs Android Compose vs HarmonyOS ArkUI 对照表
android·华为·harmonyos
雨白10 小时前
Java 多线程指南:从基础用法到线程安全
android·java
00后程序员张11 小时前
详细解析苹果iOS应用上架到App Store的完整步骤与指南
android·ios·小程序·https·uni-app·iphone·webview
程序员江同学12 小时前
ovCompose + AI 开发跨三端的 Now in Kotlin App
android·kotlin·harmonyos
2501_9151063212 小时前
Xcode 上传 ipa 全流程详解 App Store 上架流程、uni-app 生成 ipa 文件上传与审核指南
android·macos·ios·小程序·uni-app·iphone·xcode
消失的旧时光-194313 小时前
Kotlinx.serialization 使用讲解
android·数据结构·android jetpack