> ## Documentation Index
> Fetch the complete documentation index at: https://docs.permutive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Notes

> Android SDK updates and announcements

<Update label="v1.11.3 (Core)" description="March 2026">
  * Header encoding for OkHttp 4.x compatibility **(Fix)**
</Update>

<Update label="v1.11.2 (Core)" description="March 2026">
  * Add 16KB page size support for Android 15+ devices **(Fix)**
</Update>

<Update label="v1.11.1 (Core)" description="March 2026">
  * Fix missing `logs()` method in Logger interface **(Fix)**
</Update>

<Update label="v1.11.0 (Core)" description="February 2026">
  * Integrate contextual cohorts with classification models **(Update)**
</Update>

<Update label="v1.10.0 (Core)" description="September 2025">
  * Integrate content-based contextual cohorts **(New)**
  * Introduce Dagger as dependency injection framework (v2.53.1) **(New)**
</Update>

<Update label="v2.2.0 (Google Ads)" description="September 2025">
  * Automatic contextual cohort targeting integration for Google Ad Manager requests **(New)**
</Update>

<Update label="v1.7.0 (AppNexus/Xandr)" description="September 2025">
  * Automatic contextual cohort targeting integration for AppNexus/Xandr ad requests **(New)**
</Update>

<Update label="v1.9.8 (Core)" description="March 2025">
  * Fix issue causing cohort transition event aggregation to stop working in some situations. **(Fix)**
</Update>

<Update label="v1.9.7 (Core)" description="February 2025">
  * Remove aho-corasick string-searching from cohort processing to reduce memory usage. **(Fix)**
</Update>

<Update label="v1.9.6 (Core)" description="December 2024">
  * Integrate with new API for audience matching to improve matching based on external data **(New)**
  * Fix close button on debug overlay **(Fix)**
  * Fix logging when setting completion percentage **(Fix)**
</Update>

<Update label="v2.1.0 (Google Ads)" description="August 2024">
  * Update Google Play Services Ads dependency to 24.0.0 **(Update)**
  * Changed Android minSdk version to 23 **(Update)**
</Update>

<Update label="v1.9.5 (Core)" description="August 2024">
  * Add aggregations of cohort transition events to PageviewComplete event properties to reduce our network load **(New)**
  * Fix missing class issues by removing dependency on ktor utils library from the query engine **(Fix)**
  * Fix issue that could occur when synchronising user state **(Fix)**
  * Update compile SDK version to 34 **(Update)**
</Update>

<Update label="v2.0.0 (Google Ads)" description="August 2024">
  * Update Google Play Services Ads dependency to 23.2.0 **(Update)**
  * Remove `PermutiveAdManagerAdRequestBuilder.addNetworkExtras` function (removed from ads SDK) **(Breaking change)**
  * Remove `PermutiveAdManagerAdRequestBuilder.setLocation` function (removed from ads SDK) **(Breaking change)**
  * Deprecate `PermutiveAdManagerAdRequestBuilder.addCustomEventsExtrasBundle` function (deprecated in ads SDK) **(Deprecation)**
</Update>

<Update label="v1.9.4 (Core)" description="May 2024">
  * Add remotely configurable list of third and second party data providers that are excluded from usage reporting **(New)**
</Update>

<Update label="v1.9.3 (Core)" description="February 2024">
  * Replace RxJava2 with Kotlin Flow in state synchronisation **(Update)**
</Update>

<Update label="v1.9.2 (Core)" description="February 2024">
  * Add new feature flag to enable Classification Model cohorts for this version and above **(Update)**
</Update>

<Update label="v1.9.0 (Core)" description="November 2023">
  * Add video ad tracking functionality through the `AdTracker`. [See here for more information](/sdks/mobile/android/features/video-ad-tracking) **(New)**
  * Add new container classes for video properties, `MediaTracker.VideoProperties` and `MediaTracker.PageProperties`. **(New)**
  * Add new `trackVideoView` function which takes the new property objects and deprecate `createVideoTracker`. **(Update)**
  * Release beta version of the debug overlay UI tool. **(New)**
  * Add new `TriggersProvider` functions which support `boolean` results for cohorts. **(New)**
  * Remove Rhino Javascript engine library. **(Update)**
  * Remove intermediate objects created during event processing to improve memory usage. **(Update)**
  * Fix RxJava undeliverable exceptions escaping error handling. **(Fix)**
</Update>

<Update label="v1.7.6 (Core)" description="October 2023">
  * Fix issue resulting from Kotlin reflection library dependency conflicts. **(Fix)**
