ACRA功能介绍与分析
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流程图
交互的设置
- 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功能介绍与分析相关推荐
- [智能座舱]小鹏G9语音新功能介绍与分析
自从2020年小鹏P7上市后,其搭载的全场景语音交互系统就成为车载语音交互产品的标杆.小鹏G9发布也带来了语音系统的升级.因为目前市面上还没办法体验到最新的系统,本文根据B站的体验视频,对小鹏G9上的 ...
- 【湃哒星说安全】后渗透协同平台 Cobalt Strike 常用功能介绍与分析
0x00 背景 在开展渗透测试项目时,渗透测试工程师会使用大量的渗透测试框架以及工具,如Cobalt Strike.它提供了灵活性强.可用性高.可高度定制的攻击开发和执行环境,同时其具备端口扫描和木马 ...
- “票卡分析专用工具”功能介绍
"票卡分析专用工具"的由来 从一个萌动少年开始,来到北京,从此开始了北漂的生活...... 毕业工作虽然还没到八年,但有时候会回首想想一些工作方面的经历,总想 ...
- SOLIDWORKS Plastics 模流分析基础与功能介绍
在目前工业界常运用到的工程塑料主要分成两大类,第一类为热塑性塑料,譬如ABS.PC.PET.PPS等等常见的塑料,而热塑性的特性就是可以再回收利用并且二次制造,第二类为热固性塑料,譬如EMC.LSR等 ...
- YOLOV4各个创新功能模块技术分析(一)
YOLOV4各个创新功能模块技术分析(一) 简 介 yolov4论文:YOLOv4: Optimal Speed and Accuracy of Object Detection arxiv:http ...
- 简单的DPDK介绍与分析
DPDK介绍及分析 什么是DPDK Intel® DPDK 全称 __Intel Data Plane Development Kit__,是intel提供的数据平面开发工具集,为Intel arch ...
- oracle供需平衡,OracleR12_MRP_功能介绍_V2.ppt
OracleR12_MRP_功能介绍_V2.ppt * * . 插入急单 交货期提前 推后较缓 任务完工日期 对应任务 完工日期提前 一系列订单完工日期的变更 订单取消 相关请购 单.采购单 和任务的 ...
- mos 多路模拟电子开关_【原创】单火线智能开关技术介绍及分析
文章来自电子星球APP--<单火线智能开关技术介绍及分析> 作者:leo.zhao 单火线智能开关的概念 众所周知,国内220V电网市电有两根线:一根火线和一根零线,此外为了保护人身安全有 ...
- 蚂蚁集团网络通信框架 SOFABolt 功能介绍及协议框架解析 | 开源
简介:开源网络通信框架 SOFABolt 首次线上直播文字回顾. ,有趣实用的分布式架构频道. 回顾视频以及 PPT 查看地址见文末.欢迎加入直播互动钉钉群 : 30315793,不错过每场直播. 大 ...
最新文章
- shiro(2)-架构与配置
- Powershell管理系列(二十八)PowerShell操作之修改AD账号密码
- 02 聚类算法 - 相似度距离公式、维度灾难
- Requires: libstdc++.so.6(GLIBCXX_3.4.15)
- 疯狂ios之cocos2d中的声音
- 每个工程师都应该了解的:聊聊幂等
- pytorch 画loss曲线_Pytorch使用tensorboardX可视化。超详细!!!
- [算法练习] 把字符串转换成整数
- NDK开发简单demo
- MyBatis官方下载地址(含mybatis-spring)
- 数学分析(一)数列与数列极限
- DHT爬虫和使用BEP协议完成metadata的下载(BT下载)
- 深入理解计算机系统寄存器寻址讲解
- 记一次菜鸟网络电话面试
- MATLAB绘画双纵坐标图改纵坐标颜色都为黑色
- Python绘图实例3:正八边形绘制
- 内边距和外边距,清除默认的内外边距
- 删除计算机系学生(在student表中),数据库原理及应用(第2版)习题参考答案
- Ubuntu18.04 64 位系统 安装32位支持库
- b站弹幕姬python_B站弹幕姬()分析与开发(下篇)