使用 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。

https://tracepot.uservoice.com/knowledgebase/articles/355272-what-are-the-required-fields-acra-needs-to-send

  • 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.