我正在尝试将ACRA崩溃报告系统安装到我的android项目中。现在,我的项目已经在扩展一个类,即Activity类。那么我该如何实施Acra项目呢?
正如它们以正常方式所述,您必须创建一个类f.e.MyApplication并用Application扩展它。由于我已经在扩展Activity类,我不知道该怎么办……他们说:如果你的应用程序已经包含一个Application子类,请将ACRA添加到这个类中;然而,我不知道该怎么做。。
谢谢!
http://code.google.com/p/acra/wiki/BasicSetup
只需创建一个从Application
扩展的MyApplication
类,按照他们所说的重写onCreate()
,然后转到AndroidManifest。
您应该有一个值为android:label
或android:theme
的<application>
。只要在那里添加android:name=".MyApplication"
,就可以开始了。
请记住,如果您的包裹是com.example.test
,那么MyApplication
必须在那里。如果你想把MyApplication放在其他地方,你必须指出它在哪里
例如,如果您的包是com.example.test
,而MyApplication
在com.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();
}
}
您还应该在清单文件中声明,如教程中所述。