ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การ Deploy แอป Flutter ไปยัง Android และ iOS

บทความนี้สรุปขั้นตอนสำคัญในการ Deploy แอป Flutter ไปยัง Android และ iOS โดยเน้นที่การตั้งค่า Build Configuration, การสร้างไฟล์ติดตั้ง (APK/IPA) และการจัดการ Sig...

การ Deploy แอป Flutter ไปยัง Android และ iOS

หลังจากที่เราได้พัฒนาและทดสอบแอป Flutter ของเราอย่างละเอียดแล้ว ขั้นตอนต่อไปที่สำคัญไม่แพ้กันคือการ Deploy แอปพลิเคชันของเราไปยังแพลตฟอร์มต่างๆ ซึ่งในบทความนี้เราจะเน้นไปที่การ Deploy ไปยัง Android และ iOS โดยจะครอบคลุมตั้งแต่การเตรียมความพร้อม, การสร้างไฟล์ APK (Android) และ IPA (iOS), ไปจนถึงการจัดการ Build Configuration ต่างๆ

ภาพรวมของการ Deploy

การ Deploy แอป Flutter ไม่ใช่แค่การกดปุ่ม "Build" แล้วได้ไฟล์ติดตั้งออกมา แต่เป็นกระบวนการที่ซับซ้อนกว่านั้นเล็กน้อย ซึ่งประกอบไปด้วยหลายขั้นตอนย่อยๆ ได้แก่:

  • การกำหนดค่า Build: กำหนดค่าต่างๆ เช่น ชื่อแอปพลิเคชัน, Version, Icon, และ Signing Credentials
  • การ Build แอปพลิเคชัน: สร้างไฟล์ APK สำหรับ Android และ IPA สำหรับ iOS
  • การทดสอบ: ตรวจสอบว่าแอปพลิเคชันทำงานได้ถูกต้องบนอุปกรณ์จริง
  • การอัปโหลด: อัปโหลดไฟล์ APK/IPA ไปยัง Google Play Store (Android) และ App Store Connect (iOS)

ในบทความนี้ เราจะเน้นไปที่สองขั้นตอนแรก คือ การกำหนดค่า Build และ การ Build แอปพลิเคชัน ส่วนการทดสอบและการอัปโหลดนั้น จะเป็นหัวข้อที่ต้องศึกษาเพิ่มเติมจากเอกสารประกอบของแต่ละ Store

Deploying to Android

การ Deploy แอป Flutter ไปยัง Android นั้นค่อนข้างตรงไปตรงมา โดยเราจะใช้ Android Studio เป็นเครื่องมือหลักในการ Build และ Signing แอปพลิเคชัน

1. การตั้งค่า Build Configuration ใน android/app/build.gradle

ไฟล์ android/app/build.gradle เป็นหัวใจสำคัญของการ Build แอป Android ของเรา ในไฟล์นี้ เราจะกำหนดค่าต่างๆ เช่น:

  • applicationId: Package Name ของแอปพลิเคชัน (เช่น com.example.myapp)
  • versionCode: Integer ที่แสดงถึง Version ของแอป (ใช้สำหรับอัปเดตใน Play Store)
  • versionName: String ที่แสดงถึง Version ที่ผู้ใช้เห็น (เช่น 1.0.0)
  • signingConfigs: กำหนดค่า Signing Key สำหรับ Release Build

ตัวอย่าง:

