[翻译]如何安装ACRA-一个Android应用Crash跟踪系统

[翻译]如何安装ACRA-一个Android应用Crash跟踪系统

—在你自己的服务器上

How to setup ACRA, an Android Application Crash Tracking system, on your own host

原文地址:

http://inthecheesefactory.com/blog/how-to-install-and-use-acra-android/en

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

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

更严重的:

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

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

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

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

开始!

创建服务器

服务器端是客户端的一个先决条件。 因此,让我们从服务器端开始。

ACRA是精心设计的,是相当受欢迎的(ACRA是针对客户端应用的,服务端可以自己搭建)。 它允许开发者开发自己的服务器系统,我们找到网上有很多种ACRA服务端。我建议选择–也是最好的—Acralyzer,Acralyzer也是ACRA团队开发的,Acralyzer工作在Apache CouchDB之上,所以除了CouchDB之外,没有必要安装任何额外的软件。

Acralyzer是一个全功能的后端崩溃跟踪系统。 从不同设备反馈回的同一堆栈跟踪报告会被归类为一个问题。如果你已经修复了某个问题,你可以通过简单的点击一下来关闭这个问题。同时它也是实时工作的。 这个系统我找到的唯一一个缺点就是他的界面有点复杂,但是无所谓啦,本来就是为开发者设计的嘛 =P。

安装很简单,下面是一个如何在Ubuntu上安装Acralyzer的完整的指导。

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

apt-get install couchdb

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

curl http://127.0.0.1:5984

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

{"couchdb":"Welcome","version":"1.2.0"}

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

;port = 5984
;bind_address = 127.0.0.1

然后修改为:

port = 5984
bind_address = 0.0.0.0

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

[admins]

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

nuuneoi = 12345

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

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

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

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

http://<YOUR_SERVER_IP>:5984/_utils

界面显示如下:

首先,你需要通过之前设定的管理员账户来登录系统

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

from Remote Database: http://get.acralyzer.com/distrib-acra-storage

to Local Database: acra-myapp

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

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

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

to Local Database: acralyzer

还是点击Replicate来安装

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

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

http://<YOUR_SERVER_IP>:5984/acralyzer/_design/acralyzer/index.html

进入 Admin 页并点击 Users

填写一个任意的用户名和密码(不一定非得是之前的那个管理员账户),点击Create User。然后会看到如下信息:

把这些信息都拷贝保存在文档里,我们会在后面的客户端里用到

最后一件事就是保护acra-myapp里的数据,可以设定仅开放权限给管理员或者某些用户,你可以进入acra-myapp,然后点击Securities。 填写Members段里的Roles字段。如下所示:

["reader"]

搞定!

之后,你就可以通过类似下面这样的网页来访问操作面板:

http://<YOUR_SERVER_IP>:5984/acralyzer/_design/acralyzer/index.html
请注意:arco-myapp是为一个应用创建的,如果你要为另外一个应用创建一个后端系统。那么重复上面的步骤,复制一个acro-storage,不过需要把本地的数据库改为*acra-<your_app_name>* 。 注意名字是以*acra-*开头的。

如果系统里不止一个app。Acralyzer的操作面板里会呈现一个下拉列表,让你选择哪一个应用来查看问题报告,有空可以自己试试。

在客户端安装ACRA

在手机客户端安装ACRA非常容易,首先需要在build.gradle中添加一个(dependency)依赖(使用Android Studio):

compile ‘ch.acra:acra:4.6.1‘

同步你的gradle文件,然后创建一个自定义的Application类—不要忘记在AndroidManifest.xml中定义它。(我认为每个Android开发者都会怎么做的),

在你的自定义Application类上面添加一个Annotation @ReportCrashes

import android.app.Application;

import org.acra.ACRA;
import org.acra.annotation.ReportsCrashes;
import org.acra.sender.HttpSender;

/**
 * Created by nuuneoi on 2/19/2015.
 */

@ReportsCrashes(
)
public class MainApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        ACRA.init(this);
    }

}

现在上面说到的保存的信息派上用场了,复制他们到@ReportsCrashes注释中。


@ReportsCrashes(
    httpMethod = HttpSender.Method.PUT,
    reportType = HttpSender.Type.JSON,
    formUri = "http://YOUR_SERVER_IP:5984/acra-myapp/_design/acra-storage/_update/report",
    formUriBasicAuthLogin = "tester",
    formUriBasicAuthPassword = "12345"
)

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

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

恭喜你!全都搞定!

测试

现在让我们测试一下,在Activity中添加一些认为的Crash。例如:

TextView tvHello;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvHello.setText("Test Crash");
}

运行你的应用,然后换一个Crash的方式,再次运行,然后在你的操作面板里可以看到这些bugs报告已经发送到后端系统中了。

每个bug条目都是一系列来自不同的应用用户,不同时间发送的。

点击一个报告,深入的查看一下,你会看到内容是一个完整的stacktrace。

还有一堆长长的信息,足够你翻7页之多。

