ACRA概述

介绍

在Android开源库和开源项目一文中,介绍了不少开源项目。其中ACRA是一个Android平台程序崩溃信息收集的开源库,用于嵌入到Android Project中,当该程序崩溃的时候ACRA能够在进程彻底结束前收集崩溃状态时的该应用和设备的各种信息,生成崩溃报告,保存到本地,并在合适的时机发送报告到服务端。使得开发者能进行程序错误信息的收集,可以更好的改进程序以提高兼容性,目前只能支持采集java层的crash,要采集native层需要考虑集成breakpad

github

https://github.com/ACRA/acra

wiki

https://github.com/ACRA/acra/wiki

历史版本

目前的最新版本是5.3.0 (2019年3月23日)

ACRA设计

主要模块

package module comments
acra-advanced-scheduler schedule when to send
acra-core org.acra.attachment
acra-core org.acra.builder 构建
acra-core org.acra.collector 信息采集类
acra-core org.acra.config 配置
acra-core org.acra.data 崩溃报告的数据结构和创建
acra-core org.acra.file 崩溃报告的保存
acra-core org.acra.interaction 发送前的交互管理
acra-core org.acra.legacy 日志遗留,历史报告转成最新报告格式
acra-core org.acra. plugins
acra-core org.acra.prefs acra的配置保存
acra-core org.acra.reporter 崩溃报告的入口
acra-core org.acra.scheduler
acra-core org.acra.sender 崩溃报告发送类库,SenderService在此
acra-core org.acra.startup
acra-core org.acra.util
acra-dialog 发送交互为dialog
acra-http 崩溃报告通过http发送
acra-limiter
acra-mail 崩溃报告通过邮件发送
acra-notification 崩溃报告弹通知来通知
acra-toast 崩溃报告弹toast通知

对外主要接口

class org.acra.ACRA
method init
fields
class org.acra.config.CoreConfigurationBuilder
method
fields
class org.acra.config.CoreConfiguration
method
fields

架构图

待定

CRASH流程图

ErrorReporterImpl ReportBuilder ReportExecutor CrashReport SchedulerStarter uncaughtException build execute createCrashData crashReportData saveCrashReportFile sendReport now, go to the sender module ErrorReporterImpl ReportBuilder ReportExecutor CrashReport SchedulerStarter

交互的设置

  • ACRA的默认行为是静默发送崩溃报告。 除了静默发送崩溃报告以外,还可以选择Toast、Diallog、Notification
  • https://github.com/ACRA/acra/wiki/Interactions

高级用法

  • 自定义报告的内容

    • 在崩溃报告中添加自己的自定义变量或跟踪(“Breadcrumbs”)
    • 将logcat,eventlog或radiolog提取添加到报告中
    • 添加您自己的日志文件将摘录到报告中
    • 将DropBoxManager事件添加到报表中
    • 将设备唯一ID添加到报告中
    • 选择要包含在报告中的字段
    • 添加自定义SharedPreferences名称
    • 排除SharedPreferences键
    • 排除设置键
  • 让您的用户控制ACRA
    • 启用/禁用ACRA
    • 启用/禁用系统日志
    • 启用/禁用包括DeviceID
    • 设置要添加到报告的电子邮件地址
    • 启用/禁用自动接受报告
  • 为捕获的异常或意外的应用程序状态发送报告,没有任何异常
  • 配置KeyStore
  • 捕获应用程序无响应错误(ANR)
  • https://github.com/ACRA/acra/wiki/AdvancedUsage

服务端存储和分析

  • Acralyzer is the new open source backend created by the author of ACRA.
  • https://github.com/ACRA/acralyzer

报告字段

  • https://github.com/ACRA/acra/wiki/ReportContent

其它设计考虑

  • 配置更新
  • 上传时机与策略
  • 上传失败处理
  • 服务端实现
    • 计算上传成功率、重复发送、漏发送
  • 捕获native异常

案例接入

sample

AndroidManifest.xml 添加权限android.permission.INTERNET

<applicationandroid:name="MyApp"<uses-permission android:name="android.permission.INTERNET"></uses-permission>

MyApp.java中初始化代码,以下呈现了一个通过http把crash发送到服务端的例子

@AcraCore(buildConfigClass = BuildConfig.class)
public class MyApp extends Application {@Overrideprotected void attachBaseContext(Context base) {super.attachBaseContext(base);// The following line triggers the initialization of ACRACoreConfigurationBuilder builder = new CoreConfigurationBuilder(this);builder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.JSON);builder.getPluginConfigurationBuilder(HttpSenderConfigurationBuilder.class).setUri("http://192.168.1.118:8080/AcraServiceDemo/CrashApiAction").setHttpMethod(HttpSender.Method.POST).setEnabled(true);ACRA.init(this, builder);}
}

项目地址

待补充

ACRA功能介绍与分析相关推荐

