GYMonitor 1.0.0

GYMonitor 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布时间最新发布2016年9月

TowerKit维护。



GYMonitor 1.0.0

  • featuretower

GYMonitor是一个用于监控iOS app性能状况的代码库,目前包括FPS监控,当发现FPS过低时会自动生成堆栈,便于在开发过程中发现卡顿问题。

安装

  • GYMonitor整个文件夹拖动到现有的Xcode工程中。需要注意的是GYMonitor中包含CrashReporter.framework这个库。
  • 包含头文件:#import "GYMonitor.h"
  • dsymInfo文件夹复制到工程文件的同一目录,然后在工程文件中的Build Phases最后添加一个Run Script,脚本内容为python ${PROJECT_DIR}/dsymInfo/backup.py (Run Script)

使用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // normal code...

    [self startMonitor];

    return YES;
}

- (void)startMonitor {
    [GYMonitor sharedInstance].monitorFPS = YES;
    [GYMonitor sharedInstance].showDebugView = YES;
    [[GYMonitor sharedInstance] startMonitor];
}

- (void)stopMonitor {
    [GYMonitor sharedInstance].monitorFPS = NO;
    [GYMonitor sharedInstance].showDebugView = NO;
    [[GYMonitor sharedInstance] startMonitor];
}

运行效果

  • 在模拟器/真机(真机只能看到部分符号)

fps低 fps卡顿 模拟器上的堆栈

  • 在mac上反解

(反解堆栈菜单) (mac上反解结果)

原理

  • 通过`CADisplayLink`获取屏幕刷新频率,输出FPS的值
  • 在子线程开启定时器监控FPS的值
  • 当FPS的值过低时,通过`CrashReporter`获取全部线程的堆栈,保存为`$currentController.crash`文件
  • 编译项目成功后通过`dsymutil`产生dSYM文件然后保存,为了节省空间最多保存5个。还有为它们在所有目录添加Spotlight索引,反解堆栈时能让mac os自动找到它们
  • 在手机上可通过点击监控条,然后用AirDrop将crash文件传输到mac上,在mac使用`symbolicatecrash`反解堆栈,为了方便,我使用了`Automator`为右键点击*.crash文件时添加服务项`反解堆栈`,点击后会运行脚本去反解堆栈。