ข้ามไปยังเนื้อหา

คู่มือการพัฒนา

ยินดีต้อนรับสู่คู่มือการพัฒนา ELRS Mobile! โปรเจกต์นี้เป็นการนำ Flutter มาใช้ในการสร้าง ExpressLRS compilation และ flashing pipeline ซึ่งออกแบบมาให้ทำงานแบบออฟไลน์ได้อย่างสมบูรณ์

ในการร่วมพัฒนาโปรเจกต์นี้ คุณจะต้องติดตั้งเครื่องมือดังต่อไปนี้:

Flutter SDK (Stable) Dart SDK Python 3.x Cocoapods (iOS/macOS)

  1. โคลน repository:

    Terminal window
    git clone https://github.com/wbhinton/ELRS-Mobile.git
    cd ELRS-Mobile
  2. ติดตั้ง dependencies:

    Terminal window
    flutter pub get
  3. เรียกใช้งานแอปพลิเคชัน:

    Terminal window
    # สำหรับ Android
    flutter run
    # สำหรับ iOS (ต้องใช้ Mac และอุปกรณ์จริง/simulator)
    flutter run

โค้ดเบสนี้ใช้โครงสร้างแบบ feature-first ซึ่งอยู่ใน lib/src/

คุณสมบัติ

  • flashing/ ตรรกะหลักและ UI สำหรับ flashing pipeline
  • firmware_manager/ จัดการการดาวน์โหลดและแคช firmware จาก artifactory
  • configurator/ UI สำหรับการตั้งค่าตัวเลือกผู้ใช้ เช่น Binding Phrases และ WiFi

แกนหลัก

  • networking/ ตรรกะเฉพาะแพลตฟอร์มสำหรับการผูก process เข้ากับฮอตสปอตของฮาร์ดแวร์
  • storage/ การจัดการแคชภายในและการคงอยู่ของข้อมูลด้วย SQLite
  • analytics/ การตรวจสอบที่เน้นความเป็นส่วนตัวเป็นอันดับแรก (Sentry และ Aptabase)

เราใช้ Riverpod สำหรับการจัดการสถานะแบบ global และ Flutter Hooks สำหรับสถานะระดับ widget ในท้องถิ่น การผสมผสานนี้ทำให้มั่นใจได้ถึง UI ที่ตอบสนองสูง โดยไม่ต้องมี boilerplate ของ StatefulWidgets มาตรฐาน


สำหรับข้อมูลทางเทคนิคโดยละเอียดเพิ่มเติม โปรดดูคู่มือต่อไปนี้:


เมื่อตรวจสอบไบนารี คุณอาจสังเกตเห็นการเยื้องไบต์เล็กน้อยเมื่อเทียบกับ Python Configurator มาตรฐาน นี่เป็นเพราะ การย่อขนาด JSON

Python Configurator มักจะแทรกช่องว่างหลังเครื่องหมายโคลอน (เช่น {"uid": [1,2,3]}) ในขณะที่ ELRS Mobile สร้าง JSON ที่หนาแน่นกว่า (เช่น {"uid":[1,2,3]}) ทั้งสองแบบทำงานได้เหมือนกันบนฮาร์ดแวร์ เนื่องจากตัวแยกวิเคราะห์ภายในของ ESP32 จะละเว้นช่องว่างเหล่านี้