功耗和温升通常是Android系统的硬伤,尤其是结构空间有限的Android系统设备,比如用Android系统开发的手表设备。结构有限意味着能放的电池容量不会很大,导致待机时间变得特别短。
而且通常这种手表设备的在原始Android系统上,功耗比较正常,但内置一些功能应用后,功耗变得很大,待机时间特别短。下面是功耗分析的一般步骤:
遇到待机功耗偏高问题,分析步骤如下:
1.确定飞行模式下低电流是否正常?
正常情况飞行模式下待机电流在3-5mA;
不正常:给硬件和驱动分析解决;
2.若飞行模式正常,开始确认原生Launcher3的软件版本是否正常?(去掉一切客户预置的apk)
正常情况下Launcher3软件版本
4G模式待机电流10-13mA
2G/3G模式待机电流7-9mA
需要注意的是信号不好时会影响这个范围值;
若不正常:抓取mtklog分析;
3.若Launcher3软件正常,加上客户预置的WatchLauncher等apk后电流不正常?
抓取mtklog分析;
4.功耗异常mtklog分析方法:
一般应用层的功耗问题有以下种情况
一是某个应用持有唤醒锁未释放;
二是后台有网络访问行为发生;
三是定位调用GPS;
四是蓝牙WIFI搜索或扫描
五其他Sensor在后台持续工作如心率传感器。
4.1 首先确认是否正常待机
要确认CPU是否正常睡眠进入待机,需要查看PowerManagerService是否释放了所有持有的唤醒锁,如下:
查看sys_log
Line 3115: 01-01 00:05:14.731848 973 1003 D PowerManagerService: acquireWakeLockInternal: lock=256728484, flags=0x3000001a, tag="key_u_wake_lock", ws=null, uid=1000, pid=4287
Line 3137: 01-01 00:05:14.753272 973 1003 D PowerManagerNotifier: onWakeLockAcquired: flags=805306394, tag="key_u_wake_lock", packageName=android.fise.com.fiseassitant, ownerUid=1000, ownerPid=4287, workSource=null
Line 4344: 01-01 00:05:24.765232 973 2238 D PowerManagerService: releaseWakeLockInternal: lock=256728484 [key_u_wake_lock], flags=0x0, total_time=10033ms
Line 4345: 01-01 00:05:24.765673 973 2238 D PowerManagerNotifier: onWakeLockReleased: flags=805306394, tag="key_u_wake_lock", packageName=android.fise.com.fiseassitant, ownerUid=1000, ownerPid=4287, workSource=null