- Added property to track whether an event occurred while the app was in
the foreground or background
- Added target resource ID property to clicks on Androidx and Support
Library menu items
- Fixed an issue where automatic item selection in Spinner UI elements
would result in a click event
- Fixed an issue where TLSv1.2 encryption was not being enabled for SSL
connections on API levels below 21
- Fixed an issue where library would bail on API levels below 21 when
events were sent to the Event Visualizer
- Heap correctly instruments events that are handled by Java 8 lambdas
- Heap's Gradle plugin is now compatible with Android Gradle Plugin 4.0.0
- It is now possible to initialize Heap at any point in the app's lifecycle, enabling selective initialization based on feature flags
- Heap now includes the Android ID (SSAID) and Android Advertiser ID as event and user properties
- Target views for events and their ancestors now include bounding box data for better event definitions in the Android Event Visualizer
- Fixed an issue where a duplicate page view event was sent when coming back to the app after the session timeout
- Fixed a potential null pointer exception in Heap's fragment lifecycle tracking
- Fixed some incompatibilities with Android API levels 16-18
- Fixed an issue where page view events would appear out of order in the Android Event Visualizer after a session refresh
- Fixed an issue where events would be populated with stale page view information after a session refresh
- Added the capability to capture events without capturing the text content of views; this can be enabled by setting
trueon a build type or flavor in the Gradle config
- Fixed a bug where builds were failing on Windows due to the inability to modify a resource jar file
- Added logic to send ancestors of target views for better event definition in the Event Visualizer
- Added logic to deobfuscate obfuscated View and Fragment classes
- Heap Gradle plugin now supports building under Windows
- Gradle plugin now works on JVM bytecode instead of DEX, replacing Redex and resolving a host of related build and capture issues
- Shaded all dependencies of the Gradle plugin to fix various dependency issues
- Implemented temporary workaround for using the redex instrumentor: set
heapUseLegacyRedexInstrumentor = truein the ext block alongside
getIdentitymethods to retrieve numeric user ID and
- Fixed a runtime failure where Heap would immediately shut down upon initialization
for obfuscated builds
- Fixed a build-time failure for apps that contained Firebase or other dependencies that
- Fixed a runtime crash that occurred on API levels older than 24
- Heap client library now depends on protobuf-javalite 3.9.0; apps that depend on the full protobuf-java library can now build without duplicate class conflicts by excluding the dependency on protobuf-javalite
- Fixed build failure for AAB builds if there was no signing config
- Fixed and issue where Heap plugin would fail for AAB builds if the bundle task depended on the package task
- Fixed an issue where Heap never resumes sending events after a fragment-based app's process is terminated while it is backgrounded; this often happened on Samsung devices, as the Optimize feature of Device Care will terminate processes for all backgrounded apps.
- Sessions now last for five minutes since the last interaction, instead of restarting whenever the app reenters the foreground
- Fixed an issue building an AAB when there are spaces in the path to jarsigner
- Fixed an issue where building an AAB could hang for a long time on subsequent builds
- Android Event Visualizer to make defining events easier.
- Autocapture app install and upgrade events.
- When changing between activities, Heap now captures a single fragment transition event instead of one for each of the stopping and starting activities.
- Fix an issue where proguard throws a build error because it cannot find sun.misc.Unsafe class referenced by protobuf.
- Fix an issue where gradle builds fail when Heap is disabled due to a missing manifest placeholder.
- Fix an issue where null fragments would cause Heap to shut down.
- Fix an issue where the Gradle plugin would throw a NullPointerException if there were any files() dependencies.
- Fix an issue where the Gradle plugin could result in attempting to create a dex with over 64k method references.
- Fix issue where null fragments would cause apps to crash.
- Allow ignoring events from parts of the view hierarchy, both declaratively
via XML view tags, and programmatically by calling
- Capture page transition events for changes to the visible page in a
- Heap now captures events for androidx equivalents of support library
- Heap is now enabled by the setting
ext.heapEnabledinstead of the the
enabledkey in the
ext.heapmap. Both locations are consulted for
compatibility, but the
ext.heapmap location is deprecated.
- The Heap Gradle plugin can now also be applied before the Android Gradle
plugin if using Gradle >= 4.8.
- The Heap Gradle plugin attempts to reduce configuration overhead by using
the task configuration avoidance APIs when used with Android Gradle Plugin
versions 3.3 and higher.
- Enabling Heap via
ext.heap = ["enabled": true]is deprecated and will be
removed in a future version; use
- Support for Android Gradle Plugin versions earlier than 3.0.0 is deprecated
and will be removed in a future release.
- Fix an issue with
EditTextchange events sometimes having incorrect
timestamps, leading to dropped events.
- Fix potential issue with tracking changes to set of visible fragments.
- Text changes in EditText fields are now captured if they have at least one
- The user identity can now be reset to an anonymous state with
- The Heap library now specifies a minimum SDK version of 14 to match our
actual use of platform libraries
- Request bodies are now compressed with gzip for size efficiency
- Heap no longer captures duplicate events for certain app architecture patterns
- Heap client library now specifies a target SDK version, which prevents the
manifest merger from automatically adding the implicit system permissions
- Heap plugin works for Android Gradle Plugin version 3.2.1.
- Heap plugin instruments Android App Bundles (note: dynamic modules are not supported).
- Heap now autocaptures when fragments are added or removed from view, and
includes visible fragments as an event property on all events
- Heap plugin looks for the heap extension on flavors and default config as
well as build types
- The Gradle plugin will error out if used with Android Gradle Plugin 3.2.0 or
higher. This is a temporary measure as we add compatibility for AGP 3.2+ and
- Heap no longer sends session and pageview events if the build plugin did not
apply Heap properly, or if the app is running under instant run. This was
confusing when troubleshooting, as seeing some events could make it look like
Heap was installed properly when it was not.
- Fixed an issue with the included proguard rules that could result in a
NoSuchMethodError at runtime
- Proguard rules are now bundled in the client library, removing the need to
add them manually when integrating
- Heap plugin now instruments clicks on ActionMenuViews
- Heap plugin now instruments clicks on links in TextViews
- Heap plugin checks the minSdkVersion before building to avoid confusing dex
- Heap plugin logs a warning if the variant being built doesn't have Heap
- Heap Android artifacts are now available on jcenter
- Removed some blocking IO from the Heap.init() call path
- Heap plugin now instruments BottomNavigationView clicks
- Custom events can now be sent from the background
- Heap library now shades its well-known protobuf types, preventing clashes
with other libraries, eg Firebase Firestore and Firebase In-App Messaging.
- Heap plugin now instruments TabHost clicks.
- Heap library now includes device form factor with event data.
- Read the complete response body from the Heap endpoint, and close the
response stream. This should reduce the number of 'socket not closed' warnings
- Heap.identify triggers as expected when called immediately after Heap.init.
- Include gradle tasks to print individual licenses used by library. For a list
of tasks, run
./gradlew tasksand refer to the "Heap tasks" section.
- Include this changelog in the released JAR files
- Support Linux build environments
- Properly fail build if instrumentation fails
- Fix an issue where dexes numbered above 99 were not included in the
- Fix issue with 400 response codes from track endpoint
- Heap plugin now immediately aborts with clear exception message on non-macOS
- Fix typo in Heap Build Log Warning message about enabling Heap (comma should
have been a colon).
- Fix bug that prevented apps from building in Android Studio 3 when Instant
Run was enabled.
- Fix BuildConfig error that occurs in Gradle versions 4.1 and higher by
removing resource value injection out of variant prebuild doFirst action block
and into general afterEvaluate block of HeapPlugin.apply method
- Fix add user properties
- Fix socket resource StrictMode violation
- Debug information on BuildConfig error
- Capture Android toggle switches
- Capture Android radio buttons
- Fix uncaught exceptions
Updated about a month ago