このプロジェクトについて

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リンクも提供されています。2つのフレーバーがあり、Google CrashlyticsとGoogle Mapsを追加する`google`フレーバーと、Google依存関係のない`fdroid`フレーバーがあります。このアプリは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を使用し、状態管理はViewModel、Coroutines、Flowによる単方向データフローに従い、依存性注入はKoinとKoin Annotationsを使用し、ナビゲーションは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フレーバーをローカルでビルドするには、secrets.propertiesにGoogle Maps Android SDK APIキーが必要です。これがない場合、ビルドはプレースホルダーキーで成功しますが、地図タイルは読み込まれません。