</Update>

<Update label="v1.8.2 (Core)" description="September 2023">
  * Update the native query runtime to the latest version with more efficient state updates. This will reduce the number of calls to the Permutive API made by the SDK. **(New)**
</Update>

<Update label="v1.8.1 (Core)" description="June 2023">
  * Fix crash occurring on devices running Android 25 and below caused by desugared java.time library not being included in AAR. **(Fix)**
</Update>

<Update label="v1.8.0 (Core)" description="June 2023">
  * Increase minimum Android SDK version from 16 to 21. For more information on why we're doing it and how we'll be minimising disruption [read here](/sdks/mobile/android/guides/migration/v1-9-to-v1-10).
  * Added support for Classification Model cohorts. **(New)**
  * Added new properties for retrieving cohorts and activations. `PermutiveSdk.currentCohorts: List<String>` & `PermutiveSdk.currentActivations: Map<String, List<String>>`. **(New)**
    To allow us to support more cohorts we have switched from using integers to strings as cohort IDs. The new properties are equivalent to the old `PermutiveSdk.currentSegments: List<Int>` & `PermutiveSdk.currentReactions: Map<String, List<Int>>` properties respectively.
  * Deprecate the `PermutiveSdk.currentSegments` & `PermutiveSdk.currentReactions` properties. **(Deprecation)**
  * Fix a query in the native query runtime. **(Fix)**
  * Change evaluation of some debug log strings to be lazy. **(Fix)**
</Update>

<Update label="v1.5.13 (Google Ads)" description="June 2023">
  * Retrieve cohorts using the new `PermutiveSdk.currentActivations` function. **(Update)**
</Update>

<Update label="v1.6.1 (AppNexus/Xandr)" description="June 2023">
  * Retrieve cohorts using the new `PermutiveSdk.currentActivations` function. **(Update)**
</Update>

<Update label="v1.7.5 (Core)" description="March 2023">
  * Downgrade Kotlin requirement to v1.6+. **(Update)**
</Update>

<Update label="v1.7.4 (Core)" description="March 2023">
  * Enable the native query runtime by default. **(New)**
  * Fix native query runtime not interpreting some queries correctly. **(Fix)**
  * Fix issue with external state decoding. **(Fix)**
</Update>

<Update label="v1.9.1 (Core)" description="January 2023">
  * Fix crash occurring when retrieving Classification Model cohorts **(Fix)**
  * Fix missing common module classes **(Fix)**
</Update>

<Update label="v1.7.3 (Core)" description="January 2023">
  * Fix issue with debug event recorder caching large amount of events. **(Fix)**
</Update>

<Update label="v1.7.2 (Core)" description="December 2022">
  * Remove the "CTV" prefix from the names of our video events tracked through the `MediaTracker` API to better reflect their usecase for all video content. **(Update)**
  * Update to how we capture the `client.user_agent` event property to allow us to support better device distinction in the insights platform. **(Update)**
  * Additional fixes to query interpretation when using the native engine. **(Fix)**
  * Update the new `clearPersistentData` function to always run on coroutine `Dispatchers.IO` to prevent possibility of database access from the wrong thread. **(Fix)**
  * Added some additional proguard consumer rules to prevent native engine deserialization classes from being removed. **(Fix)**
    Please ensure you test you application with minification and Permutive debugging enabled (see [verification guide](/sdks/mobile/android/getting-started/verification))
</Update>

<Update label="v1.7.1 (Core)" description="October 2022">
  * Fix issue causing certain queries not to be interpreted correctly. **(Fix)**
</Update>

<Update label="v1.7.0 (Core)" description="September 2022">
  * Add new instance functions for clearing persistent data and deprecate old function. **(New)** The previous `clearPersistentData` function was potentially causing issues with the Permutive SDK database instance resulting in crashes. The new functions are safer to use and also inform of success or failure.
  * Add migration path for users moving from event-sync to our new native state-sync. **(New)**
  * Add handling for undelivered exceptions. **(New)**
  * Fix exception when migrating from database version 4 to 5. **(Fix)**
</Update>

<Update label="v1.6.0 (AppNexus/Xandr)" description="September 2022">
  * Add new `setPermutiveAdListener` function which enables automatic impression tracking. For more information see [AppNexus/Xandr integration](/sdks/mobile/android/integrations/appnexus-xandr). **(New)**
</Update>

