ช่วงนี้ทาง Google เริ่มนำ Android X มาใช้ในโปรเจคแอพ Android แล้ว อาจจะทำให้พวกเราที่ใช้ Flutter ทำแอพพลิเคชั่น เจอปัญหาตอน Build ตัวแอพแล้วไม่ผ่าน
พลเองก็เจอปัญหานี้แบบเดียวกัน และเนื่องจากมี Workshop ที่ใช้ในการอบรมหลายตัวได้รับผลกระทบนี้ เลยหาวิธีแก้ปัญหาจนได้ครับ
Android X คืออะไร?
ก่อนจะไปล้างบาง error ที่เกิดจาก AndroidX มาทำความเข้าใจกันหน่อยว่า ทำไมจู่ๆ ระบบที่ทำงานได้ไม่มีปัญหา ถึงจู่ๆ ก็เดี้ยงเพราะ AndroidX
AndroidX เป็น Library ที่ถูกออกแบบขึ้นมาใหม่ และประโยชน์หนึ่งที่ได้ คือชื่อ Package ที่อ่านเข้าใจได้ง่ายขึ้น เช่น
แบบเก่า com.android.support:recyclerview-v7
แบบใหม่ androidx.recyclerview:recyclerview:1.0.0
ด้วยการออกแบบนี้ จะทำให้โค้ดหลักของระบบ Android แยกออกจาก AndroidX ที่สามารถทำการพัฒนา และอัพเดตได้ง่ายกว่าเดิม
เหมือนกับทีมพัฒนา Android ได้โอกาสนี้ จัดไฟล์ที่แยกเก็บไว้ลงในโฟลเดอร์ใหม่ เพื่อให้ง่ายขึ้นนั่นเอง
แต่ก็ทำให้ Library หรือ Package Dart ฝั่ง Android ของเราต้องมาปรับใช้ Android X พวกนี้ใหม่ด้วย
วิธีการ Refactor โค้ดให้รองรับ AndroidX
ถึงแม้ว่าทีมพัฒนา Flutter จะบอกวิธีการไว้ในหน้าเว็บหลัก แต่ขั้นตอนสำหรับคนเริ่มต้นก็อาจจะดูยุ่งยาก ไม่รู้จะเริ่มตรงไหน พลมีวิธีการง่ายๆ ให้ลองทำกัน
โดยเราจะใช้ Android Studio เป็นเครื่องมือครับ
1. เปิดโฟลเดอร์ Android ด้วย Android Studio
ในที่นี้ การอบรม Google Flutter ของพลจะแนะนำให้ใช้ Visual Studio Code เพราะหน้าตา และ Flow การทำงานเรียบง่ายกว่า
ให้คลิกขวาที่โฟลเดอร์ Android ในโปรเจคของเรา และเลือกคำสั่ง Open in Android Studio
2. กำหนดรายละเอียดของ Gradle ที่ใช้
พอเปิดขึ้นมาใน Android Studio แล้วจะมีขั้นตอนการกำหนด Gradle ที่จะใช้กับโปรเจค Android
3. เริ่มขั้นตอน Migrate to Android X
Google เตรียมการเปลี่ยนผ่านนี้มาเป็นอย่างดี โดยการใส่คำสั่ง Migrate to Android X ไว้ในเมนู Refactor เพื่อใช้แก้ไขโค้ดในโปรเจคปัจจุบันให้รับกับ Android X
เปิดเมนู Refactor > Migrate to Android X
ก่อนเริ่มขั้นตอน จะมีการถามเพื่อให้ backup โค้ดในโปรเจคไว้เป็นไฟล์ zip เผื่อเกิดการผิดพลาดขึ้น ส่วนนี้จะเลือกทำหรือไม่ก็ได้
แล้วให้กด Migrate
4. ยืนยันการแก้ไข
หาก Android Studio พบส่วนของโค้ดที่ต้องการแก้ไข ก็จะแสดงขึ้นมาคล้ายๆ กับในรายการด้านล่าง
เราสามารถตรวจสอบ และกดปุ่ม Do Refactor เพื่อยืนยันให้ Android Studio แก้ไขตามที่รายงาน
เสร็จแล้วให้ลองเลือกรันคำสั่ง Refactor > Migrate to Android X อีกที ถ้าไม่มีอะไรแก้ไขแล้วก็จะขึ้นหน้าต่างตามด้านล่าง
5. แก้ไขไฟล์ app/build.gradle
กลับมาที่โปรเจค Flutter และเปิดไฟล์ android/app/build.gradle
แล้วค้นหาค่า compileSdkVersion
เปลี่ยนจากเวอร์ชั่นเดิม (เช่น 27 เป็น 28)
android {
compileSdkVersion 28
...
สรุป
จะเห็นว่าปัญหาที่ของเราเกิดจาก AndroidX ที่เป็นโครงสร้างใหม่ของ Library ในโปรเจค Android ถูกนำมาใช้งาน
ทำให้ Dart Package ที่อาจจะใช้ Library จาก Android แบบเก่า มีปัญหา เราจึงสามารถใช้คำสั่ง Migrate to Android X ของ Android Studio แก้ปัญหาได้ครับ
ติดตามวิดีโอได้จาก Youtube Channel และอัพเดตข่าวคราวเกี่ยวกับ Google Flutter ได้จากการกดติดตามแฟนเพจของพลเหมือนเดิมครับ
คอร์สออนไลน์เริ่มต้นสร้าง Mobile App ด้วย Google Flutter
เหมาะผู้เริ่มต้น และนักพัฒนาเว็บ, เข้าใจง่าย, ใช้ได้จริง
สอบถาม หรือติดต่อจัดอบรมโทร 083-071-3373
อ้างอิง – Flutter Official Dev for Android X, Medium