2015-10-26 109 views
0

我想在我的测试应用程序(棒棒糖)中使用ACRA在Android Studio中获取基本报告。Android ACRA报告

到目前为止,我已经实现了以下内容:

  1. 在gradle这个

    添加扶养
    compile 'ch.acra:acra:4.6.2' 
    
  2. 添加MyApplication的延伸应用,并加入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); 
         } 
        } 
    

(顺便说一句,抱歉代码以上格式化,但StackOverflow的拒绝适当的格式化它由于某种原因)

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

  • 加入应用程序的名称和INTERNET权限AndroidManifest

    <!-- 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); 
          } 
         }); 
        } 
    } 
    
  • 我期待看到一些形式的通知和某种做到分工崩溃的应用程序报告生成,但我没有得到任何。我的应用程序在尝试除零的地方崩溃。

    我不知道我做错了什么。

    感谢,

    回答

    1

    类型的通知,你应该选择为

    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

    +0

    所以,这将让弹出对话框,它可以让我输入注释。但它在哪里发送?我在哪里看到它?谢谢 – pixel

    +1

    是的,你会得到对话框。它会被发送到“formUri”指向的任何地方。在上面的代码中是没有的。你应该把它指向你的崩溃服务器。 – William

    +0

    @William你会介意推荐一些我可以使用的好的免费崩溃服务器吗?谢谢 – pixel