มหากาพย์ port flutter ไป Raspberry Pi (ARMv7)

ช่สงนี้ได้ทดลองอะไรบางอย่างเพราะว่าความน่าสนใจของ flutter เรื่องการเขียนและการ compile cross platform ซึ่งน่าสนใจมาก และบังเอิญมีคนที่ build desktop app บน Raspberry Pi ได้ก็รู้สึกว่าน่าสนใจมากๆ

ก็เลยตามต่อไปที่ medium ซึ่งหัวข้อบทความสยองมาก คือ Flutter on Raspberry Pi (mostly) from scratch งั้นต้องลอง!! ก็เลยได้ประสบการณ์ในการ build ไป 2 วัน ก็เลยถือโอกาสมา blog ประสบการณ์การ port flutter สักหน่อย

หลักการของ flutter ออกจะซับซ้อน แต่แนวทางถือว่าใช้ได้เลย เสียอย่างเดียวคือเรื่อง cross compiler อืมมม…จะเล่ายังไงดี ดู diagrame น่าจะเข้าใจ

ถ้าใครเคยเขียน flutter มาก่อนจะทราบว่าถ้าเราจะ build app บน platform ใดก็ตาม ไม่ว่าจะเป็น Android, iOS และบน Desktop จะต้องมีเครื่องมือในการ compile สำหรับ platform นั้นๆ ด้วย ในการณีนี้คือ ต้องการ port flutter ไป build desktop app เพื่อใช้งานบน raspberry pi ซึ่งแนวคิดออกจะดิบโหดสักหน่อย ดังนั้นเครื่องมืออย่าง flutter ต้องทำงานได้บน ARM และมี build tools ครบสำหรับการ build desktop app ด้วย

ถ้าดู architecture ของ flutter สิ่งที่ต้องทำคือ ต้อง compile flutter engine ใหม่ให้ใช้งานกับ ARMv7 (ผมใช้ raspberry pi 4) เลยต้องไล่ compile ตั้งแต่ llvm+clang, binutils ซึ่งกว่าจะ compile ได้ครบก็กินเวลาไป 2 วัน พอถึงตอนจะ compile engine ก็เกิดปัญหาซะงั้น

พอสั่ง gclient sync ดึงโค้ดของ engine ได้ source code มาไม่หมดไม่รองรับ Arch ที่จะ compile เอวัง… ไว้คราวหน้าลองใหม่บน ARMv6 นะ 😀