  1. [智能座舱]小鹏G9语音新功能介绍与分析

    自从2020年小鹏P7上市后,其搭载的全场景语音交互系统就成为车载语音交互产品的标杆.小鹏G9发布也带来了语音系统的升级.因为目前市面上还没办法体验到最新的系统,本文根据B站的体验视频,对小鹏G9上的 ...

  2. 【湃哒星说安全】后渗透协同平台 Cobalt Strike 常用功能介绍与分析

    0x00 背景 在开展渗透测试项目时,渗透测试工程师会使用大量的渗透测试框架以及工具,如Cobalt Strike.它提供了灵活性强.可用性高.可高度定制的攻击开发和执行环境,同时其具备端口扫描和木马 ...

  3. “票卡分析专用工具”功能介绍

    "票卡分析专用工具"的由来 ​​​        从一个萌动少年开始,来到北京,从此开始了北漂的生活...... 毕业工作虽然还没到八年,但有时候会回首想想一些工作方面的经历,总想 ...

  4. SOLIDWORKS Plastics 模流分析基础与功能介绍

    在目前工业界常运用到的工程塑料主要分成两大类,第一类为热塑性塑料,譬如ABS.PC.PET.PPS等等常见的塑料,而热塑性的特性就是可以再回收利用并且二次制造,第二类为热固性塑料,譬如EMC.LSR等 ...

  5. YOLOV4各个创新功能模块技术分析(一)

    YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...

  6. 简单的DPDK介绍与分析

    DPDK介绍及分析 什么是DPDK Intel® DPDK 全称 __Intel Data Plane Development Kit__,是intel提供的数据平面开发工具集,为Intel arch ...

  7. oracle供需平衡,OracleR12_MRP_功能介绍_V2.ppt

    OracleR12_MRP_功能介绍_V2.ppt * * . 插入急单 交货期提前 推后较缓 任务完工日期 对应任务 完工日期提前 一系列订单完工日期的变更 订单取消 相关请购 单.采购单 和任务的 ...

  8. mos 多路模拟电子开关_【原创】单火线智能开关技术介绍及分析

    文章来自电子星球APP--<单火线智能开关技术介绍及分析> 作者:leo.zhao 单火线智能开关的概念 众所周知,国内220V电网市电有两根线:一根火线和一根零线,此外为了保护人身安全有 ...

  9. 蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源

    简介:开源网络通信框架 SOFABolt 首次线上直播文字回顾. ,有趣实用的分布式架构频道. 回顾视频以及 PPT 查看地址见文末.欢迎加入直播互动钉钉群 : 30315793,不错过每场直播. 大 ...

最新文章

  1. shiro(2)-架构与配置
  2. Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
  3. 02 聚类算法 - 相似度距离公式、维度灾难
  4. Requires: libstdc++.so.6(GLIBCXX_3.4.15)
  5. 疯狂ios之cocos2d中的声音
  6. 每个工程师都应该了解的:聊聊幂等
  7. pytorch 画loss曲线_Pytorch使用tensorboardX可视化。超详细!!!
  8. [算法练习] 把字符串转换成整数
  9. NDK开发简单demo
  10. MyBatis官方下载地址(含mybatis-spring)
  11. 数学分析(一)数列与数列极限
  12. DHT爬虫和使用BEP协议完成metadata的下载(BT下载)
  13. 深入理解计算机系统寄存器寻址讲解
  14. 记一次菜鸟网络电话面试
  15. MATLAB绘画双纵坐标图改纵坐标颜色都为黑色
  16. Python绘图实例3:正八边形绘制
  17. 内边距和外边距,清除默认的内外边距
  18. 删除计算机系学生(在student表中),数据库原理及应用(第2版)习题参考答案
  19. Ubuntu18.04 64 位系统 安装32位支持库
  20. b站弹幕姬python_B站弹幕姬()分析与开发(下篇)

热门文章

  1. mate20pro测试绿屏 软件,如何检测mate20pro绿屏
  2. inurl:php?title=,微信 JS接口
  3. 第五代 智能计算机和生物计算机
  4. Mac安装AES加密模块pycrypto
  5. 人民日报揭礼品回收灰色利益链
  6. 2022-2028全球低地球轨道天线行业调研及趋势分析报告
  7. 有关于contentEditable
  8. 2022年笔记本电脑行业市场分析
  9. 树莓派文件系统查看与清理垃圾箱
  10. python 中的 turtle库 函数总结