Search code examples
androidcrash-reportshockeyapp

Sending Crash Reports using ONLY HockeyApp tool(Android)


I want to use HockeyApp tool to send an crash report. So I am new to this crash reports. I have looked through these website but nothing get's in my mind.I tried setup as per instruction they have shown.

But was unable to receive crash reports in website tool. So Can any one provide an example for crash reporting tool using only Hockey App.

test1.java

 public class test1 extends AppCompatActivity {

    private static final String TAG = "test1";
    private static final String APP_ID = "2aac21928b1242a19fa49ae4cf69a552";
    private Button errorBtn;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        errorBtn = (Button) findViewById(R.id.showSnackbarButton);
        setContentView(R.layout.activity_test1);
        textView=(TextView)findViewById(R.id.someText);

        errorBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {                
                File file = new File("E://file.txt");
                try {
                    FileReader fr = new FileReader(file);
                } catch (FileNotFoundException e) {
                    Log.d(TAG, "FilenotFound_Demo");
                    e.printStackTrace();
                }
            }
        });
        checkForUpdates();
    }

    @Override
    public void onResume() {
        super.onResume();
        // ... your own onResume implementation
        checkForCrashes();
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterManagers();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        unregisterManagers();
    }


    private void checkForCrashes() {
        CrashManager.register(this, APP_ID, new CrashManagerListener() {
            public boolean shouldAutoUploadCrashes() {
                return true;
            }
        });

    }

    private void checkForUpdates() {
        // Remove this for store builds!
        UpdateManager.register(this,APP_ID);
    }

    private void unregisterManagers() {
        UpdateManager.unregister();
    }
}

My build Module:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.0"
    defaultConfig {
        applicationId "com.example.river.tessting"
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        manifestPlaceholders = [HOCKEYAPP_APP_ID: "2aac21928b1242a19fa49ae4cf69a552"]
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'net.hockeyapp.android:HockeySDK:4.1.5'
    testCompile 'junit:junit:4.12'
}
repositories {
    jcenter()
}

Solution

  • Crash reports are sent the next time the app starts when you crash your app.

    Code Snippet for triggering UnhandledException

            Button crashBtn = (Button) findViewById(R.id.crash_Btn);
            crashBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    throw new NullPointerException();
                }
            });
    

    HockeyApp don't support handledException on Android. But you can use the UserMetrics to track it as a workaround.

    Use Custom Event to track HandledException information :

        Button handledException = (Button) findViewById(R.id.handledException_Btn);
        handledException.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    throw new NullPointerException();
                }catch (Exception e){
    
                    // add this wherever you want to track a custom event and attach properties or measurements to it
                    HashMap<String, String> properties = new HashMap<>();
                    properties.put("StackTrace", e.getStackTrace().toString());
                    properties.put("Cause", e.getLocalizedMessage());
    
                    HashMap<String, Double> measurements = new HashMap<>();
                    measurements.put("YOUR_Measurement", 1.0);
    
                    MetricsManager.trackEvent("YOUR_EVENT_NAME", properties, measurements);
    
                }
    
            }
        });
    

    But, on HockeyApp dashboard you only can see the event name in Events tab. To find the properties of custom events, you have to link to Application Insight. HockeyApp has the documentation on this which you can refer to.