This gives a high-level overview of the major components of the bugsnag-android project. Most of these are documented in further detail on specific pages of the docs.
The project consists of 6 Gradle modules, which are linked to below:
- bugsnag-android-core - contains the core functionality required to capture and deliver JVM errors to Bugsnag.
- bugsnag-plugin-android-ndk - contains optional functionality that installs signal handlers and captures NDK errors.
- bugsnag-plugin-android-anr - contains optional functionality that installs a signal handler to capture ANR errors.
- bugsnag-plugin-android-okhttp - contains optional functionality for OkHttp.
- bugsnag-plugin-android-exitinfo - contains optional functionality to collect additional data using historical process exit reasons.
- bugsnag-plugin-react-native - contains optional functionality that serializes information into a format that can be understood by the React Native bridge.
- bugsnag-android - an anchor package which allows users to pull in all the required modules.
- bugsnag-android-ndk - an anchor package which allows users to pull in all the required modules. Published for legacy reasons.
An example app is provided which allows for customers (and Bugsnag maintainers) to test Bugsnag's functionality against crashes. It is an independent gradle project which is stored in the same repository.
The project is containerized with dockerfiles. These are used to test the project on CI with Buildkite.
The project uses one git submodule to access libunwindstack, which is used for capturing NDK stacktraces.
Bugsnag makes extensive use of E2E testing with mazerunner, which is our custom black-box testing framework written in Ruby.
The features directory contains test fixtures that run crashy code against tests written in cucumber. These verify whether Bugsnag captures appropriate information in crashy scenarios.