Android开发之——搭建本地Crashing跟踪系统ACRA

前言

开发的手机应用,受诸多条件的限制如:硬件、系统升级、网络等综合因素的影响,极有可能产生异常,如何有效的收集异常信息反馈给程序开发人员,便于及时有效的解决BUG,便成为了首要问题。

值得庆贺的是国内一些大厂已经提供了SDK供开发者免费试用,如友盟统计,腾讯Bugly等;本文要讲述的是Github上普遍试用的异常搜集工具ACRA.

准备

  1. Ubuntu 16.04(搭建服务端)
  2. Android Studio(开发客户端)
  3. couchdb

ACRA

  1. ACRA移动端:https://github.com/ACRA/acra
  2. acralyzer:https://github.com/ACRA/acralyzer

环境搭建

服务器搭建

Ubuntu上安装Acralyzer

  1. 打开终端,输入如下命令,安装couchdb

    sudo apt-get install couchdb   
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第1张图片

  2. 安装curl工具

    sudo apt-get install curl
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第2张图片

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

    curl http://127.0.0.1:5984
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第3张图片

  4. 出现如下信息说明安装成功

    {"couchdb":"Welcome","uuid":"f8c3466d228d317565161fa2e9b29e05","version":"1.6.0","vendor":{"version":"15.10","name":"Ubuntu"}}
    
  5. 修改/etc/couchdb/local.ini文件的访问权限

    sudo chmod 777 local.ini
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第4张图片

  6. 打开/etc/couchdb/local.ini查看文件信息(未修改前)

    Android开发之——搭建本地Crashing跟踪系统ACRA_第5张图片

  7. 为便于通过外部IP来访问CouchDB,修改local.ini信息

    修改前      
    
        ;port = 5984
        ;bind_address = 127.0.0.1
    修改后     
    
        port = 5984
        bind_address = 0.0.0.0
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第6张图片

  8. 通过下面的语句来重启CouchDB

    curl -X POST http://localhost:5984/_restart -H"Content-Type: application/json"
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第7张图片

  9. 查看本地ip地址

    ip add
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第8张图片

  10. 重启Couchb服务 ‘

    sudo /ect/init.d/couchdb start
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第9张图片

  11. 可以通过浏览器来访问CouchDB

    http://:5984/_utils       
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第10张图片

  12. 点击如图所示,进行Replicator(复制器)设置
    Android开发之——搭建本地Crashing跟踪系统ACRA_第11张图片

  13. 安装一个acro-storage(Acralyzer的存储端)

    在replicator页面,并填写表单的from Remote Database和from Remote Database类似如下所示:
    from Remote Database: http://get.acralyzer.com/distrib-acra-storage
    to Local Database: acra-myapp 
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第12张图片

  14. Acralyzer存储器安装完成后如下所示

    Android开发之——搭建本地Crashing跟踪系统ACRA_第13张图片

  15. 数据库信息如下(新增acra-myapp)

    Android开发之——搭建本地Crashing跟踪系统ACRA_第14张图片

  16. 同理安装Acralyzer

    from Remote Database: http://get.acralyzer.com/distrib-acralyzer
    to Local Database: acralyzer
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第15张图片

  17. Acralyzer安装完成后如下所示

    Android开发之——搭建本地Crashing跟踪系统ACRA_第16张图片

  18. 经过上述操作后系统里数据库如下

    Android开发之——搭建本地Crashing跟踪系统ACRA_第17张图片

  19. 打开浏览器,输入如下网址访问Acralyzer主页

    http://:5984/acralyzer/_design/acralyzer/index.html
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第18张图片

  20. 进入 Admin 页并点击 Users

    Android开发之——搭建本地Crashing跟踪系统ACRA_第19张图片

  21. 新建用户,填写用户名和密码后,点击创建,会生成用户信息

    注: 此处的信息后面创建客户端时会用到   
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第20张图片

  22. 保护acra-myapp里的数据,可以设定仅开放权限给管理员或者某些用户

    依次进入acra-myapp,然后点击Securities。 填写Members段里的Roles字段。如下所示:
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第21张图片
    Android开发之——搭建本地Crashing跟踪系统ACRA_第22张图片

  23. 之后可以通过类似下面这样的网页来访问操作面板

    http://:5984/acralyzer/_design/acralyzer/index.html
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第23张图片

客户端搭建

  1. 创建AcraSample应用,在build.gradle中添加依赖

    Android开发之——搭建本地Crashing跟踪系统ACRA_第24张图片

  2. 自定义Application类,并添加注释

    注:AcraCore是固定配置   
        AcraHttpSender中填写服务端创建时的User信息   
        AcraDialog填写异常时弹出Dialog填写信息   
        AcraToast异常时吐司异常信息   
        AcraMailSender异常时发送邮件   
        AcraNotification异常时发送通知  
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第25张图片

  3. 在AndroidManifest.xml中添加网络权限

    uses-permission android:name="android.permission.INTERNET"
    

异常测试

  1. 添加异常测试类型(本部分测试空指针、数组角标、ANR、类型转换)
    Android开发之——搭建本地Crashing跟踪系统ACRA_第26张图片
  2. 运行到手机中
    Android开发之——搭建本地Crashing跟踪系统ACRA_第27张图片
  3. 测试异常

    注:异常时弹出对话框,用户可添加异常反馈   
    

    Android开发之——搭建本地Crashing跟踪系统ACRA_第28张图片

  4. 异常报告

    Android开发之——搭建本地Crashing跟踪系统ACRA_第29张图片

  5. 异常详情
    Android开发之——搭建本地Crashing跟踪系统ACRA_第30张图片

总结

本文主要讲述了通过ACRA在本地搭建服务端和移动端的过程、异常问题的测试、异常报告的分享,当然ACRA也提供自定义功能,用户可根据需要自行定义。

你可能感兴趣的:(ACRA,技术文档)