Android Changelog
All notable changes to Heap Android libraries will be documented in this file. For steps to install Heap on Android, see the installation docs for the desired library:
The format is based on Keep a Changelog and this project adheres to
Semantic Versioning.
Android Core Changelog
[0.7.5] - 2024-12-12
Fixed
- Fixed an issue where session replay data wasn't being properly synced when using newer versions of the Contentsquare Android SDK.
[0.7.4] - 2024-12-09
Added
- Added a configuration option to limit the size of the local database to prevent storage overruns on limited device
- Added a configuration option to change the current data retention period from 6 days to any number of days between 1 and 30. Requires an entitlement.
[0.7.3] - 2024-11-22
Added
- Exposed an API to extend the current session. Requires an entitlement.
- Added an entitlement system to expose functionality only to specific customers
[0.7.2] - 2024-10-14
Fixed
- Updated protobuf to resolve a vulnerability.
[0.7.1] - 2024-08-31
Fixed
- Fixed an issue where add-on artifacts had conflicting
BuildConfig
class names.
[0.7.0] - 2024-08-28
Added
- Added support for tracking notification interaction events.
- Added support for showing identity in live view.
[0.6.2] - 2024-08-01
Fixed
- Switched from using
Random
toSecureRandom
for event ID generation.
[0.6.1] - 2024-07-02
Fixed
- Fixed a bug where
restorePreviousSession
wasn't being set properly when used by a cross-platform SDK.
[0.6.0] - 2024-06-11
Added
- Added support for Heap Contentsquare Bridge SDK.
[0.5.2] - 2024-03-21
Fixed
- Fixed a bug introduced in 0.5.0 that prevented Mobile Library Version from being properly captured.
- Customers should skip versions 0.5.0 and 0.5.1 in favor of 0.5.2 to prevent gaps in Mobile Library Version capture.
[0.5.1] - 2024-02-23
Fixed
- Fixed a bug where switching between environment IDs could prevent events from being stored properly.
- Fixed a bug where native events would set the session expiration back to five minutes after a WebView event extended it to 30 minutes.
Added
- Added support for tracking pageviews across a JavaScript bridge.
- Added support for tracking interactions across a JavaScript bridge.
[0.5.0] - 2024-01-08
Added
- Added an option to capture vendor ID from Google App Set ID.
- Added an option to configure the number of messages sent in each upload batch.
- Added an option to configure whether event properties should be cleared when the current user changes.
- Added new artifacts to enable non-core functionality.
io.heap.core.identifier:ad-id-google
io.heap.core.identifier:ad-id-amazon
io.heap.core.identifier:vendor-id-google
io.heap.core.web:webview-heapjs
Changed
- Android Core no longer includes dependencies for advertiser ID and WebView sessionization behaviors. If attempting to capture advertiser ID, you must add one of the above advertiser ID capture artifacts. You must also include the WebView artifact to enable WebView session sharing.
- Updated the networking layer to continue sending events when receiving a 400 response code from Heap to allow data replay capabilities.
- Event properties are no longer cleared when switching the active user. To retain the old behavior and clear event properties when changing users, set the
clearEventPropertiesOnNewUser
initialization option.
[0.4.0] - 2023-09-25
Added
- Added an option to disable accessibility label capture.
- Added a builder to
Options
to make setting options easier in Java apps.
Changed
Heap.addEventProperties
no longer attaches properties to session messages.- Target text is now trimmed of leading and trailing whitespace.
- Messages are now limited to 0.78 MB in size.
[0.3.0] - 2023-06-23
Added
- Added support for AndroidX Fragment transition events.
- Added support to track app version changes.
[0.2.0] - 2023-05-15
Fixed
- Fixed a race condition that could prevent capture of the Android Advertiser ID property.
Changed
- Changed the default behavior of
Heap.startRecording
to delay the start of a session until an event or pageview occurs. In order to override the default behavior and start a session immediately, initialize anOptions
instance withstartSessionImmediately
set totrue
and invokeHeap.startRecording
with thatOptions
instance. NOTE: If you are using the Heap Android View Autocapture SDK, you must also upgrade that dependency's version to 0.2.0. - Kotlin dependencies updated to version 1.8.x. Implementing apps will need to update their Kotlin plugin version to 1.8.0 or higher.
[0.1.1] - 2023-03-14
Changed
- Event and user properties with empty string keys or values will no longer be persisted or sent to the server.
[0.1.0] - 2023-03-09
Added
- Initial release of Heap Android Core SDK.
Android View Autocapture Changelog
[0.7.2] - 2024-12-09
Added
- Added a new API to override the target text for any View.
[0.7.1] - 2024-10-14
Fixed
- Updated protobuf to resolve a vulnerability.
[0.7.0] - 2024-08-29
Added
- Added support for API changes made in Android Core 0.7.0.
[0.6.0] - 2024-06-11
Added
- Added support for API changes made in Android Core 0.6.0.
[0.5.1] - 2024-02-26
Added
- Added support for API changes made in Android Core 0.5.1.
[0.5.0] - 2024-01-10
Added
- Added support for configuration options added in Android Core 0.5.0.
[0.4.0] - 2023-09-29
Added
- Added support for option to disable accessibility label capture added in Android Core 0.4.0.
[0.3.0] - 2023-06-23
Added
- Added support for AndroidX Fragment transition events. Requires Heap Android Core 0.3.0 or higher.
[0.2.0] - 2023-05-15
Changed
- Updated the SDK to be compatible with the new session start behavior in Heap Android Core 0.2.0.
[0.1.0] - 2023-03-10
Added
- Initial release of Heap Android View Autocapture SDK.
Android Notification Autocapture Changelog
[0.7.2] 2024-12-09
Added
- Added support for capturing notifications with geofencing as a source.
Fixed
- Fixed a bug where title and body text wasn't being properly captured if using a Spanned or other CharSequence implementations besides String.
[0.7.1] - 2024-10-14
Fixed
- Updated protobuf to resolve a vulnerability.
[0.7.0] - 2024-08-29
Added
- Initial release of Heap Android Notification Autocapture SDK.
Heap | Contentsquare Bridge Changelog
[0.7.5] - 2024-12-12
Fixed
- Fixed an issue where session replay data wasn't being properly synced when using newer versions of the Contentsquare Android SDK.
[0.7.4] - 2024-12-09
Changed
- Updated Heap Android Core SDK to version 0.7.4.
[0.7.3] - 2024-11-22
Changed
- Updated Heap Android Core SDK to version 0.7.3.
[0.7.2] - 2024-10-14
Fixed
- Updated protobuf to resolve a vulnerability.
Changed
- Updated Heap Android Core SDK to version 0.7.2.
[0.7.1] - 2024-08-31
Changed
- Updated Heap Android Core SDK to version 0.7.1.
[0.7.0] - 2024-08-28
Changed
- Updated Heap Android Core SDK to version 0.7.0.
[0.6.2] - 2024-08-01
Changed
- Updated Heap Android Core SDK to version 0.6.2.
[0.6.1] - 2024-07-02
Changed
- Updated Contentsquare SDK to version 4.30.0.
- Updated Heap Android Core SDK to version 0.6.1.
[0.6.0] - 2024-06-11
Added
- Initial release of the Heap | Contentsquare Bridge SDK.
Classic Android Changelog
[1.10.6] - 2023-01-04
Fixed
- Fixed a build failure for builds involving multiple inputs to AAB/APK packaging tasks.
[1.10.5] - 2022-09-15
Fixed
- Fixed a bug where a programmatic call to toggle a compound or radio button would be captured as a user-initiated event.
- Fixed a bug where BuildConfig class would sometimes not be found.
[1.10.4] - 2022-05-26
Fixed
- Fixed a build failure on AGP 7.2 that occurred during Gradle project configuration (
java.lang.IllegalStateException: Cannot query the value of property 'namespace' because configuration of project has not completed yet.
)
[1.10.3] - 2022-04-28
Fixed
- Fixed a crash that occurred during initialization if the context that was obtained in
HeapContentProvider
was not of typeApplication
(java.lang.AssertionError: HeapAssert.fail() with throwable: java.lang.ClassCastException: {type} cannot be cast to android.app.Application
)
[1.10.2] - 2022-03-31
Fixed
- Fixed a build failure that occurred when building with dependencies that contained classes with case-insensitive naming collisions (e.g.
com.example.myClass
andcom.example.MyClass
)
[1.10.1] - 2022-02-16
Fixed
- Fixed a build failure that occurred with dependencies built with Java 16 (
java.lang.IllegalArgumentException: Unsupported class file major version 60
)
[1.10.0] - 2022-01-31
Added
Added new Heap.getSessionId
API method to retrieve session ID: sessionId (Android)
[1.9.4] - 2021-12-15
Fixed
- Fixed an assertion error that would occur if a user interacted with a UI element in an app while the app was in the background.
- Fixed a Bluetooth
SecurityException
that would occur in Android 12 in apps that did not have theBLUETOOTH_CONNECT
permission.
[1.9.3] - 2021-08-30
Fixed
- Fixed a NPE that would occur in the library if a FragmentActivity was created outside of the main app process.
- Fixed a duplicate resource issue that would prevent apps from rebuilding without an intermediate clean step.
- Fixed a bug that caused the Gradle plugin not to inject build config information into the app with AGP 7.
[1.9.2] - 2021-06-07
Fixed
- Fixed an issue where the Gradle plugin would fail with AGP 4.2 due to an IllegalStateException ("The value for property 'resValues' cannot be changed any further.")
[1.9.1] - 2021-04-14
Fixed
- Fixed an issue where the library would leak memory due to stale
TabView
andItemView
instances not being garbage-collected. - Fixed an issue where hierarchies provided by Heap's React Native SDK would be truncated on Android devices.
[1.9.0] - 2021-03-11
Added
- Added API methods to disable and enable tracking for individual users. See Disable Tracking for more information.
Fixed
- Fixed an issue where app builds would fail if duplicate protobuf file names existed in dependencies.
[1.8.3] - 2021-04-14
Fixed
- Fixed an issue where the library would leak memory due to stale
TabView
andItemView
instances not being garbage-collected.
[1.8.2] - 2021-03-11
Fixed
- Fixed an issue where app builds would fail if duplicate protobuf file names existed in dependencies.
[1.8.1] - 2020-12-07
Fixed
- Fixed an issue where the library would bail if
TabLayouts
were rendered prior to Heap initialization
[1.8.0] - 2020-09-14
Added
- 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
- 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
[1.7.2] - 2020-12-07
Fixed
- Fixed an issue where the library would bail if
TabLayouts
were rendered prior to Heap initialization
[1.7.1] - 2020-07-22
Fixed
- 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
[1.7.0] - 2020-05-10
Changed
- It is now possible to initialize Heap at any point in the app's lifecycle, enabling selective initialization based on feature flags
- Added Mobile Library Version session property.
[1.6.0] - 2020-03-20
Added
- 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
- 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
[1.5.0] - 2020-02-05
Added
- Added the capability to capture events without capturing the text content of views; this can be enabled by setting
ext.heapDisableTextCapture
totrue
on a build type or flavor in the Gradle config
[1.4.1] - 2020-01-29
Fixed
- Fixed a bug where builds were failing on Windows due to the inability to modify a resource jar file
[1.4.0] - 2019-12-05
Added
- Added logic to send ancestors of target views for better event definition in the Event Visualizer
Fixed
- Added logic to deobfuscate obfuscated View and Fragment classes
[1.3.0] - 2019-11-14
Added
- Heap Gradle plugin now supports building under Windows
Changed
- 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 = true
in the ext block alongsideheapEnabled
[1.2.0] - 2019-09-27
Added
- Added
getUserId
andgetIdentity
methods to retrieve numeric user ID and
identity respectively
Fixed
- 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
used protobuf-lite - Fixed a runtime crash that occurred on API levels older than 24
[1.1.1] - 2019-08-16
Changed
- 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
- 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.
[1.1.0] - 2019-06-29
Changed
- Sessions now last for five minutes since the last interaction, instead of restarting whenever the app reenters the foreground
[1.0.1] - 2019-06-29
Fixed
- 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
[1.0.0] - 2019-06-13
Added
- Android Event Visualizer to make defining events easier.
- Autocapture app install and upgrade events.
Changed
- When changing between activities, Heap now captures a single fragment transition event instead of one for each of the stopping and starting activities.
Fixed
- 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.
[0.9.1] - 2019-03-25
Fixed
- Fix issue where null fragments would cause apps to crash.
[0.9.0] - 2019-03-21
Added
- Allow ignoring events from parts of the view hierarchy, both declaratively
via XML view tags, and programmatically by callingHeap.ignore()
on the
view. - Capture page transition events for changes to the visible page in a
ViewPager. - Heap now captures events for androidx equivalents of support library
elements.
Changed
- Heap is now enabled by the setting
ext.heapEnabled
instead of the the
enabled
key in theext.heap
map. Both locations are consulted for
compatibility, but theext.heap
map 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.
Deprecated
- Enabling Heap via
ext.heap = ["enabled": true]
is deprecated and will be
removed in a future version; useext.heapEnabled
instead. - Support for Android Gradle Plugin versions earlier than 3.0.0 is deprecated
and will be removed in a future release.
Fixed
- Fix an issue with
EditText
change events sometimes having incorrect
timestamps, leading to dropped events. - Fix potential issue with tracking changes to set of visible fragments.
[0.8.3] - 2019-01-23
Added
- Text changes in EditText fields are now captured if they have at least one
TextWatcher added - The user identity can now be reset to an anonymous state with
Heap.resetIdentity()
- The Heap library now specifies a minimum SDK version of 14 to match our
actual use of platform libraries
Changed
- Request bodies are now compressed with gzip for size efficiency
Fixed
- Heap no longer captures duplicate events for certain app architecture patterns
[0.8.2] - 2019-01-05
Added
- Heap client library now specifies a target SDK version, which prevents the
manifest merger from automatically adding the implicit system permissions
READ_PHONE_STATE
,READ_EXTERNAL_STORAGE
, andWRITE_EXTERNAL_STORAGE
to
users' apps
[0.8.1] - 2018-12-17
Fixed
- Heap plugin works for Android Gradle Plugin version 3.2.1.
- Heap plugin instruments Android App Bundles (note: dynamic modules are not supported).
[0.8.0] - 2018-12-05
Added
- Heap now autocaptures when fragments are added or removed from view, and
includes visible fragments as an event property on all events
Changed
- 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
app bundles.
Removed
- 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
- Fixed an issue with the included proguard rules that could result in a
NoSuchMethodError at runtime
[0.7.5] - 2018-10-15
Added
- 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
magic errors
Changed
- Heap plugin logs a warning if the variant being built doesn't have Heap
enabled - Heap Android artifacts are now available on jcenter
Fixed
- Removed some blocking IO from the Heap.init() call path
[0.7.4] - 2018-09-06
Added
- Heap plugin now instruments BottomNavigationView clicks
Changed
- Custom events can now be sent from the background
[0.7.3] - 2018-08-27
Fixed
- Heap library now shades its well-known protobuf types, preventing clashes
with other libraries, eg Firebase Firestore and Firebase In-App Messaging.
[0.7.2] - 2018-08-17
Added
- Heap plugin now instruments TabHost clicks.
Changed
- Heap library now includes device form factor with event data.
[0.7.1] - 2018-07-17
Changed
- Read the complete response body from the Heap endpoint, and close the
response stream. This should reduce the number of 'socket not closed' warnings
Fixed
- Heap.identify triggers as expected when called immediately after Heap.init.
[0.7.0] - 2018-05-11
Added
- Include gradle tasks to print individual licenses used by library. For a list
of tasks, run./gradlew tasks
and refer to the "Heap tasks" section. - Include this changelog in the released JAR files
- Support Linux build environments
Fixed
- Properly fail build if instrumentation fails
- Fix an issue where dexes numbered above 99 were not included in the
instrumented APK - Fix issue with 400 response codes from track endpoint
[0.6.0] - 2018-03-26
Changed
- Heap plugin now immediately aborts with clear exception message on non-macOS
platforms
Removed
Heap.setEnvId
andHeap.setInterval
methods
Fixed
- 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.
[0.5.2] - 2018-03-08
Fixed
- 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
[0.5.1] - 2018-03-01
Added
- Debug information on BuildConfig error
[0.5.0] - 2018-02-13
Added
- Capture Android toggle switches
- Capture Android radio buttons
Fixed
- Fix uncaught exceptions
Updated 8 days ago