<Update label="v1.6.0 (Core)" description="June 2022">
  * Fix issue which caused the SDK to stop if the user received network errors when making an identity call. **(Fix)**
  * Add new native engine to replace the Rhino Javascript engine. This feature will be rolled out gradually. **(New)**
    Rhino Javascript will be removed in a subsequent release after rollout of the native engine is complete.
  * Update EventProperties API so that it allows nullable values. **(New)**
  * Fix exception which could occur when doing database migration. **(Fix)**
</Update>

<Update label="v1.5.13 (Core)" description="May 2022">
  * Add support for setting priority and expiry for aliases set through the identity APIs. **(New)**
    The identity APIs support new functionality for prioritising aliases and deleting them automatically on expiry. For more information see our documentation on [identity management](/sdks/mobile/android/core-concepts/identity-management).
  * Add support for tracking Fire and Fire TV as platforms. **(New)**
    Fire and Fire TV devices are now tracked as separate platforms types for clients.
  * Fix printing of nested EventProperties which previously showed as 'null'. **(Fix)**
    Nested EventProperties in the developer log were incorrectly showing as null, they now show as the correct nested structure.
  * Fix memory leak caused by some internal resources not closing correctly. **(Fix)**
    Parts of the SDK were found to still run even after `close()` was called on an SDK instance. These have now been fixed.
  * Fix issue that could sometimes cause events to be processed more than once. **(Fix)**
    Sometimes events could end up being tracked more than once causing slowdown and memory consumption. This has now been fixed.
</Update>

<Update label="v1.5.10 (AppNexus/Xandr)" description="May 2022">
  * Update Xandr/AppNexus dependency to 7.X.
</Update>

<Update label="v1.5.12 (All)" description="December 2021">
  * Add support for Google Ads slots clicked events. **(New)**
    Additional information is included in the GAM request which allows for server side generation of slot events.
  * Fix in-IDE documentation for core APIs. **(New)**
    API documentation is now accessible in the IDE.
  * Adds in page engagement support. **(New)**
    Engagement segments can not be evaluated in the current page, rather than only once that page has closed/completed.
  * Add video tracking support. **(New)**
    Similar to pages we now support tracking video events and video engagement using the MediaTracker class.
</Update>

<Update label="v1.5.11 (Core)" description="September 2021">
  * Fix exception happening when events containing an empty list as a child of `EventProperties` are tracked. **(Fix)**
</Update>

<Update label="v1.5.10 (Core)" description="August 2021">
  <Warning title="Known issues">
    This version has a known issue causing some events not to be tracked. Please use version 1.5.11
  </Warning>

  * Optimise segmentation engine memory usage. **(New)**
    An optimised way of passing events to the segmentation engine has been added which will reduce OutOfMemoryErrors.
  * Fix exception when using `EventProperties` containing a list of `EventProperties`. **(Fix)**
    Correct property handling has been added for `EventProperties` which contain a value which itself is a list of `EventProperties`.
</Update>

<Update label="v1.5.9 (Core)" description="July 2021">
  * Add more comprehensive logging to the SDK. **(New)**
    Improved logging will assist in verifying integrations and debugging any potential issues.
    See the [verification guide](/sdks/mobile/android/getting-started/verification) for details on what logs are available.
  * Remove internal logging of current segments and current reactions. **(New)**
    These can easily be logged externally so have been removed to reduce noise from the internal SDK logs.
  * Fix memory leaks when restarting the SDK **(Fix)**
</Update>

<Update label="v1.5.7 (Google Ads)" description="April 2021">
  * Update library dependencies **(New)**
    Updates Google-Play-Services dependency from v18 to v20.
</Update>

<Update label="v1.5.7 (Core)" description="April 2021">
  * Update library dependencies **(New)**
    Updates third party dependencies - room, rxjava, androidx to the latest versions.
  * Update minimum SDK version to 16 **(New)**
    Updates minimum SDK version from 14 to 16.
</Update>

<Update label="v1.5.6 (Core)" description="April 2021">
  * Always identify on startup **(New)**
    In order to prevent potential identity collapse, the SDK always identifies upon startup, so any such issues can be resolved by the server.
  * Fix ConcurrentModificationException at startup **(Fix)**
    The deferred queue has been updated to fix an issue where ConcurrentModificationException can be thrown due to a deferred operation that itself modifies the deferred queue.
  * Fix SQLite issue when migrating to state sync **(Fix)**
    Rewrite SQLite query for migration to state sync so that it does not exceed the maximum variable limit for the Android SQLite implementation.
</Update>

