Sysdiagnose是苹果的日志系统,记录电池、第三方APP、各种系统功能和应用的所有运行情况。
实操
第一步 证书下载
- 去苹果开发者网站找到
Battery Lift
下载profile(需要登录开发者账号)
- 下载完成后通过隔空投送发到测试手机上安装。
第二步 进行App测试
- 耗电信息 一小时更新一次数据(测试时间一小时以上)
第三步 测试报告获取
iOS: 设置 > 隐私 > 分析 > 分析数据 > (定位sysdiagnose文件,使用隔空投送发送到macOS上面).
手机连上电脑,通过 iTunes 同步到电脑上, 打开~/Library/Logs/CrashReporter/MobileDevice/[Your_Device_Name]/
找到 powerlog_xxxx.PLSQL 文件 用Navicat 打开
第四步 测试报告信息熟悉
打开powerlog_xxxx.PLSQL 文件里面有几百张表,所有的电量数据都在里面 主要的几张表的意思如下
PLBatteryAgent_EventBackward_Battery:整台机器的电量数据,包含电流、电压、温度等,每20秒左右一条数据
PLBatteryAgent_EventBackward_BatteryUI:电量百分比数据,大于每300秒一条数据
PLIOReportAgent_EventBackward_EneryModel: 整机的详细电量数据。包含 CPU\GPU\DRAM\ISP 等关键信息。每半小时到一小时一条数据。
PLAccountingOperator_EventNone_Nodes:App结点信息,每个APP对应唯一的结点号。用来确定手机内具体哪个 App。
PLApplicationAgent_EventForward_Application:App运行信息,记录每个App在哪个时间段以什么状态运行
PLAppTimeService_Aggregate_AppRunTime:APP的运行时长统计,每个运行过的APP,一小时一条数据
-
PLAccountingOperator_Aggregate_RootNodeEnergy: APP的电量详细数据,记录每个APP 的CPU\GPU\DRAM\ISP 等的耗电信息。一小时更新一次数据。
- 硬件信息ID
RootNodeID:6 isp
RootNodeID:52 apsocbase
RootNodeID:10 display
RootNodeID:11 wifi data
RootNodeID:8 GPU
RootNodeID:4 venc
RootNodeID:2 cpu
RootNodeID:7 restofsoc
第五步 测试报告信息提取
-
先去
PLAccountingOperator_EventNone_Nodes
通过BundleID找到我们要测试的App ,其实可以发现,表中对应的Name字段就是BundleID,找到
对应的ID为30120。
得到每个App的唯一标识后,我们就可以去
PLAccountingOperator_Aggregate_RootNodeEnergy
表里看电量消耗数据了表中的
Energy
就是对应消耗的电量了,这里的单位在iOS9是mAh,iOS9及以上应该是 1/1000 mAh。
我们可以写sql语句:
// 查询 这个时间之后所以的消耗 NodeID 30120 消耗多少电量
SELECT SUM(Energy) FROM PLAccountingOperator_Aggregate_RootNodeEnergy WHERE NodeID = 30120 AND timestamp > 1642129202
- 如果想知道运行这个App这段时间内的温度,可以
PLBatteryAgent_EventBackward_Battery
表中获取,但是因为该表的数据是整个机器的,所以我们需要根据对应的时间节点来观察数据:
查询程序运行时候的温度
SELECT MAX(Temperature),MIN(Temperature),AVG(Temperature) FROM PLBatteryAgent_EventBackward_Battery WHERE timestamp > 1642129202