Acra:安装、扩展Application-Activity



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

正如它们以正常方式所述,您必须创建一个类f.e.MyApplication并用Application扩展它。由于我已经在扩展Activity类,我不知道该怎么办……他们说:如果你的应用程序已经包含一个Application子类,请将ACRA添加到这个类中;然而,我不知道该怎么做。。

谢谢!

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

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

您应该有一个值为android:labelandroid:theme<application>。只要在那里添加android:name=".MyApplication",就可以开始了。

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

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

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

android:name=".MyApplication"

例如:

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

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

我的应用程序类如下:

@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

我回答这个问题是因为答案来得太早了,它需要更新

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

示例:

/* do ACRA imports */
@ReportsCrashes(formKey = "x-x-x-x-x-x")
public class YourApplication extends Application{
public void onCreate(){
    ACRA.init(this);
    super.onCreate();
}
}

您还应该在清单文件中声明,如教程中所述。

相关内容

  • 没有找到相关文章

最新更新