<Update label="v1.5.5 (Core)" description="February 2021">
  * Fix conflicting cache issue with OkHttp **(Fix)**
    Cache issues can occur if both the host application and the Permutive SDK use OkHttp in the same cache directory. Permutive SDK now uses a subdirectory of the cache directory.
  * Update URLs to `permutive.app` **(New)**
    Moving from `permutive.com` - SDK traffic should use `permutive.app` name.
  * Fine tune metrics for the state-sync/event-sync variants **(Fix)**
    Metrics are now able to be fine tuned so that the variants do not interfere with the reported data.
</Update>

<Update label="v1.5.4 (Core)" description="January 2021">
  * Add state synchronisation support **(New)**
    We now merge off-device state using states rather than raw events.
</Update>

<Update label="v1.5.3 (Core)" description="October 2020">
  * Fix migration issue with 1.5.2 **(Fix)**
    Fixes a critical persistence issue when upgrading to 1.5.2 with persisted state from an older version.
  * Constrain event cache upon startup **(New)**
    Excess events are dropped upon startup if the events cache is lowered.
  * Handle OOM exception when evaluating script **(Fix)**
    We now disable the SDK & report an issue if an OOM condition occured when evaluating the segmentation script.
  * Update Kotlin to 1.4.20 **(New)**
    Updated to the latest stable developer release of Kotlin.
</Update>

<Update label="v1.5.2 (Core)" description="October 2020">
  <Warning title="Known issues">
    Upgrading from an older versions of this SDK can result in a migration issue, we strongly recommend using a previous version. If you are using 1.5.2 please contact our support staff for further details.
  </Warning>

  * Disable pre lollipop devices by default **(Fix)**
    Devices older than 5.0 are unable to communicate with our servers as we use the more secure TLS 1.2 protocol.
  * Handle OOM exceptions more gracefully **(Fix)**
    Disable the SDK when an OOM occurs during segmentation, freeing up memory for the host application.
  * Add CheckResult annotation for all public methods that return values **(New)**
    Warnings should occur in the IDE when using public functions that returns values.
</Update>

<Update label="v1.5.1 (Core)" description="August 2020">
  * Updated to Kotlin 1.4.0 **(New)**
  * Better developer logs & dynamic log support **(New)**
    It is now possible to dynamically turn on logging for a deployed app, which can help for verification of the deployment.
  * Fix halting when there is a connection issue **(Fix)**
    Under some circumstances the SDK would halt execution when a connection issue occurred.
  * Do not include rejected events in cache **(Fix)**
    Rejected events are not not included in the events cache.
  * Fix watson decode issue **(Fix)**
    Watson would not decode correctly if a client was using a later version of the moshi library.
</Update>

<Update label="v1.5.0 (Core)" description="August 2020">
  * Add Enterprise workspace support **(New)**
    Passing through a Workspace Id rather than a Project Id will use segments and events configured for that particular workspace, rather than for the whole organization. If migrating from an existing ProjectId to a new Workspace Id, local state is still retained during the migration.
  * Stop running the segmentation engine when a memory trim level has been sent by the OS **(New)**
    When the device starts running out of memory, the Android SDK will shutdown it's running systems until a call to the public APIs is made.
  * Only track engagement events if configured to **(Fix)**
    We only send PageviewComplete events if the project is configured for this.
  * Handle devices that are configured with a DNS sinkhole **(Fix)**
    Fix issue when a device is connected to a DNS sinkhole under certain conditions the SDK can make repeated requests for the same resource.
</Update>

<Update label="v1.4.4 (Core)" description="July 2020">
  * Add Watson enrichment support **(New)**
    EventProperties.ALCHEMY\_\* strings can be used to enrich an event with the watson information provided for the current/page URL.
  * Add PageviewComplete event **(New)**
    Adds page engagement support for the Android platform. The PageviewComplete event is automatically generated when calling close on a PageTracker object.
  * Always use application context on initialisation **(Fix)**
    Prevents Activity leaks when passing an Activity as the SDK's context, rather than the Application.
  * Turn off TPD usage reporting as a default **(Fix)**
    TPD usage reporting is not used by our customers at this time, so this has defaulted to off.
</Update>

<Update label="v1.4.3 (Core)" description="March 2020">
  * Report SDK version as a metric **(New)**
    Reporting SDK version will give us better information on current deployments.
  * Add hashed ip as an event enrichment type **(New)**
    The string "\$ip\_address\_hash" will now resolve to a hashed version of the client's ip address.
  * Fix instances of dependencies upon startup **(Fix)**
    Fixes a potential race condition that could allow double creations of SDK dependencies.
  * Fix error reporting so that it includes script date/time **(Fix)**
    To better diagnose issues we now report the query language creation time in error reports.
