Google Flutter

Google Flutter: รู้จักกับ AndroidX และวิธีแก้ปัญหา build แอพ Android ไม่ผ่าน

เรื่องที่เกี่ยวข้อง - Android X, Google Flutter

ช่วงนี้ทาง 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

flutter vscode open in android studio

2. กำหนดรายละเอียดของ Gradle ที่ใช้

พอเปิดขึ้นมาใน Android Studio แล้วจะมีขั้นตอนการกำหนด Gradle ที่จะใช้กับโปรเจค Android

Android Studio - Import Project from Gradle
ถ้าไม่มีอะไรพิเศษ ให้ใช้ค่าเริ่มต้นที่กำหนดมาให้ และกดปุ่ม OK
Android Studio - Android Gradle Plugin UPdate Recommend

3. เริ่มขั้นตอน Migrate to Android X

Google เตรียมการเปลี่ยนผ่านนี้มาเป็นอย่างดี โดยการใส่คำสั่ง Migrate to Android X ไว้ในเมนู Refactor เพื่อใช้แก้ไขโค้ดในโปรเจคปัจจุบันให้รับกับ Android X

เปิดเมนู Refactor > Migrate to Android X

Android Studio Refactor migrate to android x

ก่อนเริ่มขั้นตอน จะมีการถามเพื่อให้ backup โค้ดในโปรเจคไว้เป็นไฟล์ zip เผื่อเกิดการผิดพลาดขึ้น ส่วนนี้จะเลือกทำหรือไม่ก็ได้

แล้วให้กด Migrate

4. ยืนยันการแก้ไข

หาก Android Studio พบส่วนของโค้ดที่ต้องการแก้ไข ก็จะแสดงขึ้นมาคล้ายๆ กับในรายการด้านล่าง

เราสามารถตรวจสอบ และกดปุ่ม Do Refactor เพื่อยืนยันให้ Android Studio แก้ไขตามที่รายงาน

Android Studio Do Refactor

เสร็จแล้วให้ลองเลือกรันคำสั่ง Refactor > Migrate to Android X อีกที ถ้าไม่มีอะไรแก้ไขแล้วก็จะขึ้นหน้าต่างตามด้านล่าง

Android Studio Migrate to AndroidX

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

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save