Panduan Pengembangan
Selamat datang di panduan pengembangan ELRS Mobile! Proyek ini adalah implementasi Flutter asli dari pipeline kompilasi dan flashing ExpressLRS, dirancang untuk bekerja sepenuhnya offline.
Prasyarat
Section titled “Prasyarat”Untuk berkontribusi pada proyek ini, Anda akan memerlukan alat berikut yang terinstal:
Memulai
Section titled “Memulai”-
Kloning repositori:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
Instal dependensi:
Terminal window flutter pub get -
Jalankan aplikasi:
Terminal window # Untuk Androidflutter run# Untuk iOS (membutuhkan Mac dan perangkat fisik/simulator)flutter run
Arsitektur Proyek
Section titled “Arsitektur Proyek”Codebase mengikuti struktur fitur-pertama yang terletak di lib/src/.
Fitur
- flashing/ Logika inti dan UI untuk pipeline flashing.
- firmware_manager/ Menangani pengunduhan dan caching firmware dari artifactory.
- configurator/ UI untuk mengatur opsi pengguna seperti Binding Phrases dan WiFi.
Inti
- networking/ Logika spesifik platform untuk pengikatan proses ke hotspot perangkat keras.
- storage/ Manajemen cache lokal dan persistensi SQLite.
- analytics/ Observabilitas yang mengutamakan privasi (Sentry dan Aptabase).
Manajemen State
Section titled “Manajemen State”Kami menggunakan Riverpod untuk manajemen state global dan Flutter Hooks untuk state tingkat widget lokal. Kombinasi ini memastikan UI yang sangat reaktif tanpa boilerplate StatefulWidgets standar.
Pembahasan Mendalam
Section titled “Pembahasan Mendalam”Untuk informasi teknis lebih rinci, silakan lihat panduan berikut:
- Arsitektur Teknis: Pembahasan mendalam tentang
FirmwareAssemblerdan native networking stack. - Validasi Firmware: Cara menggunakan Dart dan Python tools untuk memverifikasi integritas biner.
Catatan tentang Minifikasi JSON
Section titled “Catatan tentang Minifikasi JSON”Saat mengaudit biner, Anda mungkin melihat sedikit perbedaan offset byte dibandingkan dengan Python Configurator standar. Ini disebabkan oleh JSON minification. Python Configurator sering menyisipkan spasi setelah titik dua (misalnya, {"uid": [1,2,3]}), sementara ELRS Mobile menghasilkan JSON padat (misalnya, {"uid":[1,2,3]}). Keduanya secara fungsional identik pada hardware, karena parser internal ESP32 mengabaikan spasi kosong ini.