如果你fix了某个bug。你可以通过点击“bug”图标来关闭该bug。(下图中高亮的部分)

希望大家觉得这篇文章有帮助,尤其对于那些对隐私比较关心的,需要一个应用崩溃追踪系统的大公司。

实际上ACRA还有很多特性,比如:当Crash发生时,通过Toast提示或者弹出Dialog。你可以在ACRA的网站找到这些选项。

Acralytics同样也有很多其他功能,比如,你可以设定服务器在收到Bug报告的时候给我们发邮件。查看更多信息,请访问Acralyzer .



原文作者:nuuneoi

时间: 2024-08-25 13:20:20

[翻译]如何安装ACRA-一个Android应用Crash跟踪系统的相关文章

【PC大变身】Android+Win8.1双系统

本季逆天给大家带来的是PC变Android,我们来具体分析下~ android-x86-4.4-r1.iso  http://pan.baidu.com/s/1dDviYEd 笔记本都是些Mac系统,都是些Window系统,是不是很无聊呢? [最下面是讲Android+win8.1双系统](什么win7+win8双系统的,都弱爆了,黑苹果+Android+win8.1三系统才霸气!) 这个是我的硬盘缩略图 装完后的Android系统 装点应用简单美化下 这个是平板系统,型号之类的就显示你电脑型号

Android中一个有趣的crash的日志分析

很久前写的一篇文章,发出来以作纪念:) Android中一个有趣的crash的日志分析 首先看看bugly平台中异常的统计信息,表面上是一个NullPointerException: 发生异常设备统计信息如下图,有意思的是全部都是root过的机器: 接下来看跟踪日志,在最下面可以看到这样的日志,抛出了NullpointerException: 引起异常的是com.lishu.net.LishuNet$2类,从类名看显然是某一个类的内部类. 第一个反应,当然是搜索一下应用的源代码,看看是不是有co

Android Native crash日志分析

在Android应用crash的类型中,native类型crash应该是比较难的一种了,因为大家接触的少,然后相对也要多转几道工序,所有大部分对这个都比较生疏.虽然相关文章也有很多了,但是我在刚开始学的过程中还是遇到一些问题,下面一一记录,以便将来翻阅. 分析native crash 日志需要几个东西: addr2line,objdump,ndk-stack等几个工具 带symbols的so文件 log log native crash的日志都是从一行星号(*** *** *** *** ***

Android程序crash处理

Android程序crash处理 时间 2014-11-24 13:45:37  CSDN博客 原文  http://blog.csdn.net/allen315410/article/details/41444053 主题 Android 在实际项目开发中,会出现很多的异常直接导致程序crash掉,在开发中我们可以通过logcat查看错误日志,Debug出现的异常,让程序安全的运行,但是在开发中有些异常隐藏的比较深,直到项目发布后,由于各种原因,譬如android设备不一致等等,android

Android官方入门文档[1]创建一个Android项目

Android官方入门文档[1]创建一个Android项目 创建一个Android项目 这节课教你1.创建与Android Studio中的一个项目2.创建使用命令行工具项目 你也应该阅读?管理项目 Creating an Android Project This lesson teaches you to1.Create a Project with Android Studio2.Create a Project with Command Line Tools You should also

VS2015下的Android开发系列02——用VS开发第一个Android APP

配置Android模拟器 这算是第一篇漏下说的,配置好VS的各参数,新建Android项目后,会发现菜单下的工具栏会多出Android相关的工具栏,红色圈出的就是AVD. 打开AVD后可以从模版处选一个设备,然后自己再做细节参数调整. 然后选择要模拟的版本,因为APP有蓝牙BLE的支持需求,所以选择了至少API Level18,注意如果安装了HAXM,CPU/ABI项一定要选"Intel Atom (x86)",如果没有,说明组件未安装,赶紧去下载后再来:另外一个注意点是内存至少3G,

windows系统下跨平台开发环境的搭建(cordova)+创建一个android项目

目的:在windows系统下,搭建跨平台的开发环境(cordova)创建一个安卓项目 前提:安装有java Jdk 1.8以上 Android SDK 23以上 1.安装node.js ,选择对应的版本下载安装,没什么好说的 官方网址:http://nodejs.cn/ 2.测试安装是否成功 win+r 键,打开运行窗口,输入cmd,然后确定,打开命令行窗口 输入node  -v 输出版本号,说明node.js安装成功,否则请查找原因,或者重新安装 输入npm -v 输出版本号说明npm可以使用

在开发第一个Android应用之前需要知道的5件事:

你能否详细讲述一下,在开发Android应用过程中每一阶段要用到的技能和编程语言? 建立一个Android应用程序可以归结为两个主要技能/语言:Java和Android系统.Java是Android的通用编程语言,但是Android还包括学习用于app界面设计的XML语言,学习Android概念,以及从Java编程角度运用这些概念. 学了Java和XML之后,再用Android理念将两者连接起来. 我也有分享过一些学习Activities和 Fragments等的Android相关知识.我最喜欢

Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)

一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html Android SDK:http://developer.android.com/sdk/index.html ADT: