我正在尝试将 ACRA 崩溃报告系统安装到我的 android 项目中。现在,我的项目已经在扩展一个类,Activity 类。那么我该如何实施 Acra 项目呢?
正如他们以正常方式声明的那样,您必须创建一个 fe MyApplication 类并使用 Application 扩展它。由于我已经在扩展 Activity 类,所以我不知道该怎么做......他们说:如果您的应用程序已经包含 Application 子类,请将 ACRA 添加到此类;但是,我不知道该怎么做..
谢谢!
我正在尝试将 ACRA 崩溃报告系统安装到我的 android 项目中。现在,我的项目已经在扩展一个类,Activity 类。那么我该如何实施 Acra 项目呢?
正如他们以正常方式声明的那样,您必须创建一个 fe MyApplication 类并使用 Application 扩展它。由于我已经在扩展 Activity 类,所以我不知道该怎么做......他们说:如果您的应用程序已经包含 Application 子类,请将 ACRA 添加到此类;但是,我不知道该怎么做..
谢谢!
只需创建一个MyApplication
从 扩展的类Application
,按照他们所说的覆盖onCreate()
,然后转到您的 AndroidManifest。
您应该有一个<application>
with 值,例如android:label
or android:theme
。只需添加android:name=".MyApplication"
那里,你就可以开始了。
请记住,如果您的包裹是com.example.test
,MyApplication
则必须在那里。如果你想把 MyApplication 放在其他地方,你必须指出它在哪里。
例如,如果您的包 iscom.example.test
并且MyApplication
is in com.example.test.application
,则必须添加android:name=".application.MyApplication
到清单中。我强烈建议您只为您的应用程序使用一个包,因为它可以将您的项目原子化并使其更易于管理和维护。
我已经发布了详细的教程。这使您可以为现有项目设置 ACRA,并将其配置为向您的电子邮件地址发送电子邮件。 关联
由于清单而使用应用程序。在清单中,只需将其添加到应用程序标签中(其中包含所有活动):
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
我回答了这个问题,因为很久以前答案就来了,需要更新
需要一个应用程序子类来维护一个全局应用程序状态,并不是每个应用程序都必须对其进行子类化。如果您的应用还没有,您可以创建它。
例子:
/* do ACRA imports */
@ReportsCrashes(formKey = "x-x-x-x-x-x")
public class YourApplication extends Application{
public void onCreate(){
ACRA.init(this);
super.onCreate();
}
}
您还应该按照教程中的说明在清单文件中声明。