6

我正在尝试将 ACRA 崩溃报告系统安装​​到我的 android 项目中。现在,我的项目已经在扩展一个类,Activity 类。那么我该如何实施 Acra 项目呢?

正如他们以正常方式声明的那样,您必须创建一个 fe MyApplication 类并使用 Application 扩展它。由于我已经在扩展 Activity 类,所以我不知道该怎么做......他们说:如果您的应用程序已经包含 Application 子类,请将 ACRA 添加到此类;但是,我不知道该怎么做..

谢谢!

http://code.google.com/p/acra/wiki/BasicSetup

4

4 回答 4

2

只需创建一个MyApplication从 扩展的类Application,按照他们所说的覆盖onCreate(),然后转到您的 AndroidManifest。

您应该有一个<application>with 值,例如android:labelor android:theme。只需添加android:name=".MyApplication"那里,你就可以开始了。

请记住,如果您的包裹是com.example.testMyApplication则必须在那里。如果你想把 MyApplication 放在其他地方,你必须指出它在哪里。

例如,如果您的包 iscom.example.test并且MyApplicationis in com.example.test.application,则必须添加android:name=".application.MyApplication到清单中。我强烈建议您只为您的应用程序使用一个包,因为它可以将您的项目原子化并使其更易于管理和维护。

于 2012-09-11T08:40:30.647 回答
1

我已经发布了详细的教程。这使您可以为现有项目设置 ACRA,并将其配置为向您的电子邮件地址发送电子邮件。 关联

于 2015-04-01T22:07:04.417 回答
1

由于清单而使用应用程序。在清单中,只需将其添加到应用程序标签中(其中包含所有活动):

android:name=".MyApplication"

前任:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:name=".MyApplication"
    android:theme="@style/AppTheme" >

由于易于初始化(因为它在启动时由 Android 系统自动初始化),它永远不会不报告。它可以在启动时立即崩溃并仍然报告。所以这是一个非常聪明的设置。

我的应用程序类如下所示:

@ReportsCrashes(

    formUri = "https://backend.com",
    customReportContent = { /* */ReportField.APP_VERSION_NAME, ReportField.PACKAGE_NAME,ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL,ReportField.LOGCAT },
    mode = ReportingInteractionMode.TOAST,
    resToastText = R.string.crash_toast_text

)  

public class ACRAHandler extends Application {


    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);


        final ACRAConfiguration config = new ConfigurationBuilder(this)

                .build();
        // Initialise ACRA
        ACRA.init(this, config);

    }



}

如果您使用 Firebase 的实例,则可以在同一个应用程序扩展类中同时使用两者,而不会出现任何问题。我自己尝试过,它成功了,错误报告或 Firebase 没有问题。

此外,ACRA 的新链接现在在 Github 上:https ://github.com/ACRA/acra/wiki/BasicSetup

我回答了这个问题,因为很久以前答案就来了,需要更新

于 2016-07-15T13:59:52.817 回答
-1

需要一个应用程序子类来维护一个全局应用程序状态,并不是每个应用程序都必须对其进行子类化。如果您的应用还没有,您可以创建它。

例子:

/* do ACRA imports */
@ReportsCrashes(formKey = "x-x-x-x-x-x")
public class YourApplication extends Application{

public void onCreate(){
    ACRA.init(this);
    super.onCreate();
}
}

您还应该按照教程中的说明在清单文件中声明。

于 2012-09-11T08:41:22.907 回答