美文网首页第三方bug统计崩溃以及其他新的东西
iOS统计线上异常崩溃日志之Bugly和友盟统计使用笔记

iOS统计线上异常崩溃日志之Bugly和友盟统计使用笔记

作者: Tomous | 来源:发表于2018-08-14 16:54 被阅读260次
    好记性不如烂笔头,之前一直使用的友盟来统计APP线上崩溃日志,今天研究了腾讯下的Bugly,发现比友盟更简单(单纯的收集崩溃日志),之所以这么说,个人觉得有两点:1、继承简单;2、定位到具体代码简单(可能是因为友盟涉及到的种类多吧,然后就显得复杂了),今天就抽空做一下笔记,分析比较一下两者的差别,以便以后用到就不用去翻官方文档了。

    Bugly

    先来介绍Bugly的使用
    1、先去官方注册账号,添加你的产品拿到App IDApp Key

    1.png

    2、集成直接pod

    pod 'Bugly'
    

    AppDelegate.m

    #import <Bugly/Bugly.h>
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
         [Bugly startWithAppId:@"上面拿到的App ID"];
    }
    

    好了,到这里就搞定了。你可以在你的项目中写一个数组越界的bug,例如,我在ViewController中添加了一个button,点击的时候就会出现崩溃,

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
        btn.backgroundColor = [UIColor redColor];
        [btn addTarget:self action:@selector(btnDidClick) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:btn];
    }
    
    -(void)btnDidClick
    {
        NSArray *arr = @[@"1",@"2",@"3"];
        NSLog(@"---%@",arr[3]);
    }
    

    大约不到一分钟我们可以在Bugly的后台看到崩溃信息,(这里在Bugly显示时间很短,可以说是即时的,这个要和友盟快很多。)


    2.png
    注:刚开始的时候你应该不会显示到具体的代码(红框部分)。

    接下来我们就来看怎么定位到具体的代码。官方介绍两种方法配置,这里我采用的是自动配置,涂省事😀

    1、先去下载自动配置符号表工具包

    2、然后把文件中dSYMUpload.sh中的三个参数修改一下配置,如图

    3.png

    3、打开你的项目,

    4.png

    4、将dSYMUpload.sh中的内容复制到下图中对应的位置里面

    image.png

    注意,如果你不想要的都设置为0:

    UPLOAD_DSYM_ONLY=1
    #
    # # 脚本默认配置的版本格式为CFBundleShortVersionString(CFBundleVersion),  如果你修改默认的版本格式, 请设置此变量, 如果不想修改, 请忽略此设置
    # CUSTOMIZED_APP_VERSION=""
    #
    # # Debug模式编译是否上传,1=上传 0=不上传,默认不上传
    UPLOAD_DEBUG_SYMBOLS=1
    #
    # # 模拟器编译是否上传,1=上传 0=不上传,默认不上传
    UPLOAD_SIMULATOR_SYMBOLS=1
    #
    # #只有Archive操作时上传, 1=支持Archive上传 0=所有Release模式编译都上传
    UPLOAD_ARCHIVE_ONLY=1
    

    然后运行Xcode,再去Bugly的后台看到的崩溃信息就会和之前的不一样了,这次能定位到具体的行代码


    image.png

    友盟

    同样的步骤就不重复了
    官网注册账号 --> 登录 --> 添加项目 --> 我的产品 --> 点它

    image.png
    --> 再点它
    image.png
    --> 你就能看到你的项目了(说实话,我真是找了半天,不知道在哪找自己的项目,跟个迷宫一样,转晕了,在首页就不能来个搜索吗?原谅我的傻白甜😂)
    image.png
    点击管理就能看到你的App key了
    image.png

    接下来就是在项目中用了,同样是pod

    pod 'UMCCommon'
    pod 'UMCAnalytics'
    

    然后在AppDelegate里面,两句代码

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        /** 初始化友盟所有组件产品
         @param appKey 开发者在友盟官网申请的AppKey.
         @param channel 渠道标识,可设置nil表示"App Store".
         */
        [UMConfigure initWithAppkey:UmAppKey channel:@""];
        
        
        /** 设置 统计场景类型,默认为普通应用统计:E_UM_NORMAL
         @param 游戏统计设置为:E_UM_GAME.Dplus统计设置为:E_UM_DPLUS
         */
        [MobClick setScenarioType:E_UM_NORMAL];
        
        /** 开启CrashReport收集, 默认YES(开启状态).
        @param value 设置为NO,可关闭友盟CrashReport收集功能.
        @return void.
        */
    //    [MobClick setCrashReportEnabled:NO];   // 关闭Crash收集
        
        return YES;
    }
    

    然后同样的,写一个数组越界的方法,运行,返回友盟控制台,好了,这时候问题来了,这时候你就会发现,友盟迟迟没有返回来崩溃日志,这就是前面提到的,和Bugly不同的,友盟的反射弧超级长,,反正我是第二天才看到了头一天的崩溃日志,不像Bugly那样,最多几分钟就能看到了。这个差评😀
    看看昨天的崩溃日志

    image.png
    接下来就是如果定位到具体的代码了

    两步:1、下载错误分析工具解压zip得到umcrashtool文件
    2、下载错误列表中的.csv文件

    image.png
    image.png
    然后去报表中心下载
    image.png
    最后将将umcrashtool与已下载的xxx.csv文件放入同一目录下
    image.png
    打开终端,1、cd到当前目录下 --> 回车
    2、依次输入./umcrashtool+空格 +.csv文件路径(注意:./umcrashtool 与.csv文件路径之间要有空格,如下图) --> 回车
    image.png
    估计你会看到下图的警告⚠️
    image.png
    红框内标识你的dsym文件并不是以D56B3C...命名的,那么这个dsym是在哪里找到的,我们在打包的时候,会生成一个Archive文件,Show in Finder,显示包内容找到UM_demo.app.dsym文件,将名字改成上面终端里面给你的那个D56B3C55-B566-312E-A5F0-0DBF473C6175.app.dsym,然后重新执行上面的命令,你就会看到错误信息能具体定位到哪一行了,注:友盟关于数组越界这种bug并不能准确分析出是哪一行代码出现问题😁

    这是官方给的错误分析介绍,想要了解的童鞋敬请移步😀

    对比两者:

    1、时间:Bugly可以堪称即时性,友盟...反射弧超级长;
    2、定位准确度:Bugly优于友盟;
    3、操作难易度:Bugly可以进行自动配置符号表,友盟只能进行手动操作(反正我觉得没有Bugly用起来简单);
    4、友盟每天只能统计1000个错误,第二天会重置次数,而Bugly并没有限制。

    更新:

    昨天特意去网上搜了一下,针对友盟的崩溃日志分析(因为我觉得上面的方法很麻烦),无意中发现了一个大神写的dSYMTools,不得不说......我还是很喜欢站在巨人的肩膀上摘苹果这种感觉滴😁😁😁😁😁😁。这里贴上原著,也对作者的分享表示感谢 ---> dSYMTools,具体使用方法里面也写得很清楚,在这里就不赘述了。

    相关文章

      网友评论

        本文标题:iOS统计线上异常崩溃日志之Bugly和友盟统计使用笔记

        本文链接:https://www.haomeiwen.com/subject/ttqpbftx.html