คู่มือการพัฒนา
ยินดีต้อนรับสู่คู่มือการพัฒนา ELRS Mobile! โปรเจกต์นี้เป็นการนำ Flutter มาใช้ในการสร้าง ExpressLRS compilation และ flashing pipeline ซึ่งออกแบบมาให้ทำงานแบบออฟไลน์ได้อย่างสมบูรณ์
สิ่งที่ต้องมีก่อนเริ่ม
หัวข้อที่มีชื่อว่า “สิ่งที่ต้องมีก่อนเริ่ม”ในการร่วมพัฒนาโปรเจกต์นี้ คุณจะต้องติดตั้งเครื่องมือดังต่อไปนี้:
เริ่มต้นใช้งาน
หัวข้อที่มีชื่อว่า “เริ่มต้นใช้งาน”-
โคลน repository:
Terminal window git clone https://github.com/wbhinton/ELRS-Mobile.gitcd ELRS-Mobile -
ติดตั้ง dependencies:
Terminal window flutter pub get -
เรียกใช้งานแอปพลิเคชัน:
Terminal window # สำหรับ Androidflutter 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 มาตรฐาน
เจาะลึก
หัวข้อที่มีชื่อว่า “เจาะลึก”สำหรับข้อมูลทางเทคนิคโดยละเอียดเพิ่มเติม โปรดดูคู่มือต่อไปนี้:
- สถาปัตยกรรมทางเทคนิค: เจาะลึก
FirmwareAssemblerและ native networking stack - การตรวจสอบ Firmware: วิธีใช้เครื่องมือ Dart และ Python เพื่อยืนยันความสมบูรณ์ของไบนารี
หมายเหตุเกี่ยวกับการย่อขนาด JSON
หัวข้อที่มีชื่อว่า “หมายเหตุเกี่ยวกับการย่อขนาด JSON”เมื่อตรวจสอบไบนารี คุณอาจสังเกตเห็นการเยื้องไบต์เล็กน้อยเมื่อเทียบกับ Python Configurator มาตรฐาน นี่เป็นเพราะ การย่อขนาด JSON
Python Configurator มักจะแทรกช่องว่างหลังเครื่องหมายโคลอน (เช่น {"uid": [1,2,3]}) ในขณะที่ ELRS Mobile สร้าง JSON ที่หนาแน่นกว่า (เช่น {"uid":[1,2,3]}) ทั้งสองแบบทำงานได้เหมือนกันบนฮาร์ดแวร์ เนื่องจากตัวแยกวิเคราะห์ภายในของ ESP32 จะละเว้นช่องว่างเหล่านี้