Bugsnag crash monitoring and reporting tool for Android apps

Overview

Bugsnag error monitoring & exception reporter for Android

Documentation Build status

Get comprehensive Android crash reports to quickly debug errors.

Bugsnag's Android crash reporting library automatically detects crashes in your Android apps, collecting diagnostic information and immediately notifying your development team, helping you to understand and resolve issues as fast as possible.

Features

Getting started

  1. Create a Bugsnag account
  2. Complete the instructions in the integration guide to report unhandled exceptions thrown from your app
  3. Report handled exceptions using Bugsnag.notify
  4. Customize your integration using the configuration options

Support

Contributing

All contributors are welcome! For information on how to build, test and release bugsnag-android, see our contributing guide.

License

The Bugsnag Android notifier is free software released under the MIT License. See the LICENSE for details.

Comments
  • BeforeSend.run report.getError().getException() returns BugsnagException

    BeforeSend.run report.getError().getException() returns BugsnagException

    Expected behavior

    return original exception

    Observed behavior

    returns BugsnagException

    Steps to reproduce

    Use version 4.18+

    Version

    4.18+

    Additional information

    The return type of report.getError().getException() should either be a Throwable or a BugsnagException. Throwable is preferred because instanceof can be used to quickly and safely determine the exception type, whereas BugsnagException requires a string compare on the exception name.

    feature request released 
    opened by M66B 25
  • Cannot use two client instances with different API keys

    Cannot use two client instances with different API keys

    Expected behavior

    Let's say I create two distinct Bugsnag clients, like so:

    Client client1 = new Client(application, "key1", false);
    Client client2 = new Client(application, "key2", false)
    

    These two clients use two distinct keys, and are expected to upload errors to two distinct bugsnag projects.

    Observed behavior

    If there is no network when we try to notify and the errors get stored on the filesystem, the API keys stored in the errors will be ignored and the errors will be uploaded to the project of whichever client flushes first.

    Steps to reproduce

    • Turn of Wifi
    • Create a client instance with API KEY 1
    • Send an error to client (it gets stored because no wifi)
    • Kill the app
    • Start the app
    • Create a client instance with API KEY 2, get it to flush
    • => the crash 1 gets uploaded to project 2 instead of project 1.

    Version

    Still happening on master, all releases have this bug.

    Additional information

    At this line: https://github.com/bugsnag/bugsnag-android/blob/master/sdk/src/main/java/com/bugsnag/android/ErrorStore.java#L125

        private void flushErrorReport(File errorFile, ErrorReportApiClient errorReportApiClient) {
            try {
                Report report = new Report(config.getApiKey(), errorFile);
                errorReportApiClient.postReport(config.getEndpoint(), report,
                    config.getErrorApiHeaders());
    // ...
    

    The report is uploaded with the API Key from the config of the error store, not the API Key from that config that was used when the error was created (that config is actually stored in the error).

    Possible solutions

    1. Allow customizing the error store and session store folders. This would allow each client to store data in a distinct folder and avoid clients stepping over each other
    2. Read the content of the error before uploading it, to retrieve the proper API key. This is potentially risky.
    3. Fix this server side, check for Error file content with config.apiKey set to something different than the API Key that was used to upload.
    released 
    opened by pyricau 15
  • [Urgent] 20,000/day Production ANRs with new SessionTracker code

    [Urgent] 20,000/day Production ANRs with new SessionTracker code

    Behavior

    We (Airbnb) have received an enormous number of ANRs from the new SessionTracker code on the sessionStore lock between these two lines: https://github.com/bugsnag/bugsnag-android/blob/master/sdk/src/main/java/com/bugsnag/android/SessionTracker.java#L154 https://github.com/bugsnag/bugsnag-android/blob/master/sdk/src/main/java/com/bugsnag/android/SessionTracker.java#L107

    This is a high severity crash and we already have to do a cherry-pick to fix this so let us know what the solution is or we'll have to revert the new session tracking code and delay the use of the release dashboards feature again.

    Version

    4.2.2

    @BenSchwab @fractalwrench @kattrali

    opened by gpeal 15
  • Excessive ANR Errors on HUAWEI devices

    Excessive ANR Errors on HUAWEI devices

    Hi, we just shipped a new release of our app with the latest version (v4.13.0) of the Bugsnag library.

    We are noticing a lot of ANR exceptions coming exclusively from HUAWEI devices. The stacktraces have been relatively unhelpful. I noticed some of them happening when an activity calls onResume() and I noticed some others happening at random after the app has been in the background for a while (1 hour+).

    My thought is that HUAWEI protected apps / phone manager features are doing something menacing that slows down or stops processing which leads to these ANR errors popping up. I don't see any ANR errors popping up on the Play Store Console and no other devices have similar ANR errors.

    I don't have a HUAWEI device to test on. I am just going off what I see on our bugsnag dashboard from our production users.

    For now we are just going to ignore these errors. Maybe someone else can shed some light on this issue or report similar results.

    Thanks!

    opened by stephenruda 14
  • Add config option to disable the orientation sensor

    Add config option to disable the orientation sensor

    FairEmail is a privacy friendly email app and has a quite critical user base. It appeared that Bugsnag is using the accelerometer via the Android OrientationEventListener, which is unwanted in this app. I have disabled the listener with an ugly hack, but IMHO this should be possible by using the client configuration.

    Can this please be added?

    feature request released 
    opened by M66B 13
  • [NDK r10b] 4.9.2 is not sending native crash reports on all devices

    [NDK r10b] 4.9.2 is not sending native crash reports on all devices

    Expected behavior

    native crash reports should be sent to the server

    Observed behavior

    no crash report in dashboard

    Steps to reproduce

    cause a crash in native code

    Version

    4.9.2

    Additional information

    All tests have been run on armeabi-v7a builds on both 32bit and 64bit devices

    A 32bit build (x86) on an intel device (Nexus Player) was also tested and the report was sent to the dashboard but it had extra entries for bugsnag code in the stack trace: /data/app/com.sling.dev-HhT1kRrppLHTyD_iePSWfQ==/lib/x86/libbugsnag-ndk.so:36310bsg_unwind_stack_libunwind /data/app/com.sling.dev-HhT1kRrppLHTyD_iePSWfQ==/lib/x86/libbugsnag-ndk.so:35160bsg_unwind_stack /data/app/com.sling.dev-HhT1kRrppLHTyD_iePSWfQ==/lib/x86/libbugsnag-ndk.so:33868bsg_handle_signal /system/bin/app_process32:101120xf417f780 /system/lib/libc.so:1260480xf0b29c60 ../../../build/jenkins-slave/workspace/AdaptivePlayer-Android-Test/src/native/integrations/AVController/MovePlayerController.cpp:1439eventListener ../../../build/jenkins-slave/workspace/AdaptivePlayer-Android-Test/src/native/integrations/Android/jni/MovePlayerControllerJni.cpp:68Java_com_echostar_apsdk_MovePlayerController_nativeInit /data/app/com.sling.dev-HhT1kRrppLHTyD_iePSWfQ==/oat/x86/base.odex:670275oatexec

    Can't comment on Issues?

    Some users have been unable to comment on Github issues when an adblocker extension is enabled. We recommend temporarily disabling the extension, or if that fails, contacting [email protected].

    opened by ellsworthrw 13
  • Manually update device data

    Manually update device data

    Bugsnag's default is to be as passive as possible as it is obviously desirable that including the library in one's app has a very low impact.

    This means that currently Bugsnag passively probes whether a device is rooted or not, in practice this means that the bug report indicator for "rooted" is not necessarily reliable. If an app deals with root, the app could already be doing an active root-check. It would make the bug reports more accurate if we could manually update this value then.

    I think you can manually use Error.addToTab("device", "jailbroken", <boolean>) to change the value, but a less "hacky" way might be useful, e.g. making DeviceData editable. Currently DeviceData is initialized on Client init and not changeable: https://github.com/bugsnag/bugsnag-android/blob/752d748ac67b24d8de96fec6a382cf922098a468/sdk/src/main/java/com/bugsnag/android/Client.java#L142

    Looking for some feedback on this idea.

    released 
    opened by d4rken 13
  • Refactoring `User´

    Refactoring `User´

    • Introduced builder pattern for User, User is now immutable.
    • Reduced duplicate/simplified code related to User and moved User related implementation details from Client to `User´
    • Removed methods that were just used internally and migrated them to Client.setUser(user)
    • Tagged/deprecated all public APIs that set specific User fields. In the next semvar major release these could be removed.
    • Added unit tests for the new code and adapted the existing tests such that both the new and the now deprecated methods are covered.
    1. Cleaner API after the next major release removes the deprecated methods
    2. Easier future SDK updates. Want to add new User information? Just update User.
    3. User is now exposed via Client.getUser() which solves my issue in #265

    @fractalwrench

    opened by d4rken 13
  • Capture trace of error reporting thread and identify with boolean flag

    Capture trace of error reporting thread and identify with boolean flag

    Goal

    Captures the trace of Thread.currentThread(), which was previously omitted, and to identify it with a boolean flag in the serialised JSON.

    Changeset

    • Alter ThreadState to stop removing the current thread from serialisation
    • Conditionally write errorReportingThread boolean flag by checking thread ID

    Tests

    Added unit tests for general ThreadState serialisation, and for checking that the current thread is now captured. Ran mazerunner locally, tested with dashboard.

    Review

    For the submitter, initial self-review:

    • [ ] Commented on code changes inline explain the reasoning behind the approach
    • [x] Reviewed the test cases added for completeness and possible points for discussion
    • [x] A changelog entry was added for the goal of this pull request
    • [x] Check the scope of the changeset - is everything in the diff required for the pull request?
    • This pull request is ready for:
      • [x] Initial review of the intended approach, not yet feature complete
      • [x] Structural review of the classes, functions, and properties modified
      • [x] Final review

    For the pull request reviewer(s), this changeset has been reviewed for:

    • [x] Consistency across platforms for structures or concepts added or modified
    • [x] Consistency between the changeset and the goal stated above
    • [x] Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
    • [x] Usage friction - is the proposed change in usage cumbersome or complicated?
    • [x] Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
    • [x] Concurrency concerns - if components are accessed asynchronously, what issues will arise
    • [ ] Thoroughness of added tests and any missing edge cases
    • [x] Idiomatic use of the language
    opened by fractalwrench 12
  • Dex doesn't like Async. Proguard config problem?

    Dex doesn't like Async. Proguard config problem?

    warning: Ignoring InnerClasses attribute for an anonymous inner class
    (com.bugsnag.android.Async$1) that doesn't come with an
    associated EnclosingMethod attribute. This class was probably produced by a
    compiler that did not target the modern .class file format. The recommended
    solution is to recompile the class from source, using an up-to-date compiler
    and without specifying any "-target" type options. The consequence of ignoring
    this warning is that reflective operations on this class will incorrectly
    indicate that it is *not* an inner class.
    
    opened by JakeWharton 12
  • Remove unsupported armeabi from abiFilters

    Remove unsupported armeabi from abiFilters

    Trying to build or open the project in Android Studio is failing with:

    ABIs [armeabi] are not supported for platform. Supported ABIs are [arm64-v8a, armeabi-v7a, x86, x86_64].
    

    The reason is armeabi was removed from the NDK. See NDK changelog

    Support for ARMv5 (armeabi), MIPS, and MIPS64 has been removed. Attempting to build any of these ABIs will result in an error.

    Also see:

    • https://github.com/android/ndk/issues/961
    • https://github.com/android/ndk/issues/911
    • https://stackoverflow.com/questions/52233971/abis-armeabi-mips-are-not-supported-for-platform-android-ndk

    There have been no new devices that only support armeabi but not armeabi-v7a for 10 years or so.

    This PR removes the references to armeabi from the default list of abiFilters, allowing the build to pass again.

    @kattrali - You already removed it from example app as part of #493, but in a0519a4cae3624a1b1c4ec05cd9659ca1f0a4a7d you're mentioning "Needed for lib release" - Can you elaborate on it?

    feature request released 
    opened by friederbluemle 11
  • Event delivery with an event with setUnhandled(true) should behave as an unhandled event delivery

    Event delivery with an event with setUnhandled(true) should behave as an unhandled event delivery

    Goal

    In the case where client.notify is called and the event is modified to be treated as unhandled:

    client.notify(throwable, new OnErrorCallback() {
          @Override public boolean onError(@NonNull Event event) {
            event.setUnhandled(true);
           ...
          }
        });
    

    we should cache the event, similar to how it is done for an unhandled exception. With an unhandled exception, the app's availability will cease - and if we are marking an event as unhandled, we are indicating this will be the case.

    We use our own default exception handler which allows us to customize crash handling and send crashes to distinct destinations. Using the bugsnag client with client.notify with setUnhandled = true as part of that handler and being able to rely upon similar behavior as the bugsnag default exception handler rather than forward to the bugsnag exception handler would simplify the structure of our code, and remove the hacky bugsnag workarounds we've had to implement.

    Design

    Change delivery logic to view events marked as unhandled to behave as a typical unhandled exception in bugsnag.

    Changeset

    Testing

    feature request backlog 
    opened by mutexkid 6
  • Invalid grouping of native crashes coming from a dynamic library

    Invalid grouping of native crashes coming from a dynamic library

    Description

    Bugsnag grouping of crashes does not work well for Android native crashes that happen inside of dynamically loaded libraries. Bugsnag seems to be using a whole path for where the error happens when grouping events into errors and the path seems to depend on the device's manufacturer. This leads to a situation in which the same crash is recognized by Bugsnag as a few separate errors which makes following up on the underlying crash hard/confusing.

    Example

    Let's take a look at one of the native crashes that's being reported by Bugsnag as two separate errors - even though bought of them represent exactly the same crash.

    The last two stacktrace entries in Bugsnag error 1 (coming from Google pixel phones):

    /apex/com.android.runtime/lib64/bionic/libc.so:536992 abort
    /data/app/me.lyft.android-e5wo6hyI4Ov_FwVO9wyp8g==/split_config.arm64_v8a.apk!/lib/arm64-v8a/libenvoy_jni.so:17669316 Envoy::Network::DnsResolverImpl::AddrInfoPendingResolution::availableInterfaces() [/data/app/me.lyft.android-e5wo6hyI4Ov_FwVO9wyp8g==/split_config.arm64_v8a.apk!/lib/arm64-v8a/libenvoy_jni.so:17669316 Envoy::Network::DnsResolverImpl::AddrInfoPendingResolution::availableInterfaces()]()
    

    The last two stacktrace entries in Bugsnag error 2 (coming from Samsung 95%/LG 5%):

    /apex/com.android.runtime/lib64/bionic/libc.so:325724 abort
    /data/app/~~A9JzPlzk_YgX3GgLEeqI4A==/me.lyft.android-OUs7t61Y4otTWqNTPl8p4A==/split_config.arm64_v8a.apk!/lib/arm64-v8a/libenvoy_jni.so:17669316 Envoy::Network::DnsResolverImpl::AddrInfoPendingResolution::availableInterfaces()
    

    Describe the solution you'd like Stop using the whole path when grouping Bugsnag events - use the last path component only.

    Describe alternatives you've considered N/A

    Additional context An example stacktrace entries come from a crash that happens in an Android app running Envoy Mobile networking library. It's open source and available at https://github.com/envoyproxy/envoy-mobile in case it's helpful.

    opened by Augustyniak 6
  • Support blocking notify

    Support blocking notify

    Description

    We've set up Bugsnag in our UI tests to report failures to a central place and track crashes that cause random failures / flaky tests in CI. We call Bugsnag.notify() to report those.

    Unfortunately, Bugsnag.notify() is async by nature, so if the test finishes before the upload then the VM is killed and the app is uninstalled, so we sometimes never get crash reported. I fixed this with some reflection hack to reach into Bugsnag's internals for now.

    Ideally, we'd either get a new Client.notifyBlocking() API, or a callback based API to know when the provided throwable is done being uploaded.

    feature request backlog 
    opened by pyricau 4
  • Add security patch level to metadata?

    Add security patch level to metadata?

    Description

    My Android Bugsnag crash reports include the integer Android version, i.e. Android 11, but they don't include the security patch version; this would be useful to have when diagnosing whether an Android security patch is the cause of a crash/exception. Apparently this was added in API level 23: https://developer.android.com/reference/android/os/Build.VERSION#SECURITY_PATCH

    Describe the solution you'd like

    Please add SECURITY_PATCH to the default report metadata.

    Describe alternatives you've considered I could probably figure out how to add it manually but this seems like the correct default.

    feature request backlog 
    opened by machty 1
  • Background ANRs are not tracked

    Background ANRs are not tracked

    The SIGQUIT-based ANR tracker that's present in the library doesn't track ANRs that happen in background if user has "Show background ANRs" switched off (which is the default value) in Developer options.

    Any workaround for this?

    Logs when the ANR occurs (without any dialog):

    Thread[4,tid=14199,WaitingInMainSignalCatcherLoop,Thread*=0x712fa7be90,peer=0x12c40cd8,"Signal Catcher"]: reacting to signal 3
    I  Wrote stack traces to tombstoned
    
    Process com.my.package (PID: 14189) ended
    
    feature request backlog 
    opened by vibin 2
  • Add option to prevent connecting and sending data on metered connections

    Add option to prevent connecting and sending data on metered connections

    Some people are on tight data bundles or allowances, for example people an ships relying on satellite communication. For those people every byte counts / is expensive.

    They would highly appreciate an option to disable / defer sending Bugsnag data when there is a metered internet connection only (generally mobile data or paid WiFi hotspots).

    This could be a simple property of com.bugsnag.android.Configuration checked by com.bugsnag.android.DefaultDelivery.

    feature request backlog 
    opened by M66B 5
Releases(v5.28.3)
  • v5.28.3(Nov 16, 2022)

  • v5.28.2(Nov 8, 2022)

    Bug fixes

    • Fixed a bug that could sometimes cause native crashes when adding or clearing feature flags #1777
    • Nested metadata is now correctly subject to the Configuration.setMaxStringValueLength setting #1778
    Source code(tar.gz)
    Source code(zip)
  • v5.28.1(Oct 19, 2022)

    Bug fixes

    • Fixed rare thread-starvation issue where some internal failures could lead to deadlocks. This was most noticeable when attempting to call Bugsnag.start on an architecture (ABI) that was not packaged in the APK, and lead to an ANR instead of an error report. #1768
    Source code(tar.gz)
    Source code(zip)
  • v5.28.0(Oct 13, 2022)

    Enhancements

    • Bugsnag now supports up to 500 breadcrumbs, with a default max of 100. Note that breadcrumbs will be trimmed (oldest first) if the payload exceeds 1MB. #1751

    Bug fixes

    • Fixed very rare crashes when attempting to unwind NDK stacks over protected memory pages #1761
    Source code(tar.gz)
    Source code(zip)
  • v5.27.0(Oct 6, 2022)

    Enhancements

    • Setting Configuration.attemptDeliveryOnCrash will cause Bugsnag to attempt error delivery during some crashes. Use of this feature is discouraged, see the method JavaDoc for more information. #1749
    Source code(tar.gz)
    Source code(zip)
  • v5.26.0(Aug 18, 2022)

    Enhancements

    • Introduced bugsnag_refresh_symbol_table and BugsnagNDK.refreshSymbolTable to allow NDK apps to force a refresh of cached debug information used during a native crash. This new API is only applicable if you are using dlopen or System.loadLibrary after startup, and experiencing native crashes with missing symbols. #1731

    Bug fixes

    • Non-List Collections are now correctly handled as OPAQUE values for NDK metadata #1728
    Source code(tar.gz)
    Source code(zip)
  • v5.25.0(Jul 19, 2022)

    Enhancements

    • Feature flags can now be accessed in the onSend and onError callbacks #1720
    • Feature flags are now kept in and trimmed in order of insertion or modification rather than in alphabetical order #1718
    Source code(tar.gz)
    Source code(zip)
  • v5.24.0(Jun 30, 2022)

    Enhancements

    • Complex metadata (nested structures such as maps & lists) added in Java/Kotlin is now fully preserved in NDK errors #1715
    • Configuration.discardClasses now applies to NDK errors #1710
    Source code(tar.gz)
    Source code(zip)
  • v5.23.1(Jun 23, 2022)

  • v5.23.0(Jun 20, 2022)

    Enhancements

    • Added configuration option to control whether internal errors are sent to Bugsnag #1701

    Bug fixes

    • Fixed Bugsnag interactions with the Google ANR handler on newer versions of Android #1699
    • Overwriting & clearing event metadata in the NDK plugin will no longer leave phantom values #1700
    Source code(tar.gz)
    Source code(zip)
  • v5.22.4(May 24, 2022)

  • v5.22.3(May 12, 2022)

    Bug fixes

    • Fixed concurrency bug that could be triggered via the React Native plugin #1679
    • Correctly report device.locationStatus on Android 12 onwards using LocationManager.isLocationEnabled 1683
    • Small performance improvements to Bugnag.start #1680
    Source code(tar.gz)
    Source code(zip)
  • v5.22.2(May 4, 2022)

  • v5.22.1(Apr 28, 2022)

    Enhancements

    • Max reported threads can now be configured using manifest meta-data "com.bugsnag.android. MAX_REPORTED_THREADS" #1655
    • Small improvement to startup performance (Bugsnag.start) #1648
    Source code(tar.gz)
    Source code(zip)
  • v5.22.0(Mar 31, 2022)

    Enhancements

    • Added Bugsnag.isStarted() to test whether the Bugsnag client is in the middle of initializing. This can be used to guard uses of the Bugsnag API that are either on separate threads early in the app's start-up and so not guaranteed to be executed after Bugsnag.start has completed, or where Bugsnag may not have been started at all due to some internal app logic. slack-jallen:#1621 #1640

    • Events and Sessions will be discarded if they cannot be uploaded and are older than 60 days or larger than 1MB #1633

    Bug fixes

    • Fixed potentially thread-unsafe access when invoking Bugsnag static methods across different threads whilst Bugsnag.start is still in-flight. It is now safe to call any Bugsnag static method once Bugsnag.start has begun executing, as access to the client singleton is controlled by a lock, so the new isStarted method (see above) should only be required where it cannot be determined whether the call to Bugsnag.start has begun or you do not want to wait. #1638
    • Calling bugsnag_event_set_context with NULL context correctly clears the event context again #1637
    Source code(tar.gz)
    Source code(zip)
  • v5.21.0(Mar 17, 2022)

    Enhancements

    • Fix inconsistencies in stack trace quality for C/C++ events. Resolves a few cases where file and line number information was not resolving to the correct locations. This change may result in grouping changes to more correctly highlight the root cause of an event. #1605 #1606

    Bug fixes

    • Fixed an issue where an uncaught exception on the main thread could in rare cases trigger an ANR. #1624
    Source code(tar.gz)
    Source code(zip)
  • v5.20.0(Mar 10, 2022)

    Enhancements

    • The number of threads reported can now be limited using Configuration.setMaxReportedThreads (defaulting to 200) #1607

    • Improved the performance and stability of the NDK and ANR plugins by caching JNI references on start #1596 #1601

    Source code(tar.gz)
    Source code(zip)
  • v5.19.2(Jan 31, 2022)

  • v5.19.1(Jan 21, 2022)

  • v5.19.0(Jan 12, 2022)

    • New APIs to support forthcoming feature flag and experiment functionality. For more information, please see https://docs.bugsnag.com/product/features-experiments.

    Enhancements

    • Explicitly define Kotlin api/language versions #1564

    • Build project with Kotlin 1.4, maintain compat with Kotlin 1.3 #1565

    Source code(tar.gz)
    Source code(zip)
  • v5.18.0(Jan 6, 2022)

    Enhancements

    • Improve the memory use and performance overhead when handling the delivery response status codes #1558

    • Harden ndk layer through use of const keyword #1566

    Bug fixes

    • Delete persisted NDK events earlier in delivery process #1562

    • Add null checks for strlen() #1563

    • Catch IOException when logging response status code #1567

    Source code(tar.gz)
    Source code(zip)
  • v5.17.0(Dec 8, 2021)

    Enhancements

    • Bump compileSdkVersion to apiLevel 31 #1536

    Bug fixes

    • Flush in-memory sessions first #1538

    • Avoid unnecessary network connectivity change breadcrumb #1540 #1546

    • Clear native stacktrace memory in bugsnag_notify_env before attempting to unwind the stack #1543

    Source code(tar.gz)
    Source code(zip)
  • v5.16.0(Nov 29, 2021)

    Bug fixes

    • Increase resilience of NDK stackframe method capture #1484

    • redactedKeys now correctly apply to metadata on Event breadcrumbs #1526

    • Improved the robustness of automatically logged ERROR breadcrumbs #1531

    • Improve performance on the breadcrumb storage "hot path" by removing Date formatting #1525

    Source code(tar.gz)
    Source code(zip)
  • v5.15.0(Nov 4, 2021)

    Bug fixes

    • Avoid reporting false-positive background ANRs with improved foreground detection #1429

    • Prevent events being attached to phantom sessions when they are blocked by an OnSessionCallback #1434

    • Plugins will correctly mirror metadata added using addMetadata(String, Map) #1454

    Source code(tar.gz)
    Source code(zip)
  • v5.14.0(Sep 29, 2021)

  • v5.13.0(Sep 22, 2021)

  • v5.12.0(Aug 26, 2021)

    • The app.lowMemory value always report the most recent onTrimMemory/onLowMemory status #1342

    • Added the app.memoryTrimLevel metadata to report a description of the latest onTrimMemory status #1344

    • Added STATE Breadcrumbs for onTrimMemory events #1345

    • The device.totalMemory and device.freeMemory values report device-level memory, and app.memoryUsage, app.totalMemory, app.app.freeMemory, and app.memoryLimit report VM level memory status #1346

    Source code(tar.gz)
    Source code(zip)
  • v5.11.0(Aug 5, 2021)

  • v5.10.1(Jul 15, 2021)

  • v5.10.0(Jul 14, 2021)

    Enhancements

    • Capture process name in Event payload #1318

    Bug fixes

    • Avoid unnecessary BroadcastReceiver registration for monitoring device orientation #1303

    • Register system callbacks on background thread #1292

    • Fix rare NullPointerExceptions from ConnectivityManager #1311

    • Respect manual setting of context #1310

    • Handle interrupt when shutting down executors #1315

    • React Native: allow serializing enabledBreadcrumbTypes as null #1316

    Source code(tar.gz)
    Source code(zip)
Sherlock reports any crash that occurs in your application

Sherlock Sherlock reports any crash that occurres in your application as a notification. You just need to initialize Sherlock at the start of your app

Ajit Singh 103 Nov 25, 2022
HockeyApp was retired and the SDKs are deprecated. Please use App Center instead.

Version 5.2.0 HockeySDK-Android implements support for using HockeyApp in your Android applications. The following features are currently supported: C

Bit Stadium GmbH 280 Dec 13, 2022
In-app feedback and bug reporting tool for apps.

Instabug Android SDK Instabug is an in-app feedback and bug reporting tool for mobile apps. With just a simple shake, your users or beta testers can r

Instabug 171 Dec 22, 2022
Added more features to app's crash dialog, fixed custom rom deleted dialog, the best experience to Android developer.

AppErrorsTracking 应用异常跟踪 Added more features to app's crash dialog, fixed custom rom deleted dialog, the best experience to Android developer. 为原生 FC

狐狸派 83 Jan 8, 2023
Sherlock reports any crash that occurs in your application

Sherlock Sherlock reports any crash that occurres in your application as a notification. You just need to initialize Sherlock at the start of your app

Ajit Singh 103 Nov 25, 2022
A simple screen that is shown when your app gets crashed instead of the normal crash dialog. It's very similar to the one in Flutter.

Red Screen Of Death What A simple screen that is shown when your app gets crashed instead of the normal crash dialog. It's very similar to the one in

Ahmad Melegy 178 Dec 9, 2022
A library to quickly and easily enable multiple monitoring & support platforms for your mobile apps

You have a small team. Setting up crash reporting tools, event tracking tools, and log management services is not what you want to spend your hours do

Percolate 65 Aug 8, 2022
Monitoring water tanker level using NodeMCU ESP8266 and HC-SR04P Ultrasonic Sensor and broadcasting it using a simple HTTP server inside NodeMCU ESP8266 and show data in an Android App

WaterLevel Preface This project aims to finding a tanker water level using NodeMCU with ESP8266 core and HC-SR04P Ultrasonic sensor and broadcasting i

YaMiN 12 Dec 20, 2022
A basic chart written by kotlin. Support animation loading, touch event monitoring and JSON data.

A basic chart written by kotlin. Support animation loading, touch event monitoring and JSON data.

null 2 Dec 21, 2022
Utility for monitoring Genshin Impact in-game status, built with Jetpack Compose, Accompanist, and more

yumetsuki An utility app for monitoring in-game status on Genshin Impact like resin status, realm currency, expedition, daily commission status, etc.

Nauval Rizky 2 Nov 1, 2022
Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors

Environmental-Monitoring-Android-App - This Android App is used to monitor environmental parameters data from remote sensors. Parameters includes but not limited to temperature, humidity, air quality, level of Ionizing radiation, ...

Francisco Pascal Elias TAMBASAFIDY 0 Jan 4, 2022
Android app for monitoring web services. Notifies you of any HTTP or Onion destination not being available.

Webmon Monitor web services and get notified, if a service becomes unavailable. EARLY BIRD DOWNLOAD App Features Simple UI. No login required. Get not

null 36 Dec 29, 2022
Simple kafka client for monitoring topic events. Client has UI powered by Darklaf

kafka-client Simple kafka client for monitoring topic values. How to start $ java -jar kafka-client-1.0.jar How to use specify kafka hosts in config.y

Salavat 0 Jun 3, 2022
Pulseq is a service for monitoring activity from all your devices.

Pulseq is inspired by technically-functional/heartbeat, which is licensed under the ISC license. The main idea of pulseq is to provide statistics on y

d1snin-dev 5 Sep 8, 2022
Project developed for monitoring hard braking zones as a scientific initiation at Facens in the period 2021/2022

@hard-braking-zones/location Project developed for monitoring hard braking zones as a scientific initiation at Facens in the period 2021/2022. Install

Caique Torres 2 Jan 25, 2022
Health Monitoring App WearOS With Kotlin

HealthMonitoringAppWatchOS This application collects health information in real-time and sends it over to AWS to analyze for abnormalities. Overview T

UBC Cloud Innovation Centre, powered by AWS 0 Feb 6, 2021
Health Monitoring App WearOS With Kotlin

HealthMonitoringAppWearOS This application collects health information in real-time and sends it over to AWS to analyze for abnormalities. Overview Th

Derrick Cheng 0 Dec 15, 2021
Kamper - a small KMM/KMP library that provides performance monitoring for your app.

?? Kamper Kamper is a KMP/KMM library that implements a unified way to track application performances. The solution is based on plugin design patterns

S. Mellouk 31 Jun 10, 2022