android {
    ...
    defaultConfig {
        applicationId "com.example.myapp"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    signingConfigs {
        release {
            storeFile file("key.jks")
            storePassword "password"
            keyAlias "keyalias"
            keyPassword "password"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true // Enable code shrinking
            shrinkResources true // Enable resource shrinking
        }
    }
}

ข้อควรระวัง:

  • อย่าลืมเปลี่ยน storeFile, storePassword, keyAlias, และ keyPassword ให้เป็นค่าที่ถูกต้องของคุณ
  • การเปิดใช้งาน minifyEnabled และ shrinkResources จะช่วยลดขนาดของ APK ได้อย่างมาก แต่ควรทดสอบแอปพลิเคชันอย่างละเอียดหลังเปิดใช้งาน

2. การสร้าง Signing Key (KeyStore)

Signing Key เป็นสิ่งจำเป็นสำหรับการ Deploy แอป Android ไปยัง Play Store หากคุณยังไม่มี Signing Key คุณสามารถสร้างได้โดยใช้ Android Studio หรือ Command Line:

Android Studio: Build -> Generate Signed Bundle / APK...

Command Line:

keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias keyalias

คำสั่งนี้จะสร้างไฟล์ key.jks ซึ่งเป็น KeyStore ของคุณ อย่าลืมเก็บไฟล์นี้และ Password ไว้อย่างดี เพราะหากทำหาย คุณจะไม่สามารถอัปเดตแอปพลิเคชันของคุณได้อีกต่อไป

3. การ Build APK/Bundle

เมื่อตั้งค่า Build Configuration และ Signing Key เรียบร้อยแล้ว เราก็สามารถ Build APK หรือ Bundle ได้:

APK: Build -> Build APK(s)

Bundle (AAB): Build -> Generate Signed Bundle / APK... -> Android App Bundle

ข้อแตกต่างระหว่าง APK และ Bundle:

  • APK: เป็นไฟล์ติดตั้งที่สมบูรณ์ สามารถนำไปติดตั้งบนอุปกรณ์ Android ได้โดยตรง
  • Bundle (AAB): เป็นไฟล์ที่ประกอบไปด้วย Resources และ Code ที่จำเป็นต่อการสร้าง APK หลายๆ แบบ (Optimized APKs) ทำให้ Play Store สามารถส่ง APK ที่เหมาะสมกับอุปกรณ์ของผู้ใช้แต่ละคน ทำให้ขนาดแอปเล็กลง

คำแนะนำ: ควรใช้ Android App Bundle (AAB) สำหรับการ Deploy ไปยัง Play Store เพื่อให้ผู้ใช้ได้รับประสบการณ์ที่ดีที่สุด

4. กรณีใช้งานจริงและข้อผิดพลาดที่พบบ่อย

  • ปัญหา: Build Failed เนื่องจาก Gradle Sync Error

    วิธีแก้ไข: ลอง Clean Project (Build -> Clean Project) และ Rebuild Project (Build -> Rebuild Project) หรือตรวจสอบว่า Gradle Version ใน build.gradle (Project Level) เป็น Version ที่เข้ากันได้กับ Android Gradle Plugin Version ใน build.gradle (Module Level)

  • ปัญหา: แอปพลิเคชัน Crash หลังจากเปิดใช้งาน minifyEnabled และ shrinkResources

    วิธีแก้ไข: เพิ่ม Rules ใน proguard-rules.pro เพื่อป้องกันการ Optimize Classes ที่จำเป็น (เช่น Classes ที่ใช้ Reflection)

Deploying to iOS

การ Deploy แอป Flutter ไปยัง iOS นั้นมีความซับซ้อนกว่า Android เล็กน้อย เนื่องจากต้องใช้ Xcode และ Apple Developer Account

1. การตั้งค่า Build Configuration ใน Xcode

เปิด Project iOS ของคุณใน Xcode (ios/Runner.xcworkspace) และเลือก Target "Runner" จากนั้นไปที่ Tab "Signing & Capabilities"

  • Team: เลือก Apple Developer Account ของคุณ (หากยังไม่มี ให้สร้าง Account ก่อน)
  • Bundle Identifier: Package Name ของแอปพลิเคชัน (เช่น com.example.myapp)

ข้อควรระวัง: Bundle Identifier ต้อง Unique และไม่ซ้ำกับแอปพลิเคชันอื่นๆ ใน App Store

2. การตั้งค่า Version และ Build Number

ไปที่ Tab "General" และแก้ไขค่า "Version" (เช่น 1.0.0) และ "Build" (Integer ที่แสดงถึง Build Number) ให้ถูกต้อง

3. การสร้าง Archive

เลือก "Product -> Archive" เพื่อสร้าง Archive ของแอปพลิเคชัน

4. การ Export IPA

หลังจากสร้าง Archive เสร็จแล้ว Xcode จะเปิด Organizer ขึ้นมา เลือก Archive ที่คุณเพิ่งสร้าง และคลิก "Distribute App"

เลือกวิธีการ Distribute ที่เหมาะสม:

  • App Store Connect: สำหรับการ Deploy ไปยัง App Store (ต้องมี Apple Developer Program)
  • Ad Hoc: สำหรับการ Deploy ไปยังอุปกรณ์ Test (ต้อง Add UDID ของอุปกรณ์ใน Apple Developer Portal)
  • Development: สำหรับการ Deploy ไปยังอุปกรณ์ที่เชื่อมต่อกับ Xcode

ทำตามขั้นตอนใน Xcode เพื่อ Export IPA File

5. กรณีใช้งานจริงและข้อผิดพลาดที่พบบ่อย

  • ปัญหา: Build Failed เนื่องจาก Code Signing Error

    วิธีแก้ไข: ตรวจสอบว่า Certificate และ Provisioning Profile ที่ใช้ถูกต้อง และตรงกับ Bundle Identifier ของแอปพลิเคชัน

  • ปัญหา: แอปพลิเคชัน Crash บนอุปกรณ์จริง

    วิธีแก้ไข: ตรวจสอบ Log ของอุปกรณ์ (ใช้ Xcode Console) เพื่อหา Error ที่เกิดขึ้น และแก้ไข Code ให้ถูกต้อง

สรุป

การ Deploy แอป Flutter ไปยัง Android และ iOS เป็นขั้นตอนที่สำคัญและต้องใส่ใจในรายละเอียดต่างๆ การทำความเข้าใจ Build Configuration, Signing Key (Android), Certificate และ Provisioning Profile (iOS) จะช่วยให้คุณสามารถ Deploy แอปพลิเคชันของคุณได้อย่างราบรื่น และประสบความสำเร็จ

ในบทความถัดไป เราจะพูดถึงเรื่อง Platform Channels ซึ่งเป็นวิธีในการสื่อสารระหว่าง Flutter Code กับ Native Code (Android/iOS) ซึ่งจะช่วยให้เราสามารถเข้าถึง Features ที่ Flutter ยังไม่รองรับได้

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์