前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >搭建自己的 crash 监控系统

搭建自己的 crash 监控系统

作者头像
iTesting
修改2019-12-04 13:40:41
1.2K0
修改2019-12-04 13:40:41
举报
文章被收录于专栏:iTestingiTesting

iTesting,爱测试,爱分享

开发一个手机应用有如此多的限制,比如硬件限制(CPU,内存,电池等等)。如果你的代码不是足够合理,那就准备迎接世界上最严重的问题吧:Crash。根据研究所示:

应用崩溃是手机app用户抱怨最多的额问题

更严重的:如果一个应用连续崩溃3次,大概一半的用户会卸载这个应用

崩溃追踪系统,让开发者能够从用户的设备上收集到每一个导致崩溃的细节,专门用来解决这种应用崩溃问题。目前最流行的2个流行崩溃追踪系统是 Crashlytics 和 Parse Crash Reporting,这两个服务都是免费的,开发者可以免费集成他们到你的app。当应用奔溃,整个跟踪报告就会发送到他们的后端,开发者可以及时快捷的修复这些严重的问题,这样,你就可以在很短的时间内奉上一个“无Crash”的应用。

然而,这些服务的提供商会收集这些数据,对于对用户隐私敏感的公司还是有些顾虑的。

那么。。。是否有那种允许我们在自己服务器部署的崩溃追踪系统?当然有!!并且会非常容易创建,下面有请Application Crash Reporting on Android (ACRA) 一个允许Android应用自动发送崩溃报告到自己服务器的库。

1. Ubuntu上安装Acralyzer

首先从安装couchdb开始,打开终端,输入如下命令:

代码语言:javascript
复制
apt-get install couchdb

使用如下指令来验证是否安装成功

代码语言:javascript
复制
curl http://127.0.0.1:5984

如果安装成功,会返回如下信息

代码语言:javascript
复制
{"couchdb":"Welcome","version":"1.6.1"}

编辑/etc/couchdb/local.ini 文件来允许我们通过外部IP来访问CouchDB(默认只能通关127.0.0.1来访问)。只需要把下面两行的注释去掉即可。

代码语言:javascript
复制
;port = 5984
;bind_address = 127.0.0.1

然后修改为:

代码语言:javascript
复制
port = 5984
bind_address = 0.0.0.0

在这个文件里,你还应该添加一个用户名/密码来作为管理员账户,找到这一行(一般是在文件末尾):

代码语言:javascript
复制
[admins]

在它的下一行添加一个 username=password形式的内容。例如:

代码语言:javascript
复制
snake = 12345

不用担心在这里写明文密码会不会有问题,一旦CouchDB重启后,你的密码会被自动哈希加密,并且是不可读的

保存文件,通过下面的语句来重启CouchDB:

代码语言:javascript
复制
curl -X POST http://localhost:5984/_restart -H"Content-Type: application/json"

如果报权限错误,就加上权限username:password@host:5984

代码语言:javascript
复制
curl -X POST http://snake:123456@localhost:5984/_restart -H"Content-Type: application/json"

2. Mac上安装Acralyzer mac 上我用homebrew 安装couchdb, 一条命令就够了。

代码语言:javascript
复制
brew install couchdb 

启动也很简单,

代码语言:javascript
复制
couchdb 

你将看到

代码语言:javascript
复制
➜  ~  couchdb
Apache CouchDB 1.6.1 (LogLevel=info) is starting.
Apache CouchDB has started. Time to relax.
[info] [<0.32.0>] Apache CouchDB has started on http://127.0.0.1:5984/
[info] [<0.108.0>] 127.0.0.1 - - GET / 200
[info] [<0.102.0>] 127.0.0.1 - - GET /favicon.ico 200

后面的步骤跟ubuntu上一样,只是配置文件在:/usr/local/etc/couchdb/local.ini


现在,你就可以通过浏览器来访问CouchDB了,网页服务被称为Futon—CouchDB的界面后端。通过以下地址来打开浏览器:

代码语言:javascript
复制
http://<YOUR_SERVER_IP>:5984/_utils

多了两数据库.

3. 配置本地数据库 现在我们要安装一个acro-storage(Acralyzer的存储端)。通过右侧的菜单,点击Replicator(复制器),并填写表单的from Remote Database和from Remote Database类似如下所示:

代码语言:javascript
复制
from Remote Database: http://get.acralyzer.com/distrib-acra-storage

to Local Database: acra-myapp

然后点击Replicate,等待它完成。

然后使用类似的方法安装Acralyzer:

代码语言:javascript
复制
from Remote Database: http://get.acralyzer.com/distrib-acralyzer

to Local Database: acralyzer

还是点击Replicate来安装

如果你上面做的都对的话,你会发现系统里多了2个数据库—-acra-myapp 和 acralyzer.

注意:你先要用你开始创建的admin登录进去,不然会出错。 myapp是你打算监控的项目名字。 如果你有多个项目要监控,多安装几个acro-storage

离成功很近了,下一步,我们要创建用户,打开浏览器,转到这个网址:

代码语言:javascript
复制
http://<YOUR_SERVER_IP>:5984/acralyzer/_design/acralyzer/index.html

进入 Admin 页并点击 Users

创建后,拷贝生成的信息到记事本,后面有用

然后去数据库acra-myapp,给这个帐号加上read权限


4. 在客户端安装ACRA 首先需要在build.gradle中添加一个(dependency)依赖(使用Android Studio):

代码语言:javascript
复制
compile 'ch.acra:acra:4.6.1'

同步你的gradle文件,然后创建一个自定义的Application类 在你的自定义Application类上面添加一个Annotation @ReportCrashes 贴上你前面保存在记事本的信息

最后一步,不要忘记在AndroidManifest.xml中添加网络权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.INTERNET"/>

测试 造一个crash

到监控上面去看一下

有了,大功告成

点开可以看到bug的详细信息

还有很多功能,不在这里啰嗦了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iTesting 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档