{"id":13578427,"url":"https://github.com/fingerprintjs/fingerprintjs-android","last_synced_at":"2025-05-15T10:06:50.009Z","repository":{"id":37353872,"uuid":"305740280","full_name":"fingerprintjs/fingerprintjs-android","owner":"fingerprintjs","description":"Swiss army knife for identifying and fingerprinting Android devices. MIT license, no restrictions on usage in production.","archived":false,"fork":false,"pushed_at":"2024-12-10T10:48:13.000Z","size":8065,"stargazers_count":622,"open_issues_count":0,"forks_count":89,"subscribers_count":18,"default_branch":"main","last_synced_at":"2025-05-08T03:59:26.198Z","etag":null,"topics":["android-development","android-library","android-login","android-security","device-fingerprint","device-identifier"],"latest_commit_sha":null,"homepage":"https://fingerprint.com/github/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fingerprintjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-20T14:46:34.000Z","updated_at":"2025-05-06T07:00:16.000Z","dependencies_parsed_at":"2025-04-14T15:50:30.311Z","dependency_job_id":"d5040a2b-33b8-4d44-97c1-67f2710c0634","html_url":"https://github.com/fingerprintjs/fingerprintjs-android","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fingerprintjs%2Ffingerprintjs-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fingerprintjs","download_url":"https://codeload.github.com/fingerprintjs/fingerprintjs-android/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254319720,"owners_count":22051073,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-development","android-library","android-login","android-security","device-fingerprint","device-identifier"],"created_at":"2024-08-01T15:01:30.521Z","updated_at":"2025-05-15T10:06:44.996Z","avatar_url":"https://github.com/fingerprintjs.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"resources/logo_light.svg\" /\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"resources/logo_dark.svg\" /\u003e\n      \u003cimg src=\"resources/logo_dark.svg\" alt=\"Fingerprint logo\" width=\"312px\" /\u003e\n    \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://jitpack.io/#fingerprintjs/fingerprint-android\"\u003e\n    \u003cimg src=\"https://jitpack.io/v/fingerprintjs/fingerprint-android.svg\" alt=\"Latest release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/fingerprintjs/fingerprint-android/actions?workflow=Test\"\u003e\n    \u003cimg src=\"https://github.com/fingerprintjs/fingerprint-android/workflows/Test/badge.svg\" alt=\"Build status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://android-arsenal.com/api?level=21\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/API-21%2B-brightgreen.svg\" alt=\"Android minAPI status\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://discord.gg/39EpE2neBg\"\u003e\n    \u003cimg src=\"https://img.shields.io/discord/852099967190433792?style=for-the-badge\u0026label=Discord\u0026logo=Discord\u0026logoColor=white\" alt=\"Discord server\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n \t\u003ca href='https://play.google.com/store/apps/details?id=com.fingerprintjs.android.playground'\u003e\n \t\t\u003cimg alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' width=\"240px/\u003e\n \t\u003c/a\u003e\n \u003c/p\u003e\n \n\u003cp align=\"center\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"resources/fingerprint-demo-1.gif\" width=\"195\"\u003e\n  \u003cimg src=\"resources/fingerprint-demo-2.png\" width=\"195\"\u003e\n  \u003cimg src=\"resources/fingerprint-demo-3.png\" width=\"195\"\u003e\n  \u003cimg src=\"resources/fingerprint-demo-4.png\" width=\"195\"\u003e\n\u003c/p\u003e\n\n# FingerprintJS Android\n\nLightweight library for device identification and fingerprinting.\n\nFully written in Kotlin. **100% Crash-free**.\n\nCreates a device identifier from all available platform signals.\n\nThe identifier is fully stateless and will remain the same after reinstalling or clearing application data.\n\n[Check the FingeprintJS iOS](https://github.com/fingerprintjs/fingerprintjs-ios) – an iOS library for device fingerprinting.\n\n## Table of Contents\n1. [Quick start](#quick-start)\n2. [Usage](#3-get-deviceids-and-fingerprints)\n3. [Playground App](#fingerprint-android-demo-app)\n\n\n## Quick start\n\n### 1. Add repository\n\nAdd these lines to your `build.gradle`.\n\n\n```gradle\nallprojects {\t\n  repositories {\n  ...\n  maven { url 'https://jitpack.io' }\t\n}}\n```\n\n### 2. Add dependency\n\nAdd this to a `build.gradle` of a module.\n\n```gradle\ndependencies {\n  ...\n  implementation \"com.github.fingerprintjs:fingerprint-android:2.2.0\"\n}\n```\n\nNote that the library has the following runtime dependencies:\n- [kotlin-stdlib](https://kotlinlang.org/api/latest/jvm/stdlib/)\n- [androidx.appcompat](https://developer.android.com/jetpack/androidx/releases/appcompat)\n\n### 3. Get deviceIDs and fingerprints\n\nKotlin\n\n```kotlin\n\n// Initialization\n val fingerprinter = FingerprinterFactory.create(context)\n\n// Usage\nfingerprinter.getFingerprint(version = Fingerprinter.Version.V_5) { fingerprint -\u003e\n    // Use fingerprint\n}\n\nfingerprinter.getDeviceId(version = Fingerprinter.Version.V_5) { result -\u003e\n    val deviceId = result.deviceId\n    // Use deviceId\n}\n\n```\n\nJava\n\n```java\n\n// Initialization\nFingerprinter fingerprinter = FingerprinterFactory.create(context);\n\n// Usage\nfingerprinter.getFingerprint(Fingerprinter.Version.V_5, fingerprint-\u003e {\n    // use fingerprint\n    return null;\n});\n\nfingerprinter.getDeviceId(Fingerprinter.Version.V_5, deviceIdResult-\u003e {\n    String deviceId = deviceIdResult.getDeviceId();\n    // use deviceId\n    return null;\n});\n\n```\n\n`getFingerprint` and `getDeviceId` methods execute on a worker thread, as well as the lambda you pass to them, so don't forget to post the work to the main thread when needed.\n\nAlso the results are cached, so subsequent calls will be faster.\n\n#### deviceId vs fingerprint\n\nThe library operates with two entities.\n\n1. `deviceId` - is a random and unique device identifier.\n\nCan be used by developers to identify devices to deliver personalized content, detect suspicious activity, and perform fraud detection.\nInternally it will use Google Service Framework ID, Media DRM ID or Android ID depending on which one is available.\nThis identifier is stable, i.e. it will remain the same even after reinstalling your app.\nBut it will be different after factory reset of the device.\n\n2. `fingerprint` is a digital device fingerprint. It works by combining all available device signals and attributes into a single identifier. There is a probability that two identical devices will have the same `fingerprint`.\n\n\n#### Which one should I use?\n\n`deviceId` is guaranteed to be random and should be your first choice for device identification. This identifier can be spoofed though and shouldn't be used in security-focused or fraud detection scenarios.\n\n`fingerprint` is much harder to spoof and is a safer choice in security-focused use cases.\n\nSee the [table](docs/stability.md) about stability of each.\n\n\n## Versioning\n\n`fingerprint` is versioned incrementally; the version should be set explicitly to avoid unexpected `fingerprint` changes when updating the library.\n\nSee full [API reference](docs/api_reference.md).\n\n## Migration from 1.\\*.\\* library versions\n\nThe library API has undergone some changes in the major version 2. The older APIs are left as deprecated for now, but are planned to be removed in the future releases.\nFor the vast majority of library usage scenarios the migration process will be fast and almost effortless.\n\nCheck out [Migration to V2](docs/migration_to_v2.md) for migration steps and the motivation behind the changes to the API.\n\n## Fingerprint Android Demo App\n\nTry the library features in the [Fingerprint Android Demo App](https://github.com/fingerprintjs/fingerprintjs-android/releases/download/2.2.0/Playground-release-2.2.0.apk).\n\n## Android API support\n\nfingerprint-android supports API versions from 21 (Android 5.0) and higher.\n\n## iOS version\n\n-   [Fingerprint iOS -- iOS identification and fingerprinting in native apps](https://github.com/fingerprintjs/fingerprintjs-ios)\n\n## License\n\nThis library is MIT licensed.\nCopyright FingerprintJS, Inc. 2020-2023.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffingerprintjs%2Ffingerprintjs-android/lists"}