Sysdiagnose:Sysdiagnose是苹果的日志系统,记录电池、第三方APP、各种系统功能和应用的所有运行情况,将Sysdiagnose导出并解压后,我们能在文件夹中找到名为powerlog_xxxxx.PLSQL的文件,用数据库可视化工具(本文使用SQLiteStudio)打开,其中详细记录了我们进行iOS耗电量测试的所需的数据。
备注:可前往苹果开发者网站登录开发者账号下载Battery Life的profile后重试。通过隔空投送把描述文件安装到测试手机上
一、用例执行
将手机设为固定亮度,电量最好保持在80%以上,断开电源。由于记录APP耗电量的数据1h统计一次,所以我们在某一小时内(如15:00-16:00)内对同个APP只能执行一项用例,例如:15:05-15:25执行APP1的用例,15:30-15:50执行APP2的用例,并在该小时其余时间段不能运行上述APP。为方便之后进行数据查找,可以记下执行用例开始和结束的时间戳。
二、数据截取
触发sysdiagnose诊断。同时按住按音量+和音量-和息屏(唤醒)键1至1.5秒并释放,会触发截图或息屏并有一个短促的振动,前往设置→隐私→分析与改进→分析数据,若同时出现类似如下三个文件则说明触发成功。
等待诊断数据收集完成(大约10min),前往设置→隐私→分析与改进→分析数据,查找对应时间点触发的系统诊断文件 。
将sysdiagnose文件解压,进入目录logs/powerlogs/,找到.PLSQL文件,即为我们所需要的记录电池信息的数据库文件,用SQLite可视化工具打开。如下:
三、数据分析
我们可以根据上面的表格,来分析耗电情况,比如:
- PLBatteryAgentEventBackwardBattery_UI 可以分析剩余电量曲线
- PLBatteryAgentEventBackwardBattery 可以分析整体耗电量和温度变化
- PLAccountingOperatorAggregateRootNodeEnergy 和 PLAccountingOperatorEventNoneNodes 两张表,可以得到某个 Bundle ID对应的 App 在各个硬件上的耗电情况。
下面是一些数据获取的SQL语句:
-
查看APP运行的时间timestamp
select ID,timestamp,datetime(timestamp, 'unixepoch', 'localtime')as time,BundleID from PLAppTimeService_Aggregate_AppRunTime where BundleID='XXX' order by timestamp
2. 查看APP的NodeID
select * from PLAccountingOperator_EventNone_Nodes where Name ='XXX'
3. 查看APP的电量测试
select ID,timestamp,datetime(timestamp, 'unixepoch','localtime')as time,Energy,NodeID,RootNodeID from PLAccountingOperator_Aggregate_RootNodeEnergy where NodeID=XXX order by time
4. 查看APP某个时间点的电量求和
select datetime(timestamp, 'unixepoch', 'localtime')as time,sum(Energy),NodeID from PLAccountingOperator_Aggregate_RootNodeEnergy where NodeID=XXX and timestamp='XXX'
四、RootNodeID硬件对照表