Android ACRA Reporting



我试图在我的测试应用程序(Lollipop)中使用Android Studio中的ACRA获得基本报告。

到目前为止,我已经实现了如下:
  1. 在gradle中添加依赖

    compile 'ch.acra:acra:4.6.2'
    
  2. 添加了MyApplication,扩展了Application并添加了ReportsCrashes注释:

    @ReportsCrashes(
      resNotifTickerText = R.string.crash_notification_ticker_text,
      resNotifTitle = R.string.crash_notification_title,
      resNotifText = R.string.crash_notification_text,
      resNotifIcon = R.mipmap.error );
     public class MyApplication extends Application {
            private static final String TAG = MyApplication.class.getSimpleName();
             @Override
             public void onCreate(){
                 super.onCreate();
                 ACRA.init(this);
             }
         }
    

(BTW,抱歉上面的代码格式化,但StackOverflow拒绝正确格式化它的某些原因)

这是基于github中提供的ACRA文档https://github.com/ACRA/acra/wiki/BasicSetup

  • 在AndroidManifest中添加了应用程序名称和INTERNET权限

    <!-- add INTERNET permission -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- add application name -->
    <application
        android:name="MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

  • 我的主要活动只有一个按钮,当点击时,它会崩溃的应用程序,当它试图做除零

     public class MainActivity extends AppCompatActivity {
         public final static String TAG = MainActivity.class.getSimpleName();
         private Button btnError;
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
             btnError = (Button) findViewById(R.id.btnError);
             btnError.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     Toast.makeText(getApplicationContext(), getString(R.string.toast_app_crash), Toast.LENGTH_SHORT).show();
                     Runnable r = new Runnable() {
                         @Override
                         public void run() {
                             // this will crash your app throwing Arithmetic Exception
                             int number = 7 / 0;
                         }
                     };
                     Handler h = new Handler();
                     h.postDelayed(r, 2000);
                 }
             });
         }
     }
    
  • 我期待看到某种通知和某种报告生成,但我没有得到任何。我的应用程序只是在试图除以0的地方崩溃。

    我不知道我做错了什么。

    谢谢,

    您应该选择的通知类型

     mode = ReportingInteractionMode.TOAST,
       //Available : Dialog,Notification,Toast and Silent
        resToastText = R.string.crash_text_toast
    

    这是我在我的应用程序中使用的示例报告参数。

        @ReportsCrashes(
        formUri="",
    formUriBasicAuthLogin = "CloundantAuthLogin",
    formUriBasicAuthPassword = "CloundantAuthKeyPassword",
        reportType = org.acra.sender.HttpSender.Type.JSON,
        httpMethod = org.acra.sender.HttpSender.Method.PUT,
        customReportContent = { ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL,ReportField.DEVICE_FEATURES,
        ReportField.USER_APP_START_DATE,ReportField.USER_CRASH_DATE,ReportField.TOTAL_MEM_SIZE,ReportField.USER_COMMENT,
            ReportField.THREAD_DETAILS, ReportField.STACK_TRACE }, 
        mode = ReportingInteractionMode.DIALOG,
        includeDropBoxSystemTags  = true,
        resToastText = R.string.crash_toast_text, // optional, displayed as soon as the crash occurs, before collecting data which can take a few seconds
        resDialogText = R.string.crash_dialog_text,
        resDialogIcon = android.R.drawable.ic_dialog_info, //optional. default is a warning sign
        resDialogTitle = R.string.crash_dialog_title, // optional. default is your application name
        resDialogCommentPrompt = R.string.crash_dialog_comment_prompt, // optional. when defined, adds a user text field input with this text resource as a label
        resDialogOkToast = R.string.crash_dialog_ok_toast // optional. displays a Toast message when the user accepts to send a report.
        )
    

    使用的库:acra-4.6.2

    迄今为止最好的教程在这里:http://www.toptal.com/android/automated-android-crash-reports-with-acra-and-cloudant

    相关内容

    • 没有找到相关文章

    最新更新