프로젝트 소개

Meshtastic-Android는 Android 및 Compose Desktop용 공식 Meshtastic 클라이언트로, 오픈소스 메시 라디오를 통해 통신하는 데 사용된다. 기기 측 펌웨어는 별도 저장소에 있으며, 프로젝트 웹사이트는 meshtastic.org이다. 2.8 라인에서 강조된 주요 기능으로는 주변 노드와 채널을 찾기 위한 메시 네트워크 검색, 주변 메시에 참여하기 위한 Mesh Beacon 초대, 노드가 그려진 지도 영역을 넘을 때 알림을 주는 웨이포인트 지오펜스, 기기 보안 키의 암호화된 백업/복원/삭제, 태그로 연락처와 채널을 공유하는 NFC, 노드 및 메시징 UI의 XEdDSA 패킷 서명 표시기, 지원 센서의 대기질 텔레메트리(PM1.0, PM2.5, PM10, CO2), 그리고 온디바이스 어시스턴트가 일반적인 워크플로를 트리거할 수 있게 하는 App Functions / 시스템 AI 통합이 있다. 배포는 주로 GitHub 릴리스를 통해 이루어지며, 자동 업데이트를 위한 Obtainium 링크도 제공된다. 두 가지 flavor가 있다: Google Crashlytics와 Google Maps를 추가하는 `google` flavor와 Google 의존성이 없는 `fdroid` flavor이다. 이 앱은 F-Droid, IzzyOnDroid, Google Play에도 게시되며, Play Store 업데이트가 가장 늦게 도착한다. 데스크톱 설치 프로그램(macOS DMG, Windows MSI/EXE, Linux DEB/RPM/AppImage)은 GitHub Releases에서 제공되며, Flatpak은 Flathub에서 사용할 수 있다. 아키텍처는 Android와 Compose Desktop을 대상으로 하는 공유 Kotlin Multiplatform 코어를 기반으로 구축된다. 비즈니스 로직, 데이터 소스, 통신 모듈은 플랫폼에 구애받지 않는다. UI는 Material 3와 함께 JetBrains Compose Multiplatform을 사용하고, 상태 관리는 ViewModels, Coroutines 및 Flow를 사용한 단방향 데이터 흐름을 따르며, 의존성 주입은 Koin Annotations와 함께 Koin을 사용하고, 내비게이션은 RESTful 딥 링킹과 함께 JetBrains Navigation 3을 사용한다. 데이터 계층은 Room KMP, DataStore, Protobuf를 결합하며, protobuf 모델은 업스트림 Maven 아티팩트에서 가져와 사용한다. BLE 지원은 플랫폼에 구애받지 않는 인터페이스 뒤에서 Kable 멀티플랫폼 라이브러리를 사용한다. 저장소는 문서화된 여러 모듈로 구성되어 있으며, androidApp 및 desktopApp 호스트, domain, repository, TAK server, BLE, network, data, database, datastore, service, navigation, resources, model, UI, common, DI, testing, Konsist 아키텍처 테스트, NFC, preferences, barcode용 코어 모듈, 그리고 messaging, map, MapLibre 지도 표면, node, settings, firmware, intro, Wi-Fi 프로비저닝, connections, discovery, docs, 홈 화면 Glance 위젯용 기능 모듈과 베이스라인 프로필 생성이 포함된다. 통합 기능 중 하나는 설정에서 활성화되는 내장 Local TAK Server로, 포트 8089에서 루프백 전용 TLS(mTLS) 서버를 실행하여 같은 기기의 ATAK가 연결해 메시를 통해 트래픽을 라우팅할 수 있게 한다. 문서에는 Jekyll 사용자/개발자 사이트와 Dokka로 생성된 API 참조가 포함되며, 둘 다 main에 푸시할 때 GitHub Pages에 배포된다. 번역은 Crowdin을 통해 관리된다. 이 프로젝트는 GPL-3.0 라이선스를 따르며, 기여 및 릴리스 프로세스 문서가 있고, 디버그 및 릴리스 빌드는 나란히 설치되지만 동시에 실행해서는 안 된다는 점을 명시한다. google flavor를 로컬에서 빌드하려면 secrets.properties에 Google Maps Android SDK API 키가 필요하며, 없으면 플레이스홀더 키로 빌드는 성공하지만 지도 타일이 로드되지 않는다.