使用 ACRA 和 tracepot 作为后端
Using ACRA with tracepot as backend
作为学校项目的一部分,我刚刚完成了我的第一个 android 应用程序。我的一个朋友在尝试探索应用程序中的一项活动时遇到了问题。所以我搜索了解决方案每当他们碰巧修复错误时都会收到崩溃报告..我遇到了 ACRA ..我跟随其中一个 SO 线程将 ACRA 设置到我的应用程序..
结果:当崩溃发生时,gmail 应用程序在设备中启动,用户(如果他愿意)将通过电子邮件发送崩溃报告..Consedering并非所有用户都希望......我在一些开发人员使用 tracepot 的 SO 线程之一的评论中发现。
所以我使用他们的 link 来集成到 formUri 中,但是在 tracepot 上探索我的帐户我什么也没得到..我做错了什么(或者如果有比使用 tracepot 作为后端更好的解决方案,请 suggest/explain 或 link 很好的教程,谢谢!)
MyApplication.Java( 编辑后
@ReportsCrashes(
formUri = "https://collector.tracepot.com/79b1***",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text
)
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
CaocConfig.Builder.create()
//.errorActivity(CustomErrorActivity.class) //default: null (default error activity)
.apply();
// The following line triggers the initialization of ACRA
ACRA.init(this);
}
}
编辑:
logcat 中的消息如果我使用 http 和电子邮件:
09-17 18:37:33.700 14329-14812/ma.ac.iav.menunaviagtion:acra W/ACRA: ma.ac.iav.menunaviagtion reports will be sent by email (if accepted by user).
09-17 18:37:33.703 14329-14812/ma.ac.iav.menunaviagtion:acra I/ACRA: Sending report /data/user/0/ma.ac.iav.menunaviagtion/app_ACRA-approved/2018-09-17T18:37:33.441+01:00-IS_SILENT.stacktrace
如果我只使用 http :
09-17 22:47:00.648 20116-20137/ma.ac.iav.myapplication:acra E/ACRA: Failed to send crash report for /data/user/0/ma.ac.iav.myapplication/app_ACRA-approved/2018-09-17T22:44:52.199+00:00-IS_SILENT.stacktrace
实施:
compile 'ch.acra:acra:4.9.2'
LOGCAT F43nd1r
09-18 01:39:49.631 18508-18803/? E/AndroidRuntime: FATAL EXCEPTION: Thread-5
Process: ma.ac.iav.myapplication, PID: 18508
java.lang.InternalError: Thread starting during runtime shutdown
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:733)
at android.app.SharedPreferencesImpl.startLoadFromDisk(SharedPreferencesImpl.java:119)
at android.app.SharedPreferencesImpl.<init>(SharedPreferencesImpl.java:112)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:392)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:373)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.getLastCrashTimestamp(CustomActivityOnCrash.java:673)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.hasCrashedInTheLastSeconds(CustomActivityOnCrash.java:683)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.access0(CustomActivityOnCrash.java:52)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.uncaughtException(CustomActivityOnCrash.java:112)
at org.acra.builder.ReportExecutor.endApplication(ReportExecutor.java:269)
at org.acra.builder.ReportExecutor.dialogAndEnd(ReportExecutor.java:254)
at org.acra.builder.ReportExecutor.access0(ReportExecutor.java:42)
at org.acra.builder.ReportExecutor.run(ReportExecutor.java:217)
您没有将所有必填字段发送到 Tracepot。
- ANDROID_VERSION
- APP_VERSION_CODE
- APP_VERSION_NAME
- PACKAGE_NAME
- REPORT_ID
- STACK_TRACE
- USER_APP_START_DATE
- USER_CRASH_DATE
默认情况下,如果存在邮件配置,Acra 4 将通过邮件发送,仅此而已。
要同时使用两者,您必须配置 reportSenderFactories
.
400: Client error
表示 tracepot 拒绝了您的报告。这可能有多种原因。要找出问题所在,请在 ACRA.init
和 post 之前调用 ACRA.DEV_LOGGING = true;
所有 logcat 并使用 ACRA
标记。
另请注意ACRA4.9.2
不支持androidOreo及以上版本,建议至少升级到ACRA4.11
,或只升级到最新版本5.2.0
.
作为学校项目的一部分,我刚刚完成了我的第一个 android 应用程序。我的一个朋友在尝试探索应用程序中的一项活动时遇到了问题。所以我搜索了解决方案每当他们碰巧修复错误时都会收到崩溃报告..我遇到了 ACRA ..我跟随其中一个 SO 线程将 ACRA 设置到我的应用程序..
结果:当崩溃发生时,gmail 应用程序在设备中启动,用户(如果他愿意)将通过电子邮件发送崩溃报告..Consedering并非所有用户都希望......我在一些开发人员使用 tracepot 的 SO 线程之一的评论中发现。
所以我使用他们的 link 来集成到 formUri 中,但是在 tracepot 上探索我的帐户我什么也没得到..我做错了什么(或者如果有比使用 tracepot 作为后端更好的解决方案,请 suggest/explain 或 link 很好的教程,谢谢!)
MyApplication.Java( 编辑后
@ReportsCrashes(
formUri = "https://collector.tracepot.com/79b1***",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text
)
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
CaocConfig.Builder.create()
//.errorActivity(CustomErrorActivity.class) //default: null (default error activity)
.apply();
// The following line triggers the initialization of ACRA
ACRA.init(this);
}
}
编辑: logcat 中的消息如果我使用 http 和电子邮件:
09-17 18:37:33.700 14329-14812/ma.ac.iav.menunaviagtion:acra W/ACRA: ma.ac.iav.menunaviagtion reports will be sent by email (if accepted by user).
09-17 18:37:33.703 14329-14812/ma.ac.iav.menunaviagtion:acra I/ACRA: Sending report /data/user/0/ma.ac.iav.menunaviagtion/app_ACRA-approved/2018-09-17T18:37:33.441+01:00-IS_SILENT.stacktrace
如果我只使用 http :
09-17 22:47:00.648 20116-20137/ma.ac.iav.myapplication:acra E/ACRA: Failed to send crash report for /data/user/0/ma.ac.iav.myapplication/app_ACRA-approved/2018-09-17T22:44:52.199+00:00-IS_SILENT.stacktrace
实施:
compile 'ch.acra:acra:4.9.2'
LOGCAT F43nd1r
09-18 01:39:49.631 18508-18803/? E/AndroidRuntime: FATAL EXCEPTION: Thread-5
Process: ma.ac.iav.myapplication, PID: 18508
java.lang.InternalError: Thread starting during runtime shutdown
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:733)
at android.app.SharedPreferencesImpl.startLoadFromDisk(SharedPreferencesImpl.java:119)
at android.app.SharedPreferencesImpl.<init>(SharedPreferencesImpl.java:112)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:392)
at android.app.ContextImpl.getSharedPreferences(ContextImpl.java:373)
at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:167)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.getLastCrashTimestamp(CustomActivityOnCrash.java:673)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.hasCrashedInTheLastSeconds(CustomActivityOnCrash.java:683)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.access0(CustomActivityOnCrash.java:52)
at cat.ereza.customactivityoncrash.CustomActivityOnCrash.uncaughtException(CustomActivityOnCrash.java:112)
at org.acra.builder.ReportExecutor.endApplication(ReportExecutor.java:269)
at org.acra.builder.ReportExecutor.dialogAndEnd(ReportExecutor.java:254)
at org.acra.builder.ReportExecutor.access0(ReportExecutor.java:42)
at org.acra.builder.ReportExecutor.run(ReportExecutor.java:217)
您没有将所有必填字段发送到 Tracepot。
- ANDROID_VERSION
- APP_VERSION_CODE
- APP_VERSION_NAME
- PACKAGE_NAME
- REPORT_ID
- STACK_TRACE
- USER_APP_START_DATE
- USER_CRASH_DATE
默认情况下,如果存在邮件配置,Acra 4 将通过邮件发送,仅此而已。
要同时使用两者,您必须配置 reportSenderFactories
.
400: Client error
表示 tracepot 拒绝了您的报告。这可能有多种原因。要找出问题所在,请在 ACRA.init
和 post 之前调用 ACRA.DEV_LOGGING = true;
所有 logcat 并使用 ACRA
标记。
另请注意ACRA4.9.2
不支持androidOreo及以上版本,建议至少升级到ACRA4.11
,或只升级到最新版本5.2.0
.