Android mtk开关机、重启时间优化

本文详细探讨了Android设备开关机速度优化的方法,包括Zygote预加载优化、开机动画进程的选择、kernel init时间分析、apk的dex2oat编译优化以及系统服务启动控制等。优化措施涉及减少开机动画图片数量、调整预加载策略、减少不必要的服务启动和优化apk资源,以达到提升开机和重启速度的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[DESCRIPTION]

开关机、重启时间优化:

开机性能优化:是用功能和其它因素多方面平衡的结果,片面追求单方面的性能没有太大意义;
有些产品设计开机动画非常酷炫,动画图片过多、高帧率会影响开机速度,这时就需要看是开机速度优先还是体验优先;

[SOLUTION]

1.zygote,预加载class、resources;加载的多了,会影响开机时间;
/sdcard/mtklog/bootprof
12450.516490 : 860-system_server : Android:PMS_READY
13136.536031 : 506-main : Zygote:Preload 4715 classes in 495ms
13263.841416 : 506-main : Zygote:Preload 64 obtain resources in 42ms
13271.525031 : 506-main : Zygote:Preload 41 resources in 6ms
13639.574263 : 860-system_server : AMS:systemReady
13645.305493 : 860-system_server : AMS:AMS_READY

/frameworks/base/config/preloaded-classes,因为少加载类会影响APP启动速度,开机过程会涉及到APP启动,此地没有优化空间;

/frameworks/base/core/res/会被打包成:framework-res.apk,确保没有冗余的资源图片,可以挨个检查图片、XML是否在系统中有用到;

2.开机动画进程bootanimation或者mtkbootanimation,走android比走movie流程占用内存资源要少些,开机会快些,测试大概快上百毫秒;
开机动画分两种情况:
(1)播放mp3,需要等到mp3播放完动画才能退出,开机才能完成;所以mp3文件不能过长,最好不要超过system_server启动时间;
system_server启动时间查看如下:
/sdcard/mtklog/bootprof
10367.726870 : 860-system_server : Android:SysServerInit_START
……
14137.026648 : 860-system_server : Android:SysServerInit_END

(2)不播放mp3,不会影响开机时间;

bootanimation.zip中图片越少越好;

不建议更改,修改风险较大,除非对开机速度有特别严苛的要求才修改:
/frameworks/base/services/java/com/android/server/SystemServer.java

比如:DropBoxManagerService和调试相关,可以异步加载或者直接阉割掉:
比如:PinnerService没有配置相关则可以去除;
其他Service可以挨个排查;

system_server特定的服务导致开机变慢,比如:指纹系统;
非必要的服务可以放在system_server进程外启动;

5.kernel init 时间长,需要先看一下客户的版本上init.rc文件相对Driveronly版本是否有添加新的init,这些是否都是必须添加的。
在uartlog 中,需要查关键字-----[ cut here ]------------ ,找到在kernel init 过程中,频繁打出的这些call stack,看这些call stack,排查一下贵司所客制化的点。

6.在uartlog中排查驱动设备初始化是否有完成或延时较长

7.因为对apk进行dex2oat导致的开机慢问题确认
7.1、如果是刷机后第一次:
可以在sys_log.boot里面check 这两个log的时间,如果时间较长的话,就会有相关的dex的耗时,然后可以打开DEBUG_DEXOPT的log,进一步check是哪个apk在进行dex2oat

3364 01-01 00:01:17.923181 1008 1008 I SystemServer: UpdatePackagesIfNeeded

4825 01-01 00:01:28.833169 1008 1008 I SystemServer: PerformFstrimIfNeeded
在这里插入图片描述
7.2、非第一次开机log:
bootprof文件中包含PMS:performDexOpt,说明在编译时没有打开dex2oat选项;
/sdcard/mtklog/mobile/…/bootprof
49643.453733 : 777-system_server : Android:PMS_READY
50662.038197 : 777-system_server : PMS:performDexOpt:com.mediatek.ims
50958.422582 : 434-main : Zygote:Preload 4715 classes in 957ms
51027.330659 : 777-system_server : PMS:performDexOpt:com.google.android.ext.services
51175.849890 : 434-main : Zygote:Preload 64 obtain resources in 89ms
51191.674429 : 434-main : Zygote:Preload 41 resources in 15ms
52011.623200 : 777-system_server : PMS:performDexOpt:com.android.providers.telephony
53090.475818 : 777-system_server : PMS:performDexOpt:com.valmul.defcontainer
53500.331742 : 777-system_server : PMS:performDexOpt:com.google.android.ext.shared
53759.386897 : 777-system_server : PMS:performDexOpt:com.figoglobal.gpsinitialization
55253.543054 : 777-system_server : PMS:performDexOpt:com.android.mms.service<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值