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

# Android SDK

> This changelog lists all additions and updates to the Fingerprint Android SDK, in chronological order.

<Update label="July 2026">
  ## v2.17.0

  ### What's new

  * Added internal improvements to enhance fraud detection capabilities. These updates lay the groundwork for upcoming backend enhancements.
  * Reduced false positives in emulator and rooted device detection.
  * Internal bug fixes and security updates.

  Android SDK v2.17.0 size info: 4.13MB

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="June 2026">
  ## v2.16.0

  ### What's new

  * Added internal improvements to support enhanced detection logic and upcoming backend updates.

  Android SDK v2.16.0 size info: 4.12MB

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="April 2026">
  ## v2.15.0

  ### What's new

  * Updated client-level logic to improve the accuracy and reliability of [rooted device detection](https://docs.fingerprint.com/docs/smart-signals-reference#rooted-device-detection).
  * Expanded the range of device-level signals collected for deeper device integrity insights.
  * Internal bug fixes and performance improvements.

  Android SDK v2.15.0 size info: 3.53MB

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="March 2026">
  ## v2.14.0

  ### What's new

  * Reduced Android SDK AAR size by 1.5MB (from 4.7MB to 3.2MB)
  * Fixed crashes during app initialization on low-end devices running Android 12, 13, and 15, including devices with limited available RAM.
  * Added [coroutine support](/docs/android-quickstart#4-initialize-the-sdk) for cleaner, more idiomatic integration in Kotlin-based Android projects.
  * Internal bug fixes and performance improvements.

  Android SDK v2.14.0 size info: 3.2MB

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="February 2026">
  ## v2.13.1

  ### What's new

  * Added internal improvements to support enhanced detection logic and upcoming backend updates.
  * Security updates and minor bug fixes.

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="December 2025" tags={["Smart Signals"]}>
  ## v2.12.0

  ### What's new

  * Added internal improvements to enhance fraud detection capabilities. These updates lay the groundwork for upcoming backend enhancements.
  * Improved [cloned app detection](/docs/smart-signals-reference#cloned-app-detection) on Android.

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 36 (`targetSdk = 36`)
  * **Compiled using** API Level 36 (`compileSdk = 36`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="October 2025" tags={["Smart Signals"]}>
  ## v2.11.0

  ### What's new

  **Recommendation**: We strongly encourage upgrading to the version **2.11.0** to benefit from improved security and stronger protection against tampering and reverse-engineering attempts.

  * Implemented additional security measures to protect Android SDK requests from manipulation, tampering, and reverse-engineering attempts.
  * Deprecated support for Android 5.x.
  * Improved [rooted device detection](/docs/smart-signals-reference#rooted-device-detection) on Android.
  * Improved [emulator detection](/docs/smart-signals-reference#android-emulator-detection) logic on Android.
  * The total SDK size increased from 800kB to 4.5MB

  ### Compatibility

  * **Requires** Android 6.0+ ([API Level 23 or higher](https://developer.android.com/about/versions/marshmallow))
  * **Tested with** API Level 35 (`targetSdk = 35`)
  * **Compiled using** API Level 35 (`compileSdk = 35`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.13.0** (`com.android.tools.build:gradle:8.13.0`)
  * Gradle: v**8.13**
  * jvmTarget : **Java 11**
</Update>

<Update label="September 2025" tags={["Smart Signals"]}>
  ## v2.10.0

  ### What's new

  * Introduced a new proximity detection location-based signal for mobile devices. Instead of representing a unique device, the new proximity ID corresponds to a fixed geographical zone within which the device is observed. This additional layer of context makes it possible to identify groups of devices in the same physical area or a single device that may have changed its identity but remained in the same location. See [Proximity detection for Android devices](/docs/smart-signals-reference#proximity-detection) reference for more info.
    * The Android SDK will only collect location data if the new [`allowUseOfLocationData`](/docs/android-sdk#allowuseoflocationdata) option is set to `true`.
    * It's possible to configure the location retrieval timeout by setting the new [`locationTimeoutMillis`](/docs/android-sdk#locationtimeoutmillis) option to a desired value. By default, it's set to 5 seconds. Refer to [Using Location Data for Proximity Detection](/docs/android-sdk#using-location-data-for-proximity-detection) page for configuration details.
  * Enhanced the detection logic to more accurately identify true [factory resets](/docs/smart-signals-reference#factory-reset-detection) on Android devices. This update reduces false positives and improves signal reliability for fraud prevention workflows.

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 35 (`targetSdk = 35`)
  * **Compiled using** API Level 35 (`compileSdk = 35`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.7.3** (`com.android.tools.build:gradle:8.7.3`)
  * Gradle: v**8.10.2**
  * jvmTarget : **Java 8**
</Update>

<Update label="August 2025">
  ## v2.9.0

  ### What's new

  * Introduced internal architecture updates and performance improvements to support upcoming capabilities.
  * Addressed minor data collection issues to improve SDK reliability.
  * Added new error codes
    * `InvalidProxyIntegrationSecret`
    * `InvalidProxyIntegrationHeaders`
    * `ProxyIntegrationSecretEnvironmentMismatch`

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 35 (`targetSdk = 35`)
  * **Compiled using** API Level 35 (`compileSdk = 35`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="February 2025" tags={["Smart Signals"]}>
  ## v2.8.0

  ### What's new

  * Introduced the ability to detect if requests from the app were subject to MitM attacks. See [MitM Attack Detection](/docs/smart-signals-reference#mitm-attack-detection) to learn more.
  * Added support for [Open Client Response](/docs/v3/open-client-response).
  * Minor enhancements to identification and detection of Smart Signals.

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 35 (`targetSdk = 35`)
  * **Compiled using** API Level 35 (`compileSdk = 35`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.7.3** (`com.android.tools.build:gradle:8.7.3`)
  * Gradle: v**8.10.2**
  * jvmTarget : **Java 8**
</Update>

<Update label="October 2024">
  ## v2.7.0

  ### What's new

  * Added support for [Sealed Client Results](/docs/android-sdk#reading-the-response).

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 34 (`targetSdk = 34`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**

  ## v2.6.0

  ### What's new

  * Introduced the ability to configure the timeout interval for the client session. To learn more, see [Specifying a custom timeout](/docs/android-sdk#specifying-a-custom-timeout).
  * Added internal improvements to enhance fraud detection capabilities. These updates lay the groundwork for upcoming backend enhancements.

  ### What's changed

  * Information about Installed Applications is no longer collected and used.
  * Removed dependency `com.github.fingerprintjs:fingerprint-android`

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 34 (`targetSdk = 34`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.25** (`org.jetbrains.kotlin:kotlin-*:1.9.25`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="August 2024">
  ## v2.5.0

  ### What's new

  * Introduced the ability to redirect failed requests to alternate endpoints. The list `Configuration.fallbackEndpointUrls` can be used to specify one or more alternate endpoints. For a complete example, see [Getting a visitorId](/docs/android-sdk#getting-a-visitorid).

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 34 (`targetSdk = 34`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.10** (`org.jetbrains.kotlin:kotlin-*:1.9.10`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="January 2024" tags={["Smart Signals"]}>
  ## v2.4.0

  ### What's new

  * Introduced a new child class, `PackageNotAuthorized` to the sealed class, `Error`. This error is returned when an unauthorized app makes identification requests using a stolen API key. See [Request filtering for mobile apps](/docs/mobile-app-filtering) for more information.
  * Enhanced our [VPN Detection Smart Signal](/docs/smart-signals-reference#vpn-detection-for-mobile-devices) with a new data point, [`originCountry`](/docs/smart-signals-reference#vpn_origin_country) that indicates the country in which the mobile device is currently located at.

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 34 (`targetSdk = 34`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.10** (`org.jetbrains.kotlin:kotlin-*:1.9.10`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="October 2023" tags={["Smart Signals"]}>
  ## v2.3.4

  ### What's new

  * Introduced the ability to detect if the device location has been spoofed. To learn more, see [Geolocation Spoofing Detection](/docs/smart-signals-reference#geolocation-spoofing-detection).
  * Added runtime dependency `com.google.android.gms:play-services-location`

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 33 (`targetSdk = 33`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.10** (`org.jetbrains.kotlin:kotlin-*:1.9.10`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**

  ## v2.3.3

  ### What's new

  * Introduced the ability to detect if a device is using VPN. To learn more, see [VPN Detection](/docs/smart-signals-reference#vpn-detection-for-mobile-devices).
  * Introduced the ability to detect if an app using this SDK is being instrumented by Frida. To learn more, see [Frida Detection](/docs/smart-signals-reference#frida-detection).
  * Added runtime dependency `androidx.core:core`

  ### What's changed

  * Upgraded dependency `com.github.fingerprintjs:fingerprint-android` to v**2.1.0**

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 33 (`targetSdk = 33`)
  * **Compiled using** API Level 34 (`compileSdk = 34`)

  ### Build Info

  * Kotlin: v**1.9.10** (`org.jetbrains.kotlin:kotlin-*:1.9.10`)
  * Android Gradle Plugin: v**8.1.1** (`com.android.tools.build:gradle:8.1.1`)
  * Gradle: v**8.3.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="July 2023">
  ## v2.3.2

  ### What's changed

  * Upgraded dependency `com.github.fingerprintjs:fingerprint-android` to v**2.0.2**

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 33 (`targetSdk = 33`)
  * **Compiled using** API Level 33 (`compileSdk = 33`)

  ### Build Info

  * Kotlin: v**1.8.21** (`org.jetbrains.kotlin:kotlin-*:1.8.21`)
  * Android Gradle Plugin: v**7.4.2** (`com.android.tools.build:gradle:7.4.2`)
  * Gradle: v**7.5.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="April 2023">
  ## v2.3.1

  ### What's changed

  * The following dependencies have now been declared within `com.fingerprint.android:pro`. They need not anymore be individually included in build.gradle.
    * `org.jetbrains.kotlin:kotlin-stdlib`
    * `com.github.fingerprintjs:fingerprint-android`
  * Reduced the size of the payload that is transmitted from the device to Fingerprint’s servers.

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 33 (`targetSdk = 33`)
  * **Compiled using** API Level 33 (`compileSdk = 33`)

  ### Build Info

  * Kotlin: v**1.8.0** (`org.jetbrains.kotlin:kotlin-*:1.8.0`)
  * Android Gradle Plugin: v**7.4.2** (`com.android.tools.build:gradle:7.4.2`)
  * Gradle: v**7.5.0**
  * jvmTarget : **Java 8**
</Update>

<Update label="March 2023" tags={["Smart Signals"]}>
  ## v2.3.0

  ### What's changed

  * Introduced the ability to detect if the requests to the app are being made from
    * An emulated device. To learn more, see [Android Emulator Detection](/docs/smart-signals-reference#android-emulator-detection).
    * A rooted device. To learn more, see [Rooted Device Detection](/docs/smart-signals-reference#rooted-device-detection).
    * A factory-reset device. To learn more, see [Factory Reset Detection](/docs/smart-signals-reference#factory-reset-detection).
  * Introduced the ability to detect if a cloned version of the app is being used to make requests to your servers. To learn more, see [Cloned App Detection](/docs/smart-signals-reference#cloned-app-detection).

  ### Compatibility

  * **Requires** Android 5.0+ ([API Level 21 or higher](https://developer.android.com/about/versions/lollipop))
  * **Tested with** API Level 33 (`targetSdk = 33`)
  * **Compiled using** API Level 33 (`compileSdk = 33`)

  ### Build Info

  * Kotlin: v**1.7.0** (`org.jetbrains.kotlin:kotlin-*:1.7.0`)
  * Android Gradle Plugin: v**7.2.2** (`com.android.tools.build:gradle:7.2.2`)
  * Gradle: v**7.4.2**
  * jvmTarget : **Java 8**
</Update>
