Skip to main content

Android SDK Features

The Memfault Android SDK collects many types of data from a device. Below is a description of each, and any caveats to their availability.

The Quickstart APK can collect a subset of data compared to the full SDK - this is referenced below.

โŒNot supported
โœ…Supported
๐ŸงตRequires optional AOSP patch
โ˜‘Partial support
๐Ÿ—‘Deprecated
FeatureQuickstart APKFull Android SDKFleet Sampling Aspect
Core Metrics

Battery Life, Stable Hours and Connectivity Core Metrics are collected by Bort. These are automatically processed to provide a set of key insights ("Device Vitals") across your fleet. See documentation.

โœ…โœ…Debugging + Monitoring
OTA

The Bort OTA update client is not available in the Android Quickstart APK (several permissions and SELinux configurations are not available). See documentation.

โŒโœ…N/A
Periodic Log Collection

The Android SDK can collect logcat logs periodically. This is done by either the Bort app or the Usage Reporter app, depending on Android OS version. See documentation.

Android 8-12 โœ…
Android 13+ โŒ

โœ…Debugging + Logging
Continuous Log Collection

The MemfaultDumpster system service continually reads from logcat โ€” this ensures that no logs are lost if a log buffer expires. See documentation.

โŒ

Android 8-10 ๐Ÿงต
Android 11+ โœ…

Debugging + Logging

Battery Metrics (when device has a battery and is charging/discharging)

Bort collects metrics from the Android batterystats service, once per Heartbeat (usually every hour). See documentation.

โœ…โœ…Debugging + Monitoring

Battery Metrics (when device is powered-and-not-charging, or does not have a battery)

Battery metrics are also available when a device is not discharging/discharging, or when the device does not have a battery, when applying an optional AOSP patch. This may seem unnecessary, but batterystats reports many interesting "related" metrics such as Wi-Fi, Doze, wakelocks, package installs, and more, which can be useful even when not using battery. See documentation.

โŒ๐ŸงตDebugging + Monitoring
Metrics

Metrics can be reported using our Reporting library from any app or native service on the device. The Android Quickstart APK only supports metrics added using the Kotlin/Java libraries (i.e. not using C/C++ libraries). See documentation.

โ˜‘โœ…Debugging + Monitoring
High-Resolution Telemetry

All reported metrics (both built-in and custom) are displayed on the device timeline in high resolution. See documentation.

โ˜‘โœ…Debugging
Java App Crashes

Java app crashes are collected from DropBoxManager.

โœ…โœ…Debugging
Tombstones (Native Crashes)

Tombstones (native service or application crashes) are collected from DropBoxManager.

โœ…โœ…Debugging
Tombstone symbolication

Native stacktraces can be symbolicated in the Memfault dashboard (if symbols have been uploaded using the CLI) when this optional AOSP patch is applied. This adds the GNU Build ID to every stack frame.

โŒ

Android 8-9 โŒ
Android 10+ ๐Ÿงต

Debugging
ANRs

ANRs (Application Not Responding errors) are collected from DropBoxManager.

โœ…โœ…Debugging
Last KMSG

The last KMSG logs (kernel logs before a device crash/kernel panic) are collected from DropBoxManager.

โœ…โœ…Debugging
WTFs

WTFs (What a Terrible Failure โ€” Log.wtf) are collected from DropBoxManager.

โœ…โœ…Debugging
Reboots

Bort will check /proc/sys/kernel/random/boot_id on start and create a reboot event if changed. See documentation.

โŒโœ…N/A
Reboot Reason

The reboot reason is only available from Android 9+ (sourced from sys.boot.reason). See documentation.

โŒ

Android 8 โŒ
Android 9+ โœ…

N/A
Device Temperature Metrics

The Usage Reporter app collects device/CPU temperature metrics from HardwarePropertiesManager. See documentation.

โŒโœ…Debugging + Monitoring
Connectivity Metrics

The Android Quickstart APK will only capture connectivity changes while the Bort app is running. See documentation.

โ˜‘๏ธโœ…Debugging + Monitoring
Sysprop Metrics

The Android Quickstart APK can only capture sysprops that it has the appropriate SELinux permission to read. See documentation.

โ˜‘๏ธโœ…Monitoring
Other Built-in Metrics

Bort collects network usage, app versions, storage usage, and more. See documentation.

โœ…โœ…Debugging + Monitoring
SDK Settings Sync

Bort will periodically fetch the scrubbing rules, SDK Settings, and fleet sampling configuration from Memfault, allowing remote configuration of SDK behaviour and data collection.

โœ…โœ…N/A
Client/Server Mode

If multiple Android devices are connected together, the Android SDK can proxy data between them for upload from a single device. See documentation.

โŒโœ…N/A
Bugreport

The Android SDK can capture bugreports, containing full dumpsys/dumpstate output, either periodically or on-demand. We recommend against using bugreports in production, except as a last resort. See documentation.

โŒโœ…Debugging

Minimal Mode Bugreport
A minimal bugreport captures only a small subset of a full bugreport. An optional AOSP patch is require to enable this mode. See documentation.

โŒ๐ŸงตDebugging
Custom Events

Custom Events are deprecated, and replaced by Metric Events. See documentation.

โŒ๐Ÿ—‘Debugging
Device Serial

The default device identifier (ro.serialno) is not available in the Android Quickstart APK โ€” it will fallback to using Secure.ANDROID_ID if the configured identifier is not visible.

โŒโœ…N/A
Hardware Type/OS Version

Sysprops used for hardware type and OS version are generally readable by The Android Quickstart APK, depending on how the project is configured.

โœ…โœ…N/A