</Update>

<Update label="v1.4.2 (Core)" description="March 2020">
  * Handle illegal argument exception when unregistering broadcast receiver **(Fix)**
    Fixed an issue when unregistering a broadcast receiver that has not yet been registered in some cases.
</Update>

<Update label="v1.4.1 (Core)" description="March 2020">
  * Always ask server to resolve resources, regardless of cache-control max-age **(Fix)**
    We now do not honor the cache-control max-age header, as if this is very long we will not fetch the updates files from our servers.
  * do not generate segment\_exit events for deleted/missing segments **(Fix)**
    We now do not generate segment\_exit events for missing/deleted segments.
  * update library dependencies **(New)**
    We've updated our library dependencies to take advantage of the latest bugfixes & enhancements.
</Update>

<Update label="v1.4.0 (Core)" description="February 2020">
  * Remove deleted queries from persisted state **(New)**
    We now detect & delete queries & segments that have been deleted/disabled from the dashboard.
  * Add date support to EventProperties **(New)**
    In older SDKs a developer had to manually format a datetime object to a String (in ISO 9601), we've added date support for EventProperties so that this will happen automatically.
  * Add appnexus support to add permutive targeting **(New)**
    We've added preliminary support for ad targeting using the AppNexus SDK with our new appnexus addon library.
  * Add OS/Script/App info to error reports **(New)**
    When we report an error to our endpoints we now include additional information to help us diagnose issues: The operating system version, the segmentation queries version that is being executed as well as information on the Application (version & identifier).
  * Limit deferred functions upon startup **(New)**
    While the SDK is initialising, we defer execution of public function calls until this has completed. This was previously unlimited, we have put in a cap so that this does not become unbounded.
  * Add pagetracking API & deprecate context APIs **(New)**
    The PageTracker API gives support for Pageview and PageviewEngagementAggregate events. The page's context (url/title/referrer) are now tied to a Page, rather than a global Permutive setting. Using the PageTracker API will allow for better reporting & better visibility of engagement on the Android SDK.
    As a result, we would recommend using PageTracker rather than EventTracker for page related events. As a general rule: if an event has a url/title/referrer - it should probably be tracked by the PageTracker object. The global context methods setTitle/setUrl/setReferrer are now deprecated as a result, and we have stopped persisting these values.
  * Fix illegal state in db when reading **(Fix)**
    A small percentage (around 0.5%) of users have reported an IllegalStateException under certain circumstances. Previously we would halt segmentation & disable the SDK for these users, for 1.4.0 we have a fix so that this will no longer happen.
  * Fix regex matching when disabling **(Fix)**
    We have made our regular expression matching more straightforward in the event that we have to disable a deployment.
  * Fix consumer proguard typo **(Fix)**
    Some setups of proguard have stripped away functions that we are using internally. Although we had a @Keep clause on the function, it is still possible that it can be stripped away. We have updated our consumer-proguard so that this is fixed.
</Update>

<Update label="v1.3.1 (Core)" description="December 2019">
  * fix issue when migrating from older versions
</Update>

<Update label="v1.3.0 (Core)" description="November 2019">
  <Warning title="Deprecated">
    Upgrading from older versions of this SDK can result in a migration issue, we recommend using version 1.3.1 which has a fix for this issue.
  </Warning>

  * Add ability to remotely disable by application, os, or sdk version **(New)**
  * Remove dependency on core library for google ads library **(New)**
  * Add third party data usage reporting support **(New)**
</Update>

<Update label="v1.2.1 (Core)" description="October 2019">
  * Make engine events session\_id & user\_id optional **(Fix)**
</Update>

<Update label="v1.2.0 (Core)" description="October 2019">
  * Fix stack size issue for Dalvik VMs **(Fix)**
</Update>

<Update label="v1.1.0 (Core)" description="October 2019">
  <Warning title="Deprecated">
    Segmentation may not occur for OSes using Dalvik VMs, we recommend using version 1.2.0 which has a fix for this issue.
  </Warning>

  * Use Rhino as the js engine **(New)**
</Update>

<Update label="v1.0.0 (Core)" description="September 2019">
  * Non-beta release of the Android SDK
  * Correctly handle date time when the format is incorrect **(Fix)**
  * Reduce memory overhead for db so that it performs well on low end systems **(Fix)**
  * Only update event server time when posting events **(Fix)**
</Update>
