프로젝트 소개

이 저장소는 Bitwarden의 공식 Android 애플리케이션으로, 비밀번호 관리자와 인증기를 하나의 모바일 클라이언트로 통합합니다. 이 프로젝트는 최소 Android 10(SDK 29)을 지원하고 Android 17(SDK 37)을 대상으로 하며, 휴대폰과 태블릿 폼 팩터를 세로 및 가로 방향으로 모두 지원합니다. 코드베이스는 Kotlin으로 작성되었으며 선언적 UI 프레임워크로 Jetpack Compose를 사용합니다. 또한 Activity, Appcompat, Autofill, Biometrics, Browser, Camera, Core, Credentials, Lifecycle, Navigation, Room, Security, WorkManager를 포함한 광범위한 AndroidX 라이브러리 세트를 사용합니다. 의존성 주입은 Dagger Hilt로 처리되고, 이미지 로딩은 Glide, 네트워킹은 Retrofit 2와 OkHttp 3를 사용합니다. Kotlin 코루틴, 불변 컬렉션, 직렬화 라이브러리는 비동기 및 반응형 코드를 지원하며, Timber는 로깅을, ZXing은 인증기 코드용 바코드 스캔을 처리합니다. 이 애플리케이션은 두 가지 빌드 변형으로 제공됩니다. 표준 빌드에는 푸시 알림용 Firebase Cloud Messaging, 충돌 보고용 Firebase Crashlytics, Google Play 리뷰 통합이 포함됩니다. F-Droid 빌드는 이러한 Google 의존 구성 요소를 생략하여 독점 서비스가 없는 앱을 유지합니다. 개발에는 JDK 21과 Android Studio가 필요하며, 기여자가 IDE로 가져오는 프로젝트별 코드 스타일 구성표(bitwarden-style.xml)가 있습니다. GitHub Packages에서 종속성을 가져오려면 read:packages 범위의 GitHub Personal Access Token이 필요하며, localSdk 플래그를 사용하면 SDK 기능을 작업하는 기여자가 로컬 Maven 아티팩토리로 SDK를 리디렉션할 수 있습니다. 코드 품질은 detekt 정적 분석을 통해 강제되며, 각 커밋 전에 detekt를 실행하는 선택적 pre-commit 훅이 있습니다. 테스트는 JUnit 5, MockK, Robolectric, 그리고 코루틴 Flow 테스트용 Turbine에 의존합니다. CI/CD는 앱 빌드, 서명, 배포에 Fastlane을 사용하고 Kotlin 코드 커버리지에는 Kover를 사용합니다. README는 또한 명확한 기여 워크플로를 문서화합니다: 포맷 변경을 논리적 변경과 분리하고, 풀 리퀘스트 제출 전에 코드를 포맷하며, 프로젝트의 스타일 및 모범 사례 문서를 따르십시오. 전반적으로 이는 널리 사용되는 비밀번호 관리 및 2단계 인증 서비스를 위한 성숙하고 잘 구조화된 오픈 소스 Android 클라이언트입니다.