Acra:安装,扩展应用程序 - 活动?

时间:2012-09-11 08:29:44

标签: android acra

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

当他们以正常方式陈述时,你必须上课。 MyApplication并使用Application扩展它。由于我已经在扩展Activity类,我不知道该怎么做......他们说:如果你的应用已经包含一个Application子类,请将ACRA添加到此类;但是,我不知道应该怎么做......

谢谢!

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

4 个答案:

答案 0 :(得分:2)

只需创建一个MyApplication类,其范围从Application开始,执行他们对覆盖onCreate()的说法,然后转到AndroidManifest。

您应该拥有<application>,其中包含android:labelandroid:theme等值。只需在那里添加android:name=".MyApplication",您就可以开始了。

请注意,如果您的套餐是com.example.testMyApplication必须在那里。如果你想将MyApplication放在其他任何地方,你必须指出它在哪里。

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

答案 1 :(得分:1)

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

答案 2 :(得分: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

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

答案 3 :(得分:-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();
}
}

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