APP错误日志&&埋点 方案分析

作为商业化开发,错误日志&&埋点在企业决策、项目维护上尤其重要,这里介绍怎样更快的为企业减负增效。

一、错误日志方案

错误日志的方案目前主流大致有

1.1、使用友盟、bugly方案

这种官方sdk都比较稳定,基本不收费,且集成相对简单,这里贴一下地址

bugly官网友盟性能监控

1.2、公司自研

自己定义CrashHander,接口联调,按照一定策略上传到公司服务器,并封装成sdk

如果有完全企业内部自定义开发需求,参考这里

1.3、使用Sentry

Sentry统计是一整套系统,覆盖面包括各个终端。这个的服务端是收费的,但是可以使用他们的源码自己搭建就免费,目前我们公司使用这套,非常棒。

目前支持了React、Vue、android、iOS、React Native、Flutter等多个平台

image-20220127202810611

集成相对简单

1.3.1、集成android

app Gradle中添加依赖

implementation 'io.sentry:sentry-android:6.0.0'

application节点下添加 (这个是内网地址,这样就不泄露信息了😄)

备注这里有个坑:这个注册也可以通过Sentry.init代码动态注册,但是可能会功能失败。

<meta-data
    android:name="io.sentry.dsn"
   android:value="http://53968c8d69c54fd7a649ff4236bd049a@172.16.200.96:9000/10" />

这样就集成ok了,在onCreate中添加崩溃代码即可看到效果

findViewById<TextView>(R.id.textView1).setOnClickListener {
    throw NullPointerException("阿斯蒂芬")
}
image-20220127202810611
1.3.2、集成RN
yarn add @sentry/react-native

会在package.json中生成

"@sentry/react-native": "^3.4.3",

添加初始化代码

备注这里有个坑:这个导包init千万要导入@sentry/react-native的包,导入@sentry/web就失效了

import { init } from '@sentry/react-native'

// 初始化错误统计Sentry
init({
    dsn: 'http://53968c8d69c54fd7a649ff4236bd049a@172.16.200.96:9000/10',
    environment: Config.envType,
    debug: __DEV__,
    tracesSampleRate: 1.0,
})

到这里就完成了,然后随便抛个错误。

这个产品的优势是可以记录从React到js到java全流程的错误,非常之叼。而一般友盟、bugly只能从原生的角度记录错误,能不能记录js、dart等上层语言的错误,完全是记录原生模块顺带的,所以就不够友好。

此外RN的debug模式报红不属于崩溃,属于Facebook SDK内部维护的业务信息,因此这里不能记录。改到release模式下就可以抛出来被sentry捕获。

throw new Error('safadsfdsfafadsfadf')
// NativeModules.CommonModule.showPics('pics', 'defaultIndex')
image-20220127202810611

测试纯原生报错,可以延迟等js加载完毕,再在主线程crash

// 测试主线程崩溃,统计错误
private void testCrash(){
  new Thread(() -> {
    try {
      sleep(10 * 1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    runOnUiThread(new Runnable() {
      @Override
      public void run() {
        throw new NullPointerException("重构jazg");
      }
    });
  }).start();
}

二、业务埋点方案

业务埋点的方案目前主流大致有

2.1、使用友盟

友盟基础方案不收费,高级方案收费

友盟移动统计

2.2、使用公司自研

这种需要较多的开发资源,特别是如果需要数据分析、决策啥的需要自己开发

如果有完全企业内部自定义开发需求,参考这里

2.3、神策分析

神策分析也是业内专业性最强的埋点服务,但是要收费。它的服务很周到,傻瓜式的接入,即使不会ios开发接入也非常简单。

优势:可以记录原生、JS每个按钮、每个控件的事件,以及每个控件的父控件,控制台的数据,可以说sdk的功能写的可以上天了

坑点:如果在官网没有找到生成项目key的入口,说明不是合作客户,需要交钱了

代码这里就不写了,主要是这个文档写的太好了,点进去链接按照步骤来即可

三、总结

如果公司要求不高的话建议搞个友盟算了,简单又方便。如果公司对这块比重看得比较重,则考虑使用神策分析+Sentry错误统计。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流星雨在线

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值