[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7197":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},7197,"android","bitwarden\u002Fandroid","bitwarden","Bitwarden mobile apps (Password Manager and Authenticator) for Android.","https:\u002F\u002Fbitwarden.com",null,"Kotlin",8968,991,137,134,0,4,43,173,23,39.99,"GNU General Public License v3.0",false,"main",[5,7,26,27,28],"compose","jetpack","kotlin","2026-06-12 02:01:35","# Bitwarden Android\n\n## Contents\n\n- [Compatibility](#compatibility)\n- [Setup](#setup)\n- [Dependencies](#dependencies)\n\n## Compatibility\n\n- **Minimum SDK**: 29 (Android 10)\n- **Target SDK**: 36 (Android 16)\n- **Device Types Supported**: Phone and Tablet\n- **Orientations Supported**: Portrait and Landscape\n\n## Setup\n\n1. Clone the repository:\n\n    ```sh\n    $ git clone https:\u002F\u002Fgithub.com\u002Fbitwarden\u002Fandroid\n    ```\n\n2. Create a `user.properties` file in the root directory of the project and add the following properties:\n\n    - `gitHubToken`: A \"classic\" Github Personal Access Token (PAT) with the `read:packages` scope (ex: `gitHubToken=gph_xx...xx`). These can be generated by going to the [Github tokens page](https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens). See [the Github Packages user documentation concerning authentication](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-gradle-registry#authenticating-to-github-packages) for more details.\n    - `localSdk`: A boolean value to determine if the SDK should be loaded from the local maven artifactory (ex: `localSdk=true`). This is particularly useful when developing new SDK capabilities. Review [Linking SDK to clients](https:\u002F\u002Fcontributing.bitwarden.com\u002Fgetting-started\u002Fsdk\u002F#linking-the-sdk-to-clients) for more details.\n\n3. Setup the code style formatter:\n\n    All code must follow the guidelines described in the [Code Style Guidelines document](docs\u002FSTYLE_AND_BEST_PRACTICES.md). To aid in adhering to these rules, all contributors should apply `docs\u002Fbitwarden-style.xml` as their code style scheme. In IntelliJ \u002F Android Studio:\n\n    - Navigate to `Preferences > Editor > Code Style`.\n    - Hit the `Manage` button next to `Scheme`.\n    - Select `Import`.\n    - Find the `bitwarden-style.xml` file in the project's `docs\u002F` directory.\n    - Import \"from\" `BitwardenStyle` \"to\" `BitwardenStyle`.\n    - Hit `Apply` and `OK` to save the changes and exit Preferences.\n\n    Note that in some cases you may need to restart Android Studio for the changes to take effect.\n\n    All code should be formatted before submitting a pull request. This can be done manually but it can also be helpful to create a macro with a custom keyboard binding to auto-format when saving. In Android Studio on OS X:\n\n    - Select `Edit > Macros > Start Macro Recording`\n    - Select `Code > Optimize Imports`\n    - Select `Code > Reformat Code`\n    - Select `File > Save All`\n    - Select `Edit > Macros > Stop Macro Recording`\n\n    This can then be mapped to a set of keys by navigating to `Android Studio > Preferences` and editing the macro under `Keymap` (ex : shift + command + s).\n\n    Please avoid mixing formatting and logical changes in the same commit\u002FPR. When possible, fix any large formatting issues in a separate PR before opening one to make logical changes to the same code. This helps others focus on the meaningful code changes when reviewing the code.\n\n4. Setup JDK `Version` `21`:\n\n    - Navigate to `Preferences > Build, Execution, Deployment > Build Tools > Gradle`.\n    - Hit the selected Gradle JDK next to `Gradle JDK:`.\n    - Select a `21.x` version or hit `Download JDK...` if not present.\n    - Select `Version` `21`.\n    - Select your preferred `Vendor`.\n    - Hit `Download`.\n    - Hit `Apply`.\n\n5. Setup `detekt` pre-commit hook (optional):\n\nRun the following script from the root of the repository to install the hook. This will overwrite any existing pre-commit hook if present.\n\n```shell\necho \"Writing detekt pre-commit hook...\"\ncat \u003C\u003C 'EOL' > .git\u002Fhooks\u002Fpre-commit\n#!\u002Fusr\u002Fbin\u002Fenv bash\n\necho \"Running detekt check...\"\nOUTPUT=\"\u002Ftmp\u002Fdetekt-$(date +%s)\"\n.\u002Fgradlew -Pprecommit=true detekt > $OUTPUT\nEXIT_CODE=$?\nif [ $EXIT_CODE -ne 0 ]; then\n  cat $OUTPUT\n  rm $OUTPUT\n  echo \"***********************************************\"\n  echo \"                 detekt failed                 \"\n  echo \" Please fix the above issues before committing \"\n  echo \"***********************************************\"\n  exit $EXIT_CODE\nfi\nrm $OUTPUT\nEOL\necho \"detekt pre-commit hook written to .git\u002Fhooks\u002Fpre-commit\"\necho \"Making the hook executable\"\nchmod +x .git\u002Fhooks\u002Fpre-commit\n\necho \"detekt pre-commit hook installed successfully to .git\u002Fhooks\u002Fpre-commit\"\n```\n\n## Dependencies\n\n### Application Dependencies\n\nThe following is a list of all third-party dependencies included as part of the application beyond the standard Android SDK.\n\n- **AndroidX Activity**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Factivity\n    - Purpose: Allows access composable APIs built on top of Activity.\n    - License: Apache 2.0\n\n- **AndroidX Appcompat**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fappcompat\n    - Purpose: Allows access to new APIs on older API versions.\n    - License: Apache 2.0\n\n- **AndroidX Autofill**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fautofill\n    - Purpose: Allows access to tools for building inline autofill UI.\n    - License: Apache 2.0\n\n- **AndroidX Biometrics**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fbiometric\n    - Purpose: Authenticate with biometrics or device credentials.\n    - License: Apache 2.0\n\n- **AndroidX Browser**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fbrowser\n    - Purpose: Displays webpages with the user's default browser.\n    - License: Apache 2.0\n\n- **AndroidX Camera**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcamera\n    - Purpose: Display and capture images for barcode scanning.\n    - License: Apache 2.0\n\n- **AndroidX Compose**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcompose\n    - Purpose: A Kotlin-based declarative UI framework.\n    - License: Apache 2.0\n\n- **AndroidX Core**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcore\n    - Purpose: Backwards compatible platform features and APIs.\n    - License: Apache 2.0\n\n- **AndroidX Credentials**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fcredentials\n    - Purpose: Unified access to user's credentials.\n    - License: Apache 2.0\n\n- **AndroidX Lifecycle**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Flifecycle\n    - Purpose: Lifecycle aware components and tooling.\n    - License: Apache 2.0\n\n- **AndroidX Navigation**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fnavigation\n    - Purpose: Provides a consistent API for navigating between Android components.\n    - License: Apache 2.0\n\n- **AndroidX Room**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Froom\n    - Purpose: A convenient SQLite-based persistence layer for Android.\n    - License: Apache 2.0\n\n- **AndroidX Security**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fsecurity\n    - Purpose: Safely manage keys and encrypt files and sharedpreferences.\n    - License: Apache 2.0\n\n- **AndroidX WorkManager**\n    - https:\u002F\u002Fdeveloper.android.com\u002Fjetpack\u002Fandroidx\u002Freleases\u002Fwork\n    - Purpose: The WorkManager is used to schedule deferrable, asynchronous tasks that must be run reliably.\n    - License: Apache 2.0\n\n- **Dagger Hilt**\n    - https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fdagger\n    - Purpose: Dependency injection framework.\n    - License: Apache 2.0\n\n- **Glide**\n    - https:\u002F\u002Fgithub.com\u002Fbumptech\u002Fglide\n    - Purpose: Image loading and caching.\n    - License: BSD, part MIT and Apache 2.0\n\n- **kotlinx.collections.immutable**\n    - https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx.collections.immutable\n    - Purpose: Immutable collection interfaces and implementation prototypes for Kotlin.\n    - License: Apache 2.0\n\n- **kotlinx.coroutines**\n    - https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx.coroutines\n    - Purpose: Kotlin coroutines library for asynchronous and reactive code.\n    - License: Apache 2.0\n\n- **kotlinx.serialization**\n    - https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx.serialization\u002F\n    - Purpose: JSON serialization library for Kotlin.\n    - License: Apache 2.0\n\n- **OkHttp 3**\n    - https:\u002F\u002Fgithub.com\u002Fsquare\u002Fokhttp\n    - Purpose: An HTTP client used by the library to intercept and log traffic.\n    - License: Apache 2.0\n\n- **Retrofit 2**\n    - https:\u002F\u002Fgithub.com\u002Fsquare\u002Fretrofit\n    - Purpose: A networking layer interface.\n    - License: Apache 2.0\n\n- **Timber**\n    - https:\u002F\u002Fgithub.com\u002FJakeWharton\u002Ftimber\n    - Purpose: Extensible logging library for Android.\n    - License: Apache 2.0\n\n- **ZXing**\n    - https:\u002F\u002Fgithub.com\u002Fzxing\u002Fzxing\n    - Purpose: Barcode scanning and generation.\n    - License: Apache 2.0\n\nThe following is an additional list of third-party dependencies that are only included in the non-F-Droid build variants of the application.\n\n- **Firebase Cloud Messaging**\n    - https:\u002F\u002Fgithub.com\u002Ffirebase\u002Ffirebase-android-sdk\n    - Purpose: Allows for push notification support.\n    - License: Apache 2.0\n\n- **Firebase Crashlytics**\n    - https:\u002F\u002Fgithub.com\u002Ffirebase\u002Ffirebase-android-sdk\n    - Purpose: SDK for crash and non-fatal error reporting.\n    - License: Apache 2.0\n\n- **Google Play Reviews**\n    - https:\u002F\u002Fdeveloper.android.com\u002Freference\u002Fcom\u002Fgoogle\u002Fandroid\u002Fplay\u002Fcore\u002Frelease-notes\n    - Purpose: On standard builds provide an interface to add a review for the password manager application in Google Play.\n    - License: Apache 2.0\n\n### Development Environment Dependencies\n\nThe following is a list of additional third-party dependencies used as part of the local development environment. This includes test-related artifacts as well as tools related to code quality and linting. These are not present in the final packaged application.\n\n- **detekt**\n    - https:\u002F\u002Fgithub.com\u002Fdetekt\u002Fdetekt\n    - Purpose: A static code analysis tool for the Kotlin programming language.\n    - License: Apache 2.0\n\n- **JUnit 5**\n    - https:\u002F\u002Fgithub.com\u002Fjunit-team\u002Fjunit5\n    - Purpose: Unit Testing framework for testing application code.\n    - License: Eclipse Public License 2.0\n\n- **MockK**\n    - https:\u002F\u002Fgithub.com\u002Fmockk\u002Fmockk\n    - Purpose: Kotlin-friendly mocking library.\n    - License: Apache 2.0\n\n- **Robolectric**\n    - https:\u002F\u002Fgithub.com\u002Frobolectric\u002Frobolectric\n    - Purpose: A unit testing framework for code directly depending on the Android framework.\n    - License: MIT\n\n- **Turbine**\n    - https:\u002F\u002Fgithub.com\u002Fcashapp\u002Fturbine\n    - Purpose: A small testing library for kotlinx.coroutine's Flow.\n    - License: Apache 2.0\n\n### CI\u002FCD Dependencies\n\nThe following is a list of additional third-party dependencies used as part of the CI\u002FCD workflows. These are not present in the final packaged application.\n\n- **Fastlane**\n    - https:\u002F\u002Ffastlane.tools\u002F\n    - Purpose: Automates building, signing, and distributing applications.\n    - License: MIT\n\n- **Kover**\n    - https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx-kover\n    - Purpose: Kotlin code coverage toolset.\n    - License: Apache 2.0\n","Bitwarden Android 是一款适用于Android系统的密码管理和身份验证应用。它使用Kotlin语言编写，基于Jetpack Compose框架构建，支持手机和平板设备，兼容Android 10及以上版本。该应用提供安全的密码存储、自动填充以及双因素认证等功能，确保用户数据的安全性和便捷性。Bitwarden适合需要跨平台同步密码和敏感信息的个人或企业用户，在日常使用中提高账户安全性的同时简化了登录流程。此外，开源特性允许开发者根据需求定制功能，增强其灵活性与扩展性。",2,"2026-06-11 03:11:05","top_language"]