การสร้างและเผยแพร่แอปพลิเคชันมือถือคือกระบวนการเปลี่ยนซอร์สโค้ดเป็นไฟล์ที่ติดตั้งได้ (APK, AAB, IPA) และอัปโหลดไปยังร้านค้าแอปพลิเคชัน ตามข้อมูลจาก Google Play Console (2025) Android App Bundle (AAB) เป็นรูปแบบบังคับสำหรับการเผยแพร่บน Google Play ตั้งแต่เดือนสิงหาคม 2021 ในบทความนี้เราจะพูดถึงรูปแบบการสร้าง การคอมไพล์ การลงนามโค้ด กระบวนการเผยแพร่ และการทดสอบเบต้า
ประเด็นสำคัญ
APK (Android Package Kit) — รูปแบบดั้งเดิมสำหรับสร้างและเผยแพร่แอปพลิเคชันมือถือบน Android APK ประกอบด้วยโค้ดทั้งหมด ทรัพยากร และแมนิเฟสต์ของแอปพลิเคชัน AAB (Android App Bundle) — รูปแบบที่ Google เปิดตัวในปี 2018 และกลายเป็นรูปแบบบังคับสำหรับแอปพลิเคชันใหม่ตั้งแต่เดือนสิงหาคม 2021 AAB ไม่ได้ติดตั้งโดยตรง — Google Play สร้าง APK ที่ปรับให้เหมาะสมสำหรับแต่ละอุปกรณ์จาก AAB แบบไดนามิก
ข้อดีของ AAB: ขนาดดาวน์โหลดโดยเฉลี่ยน้อยกว่า 15% (โดยส่งเฉพาะทรัพยากรที่จำเป็น: ความหนาแน่นหน้าจอที่ถูกต้อง ภาษา สถาปัตยกรรม CPU) AAB ยังรองรับการส่งมอบแบบโมดูลาร์ — คุณสามารถโหลดโมดูลตามความต้องการ (Play Feature Delivery) หรือแบบรอได้ (Play On-Demand) สำหรับนักพัฒนา AAB เป็นรูปแบบบังคับ สำหรับการแจกจ่ายนอก Google Play (sideloading, ตลาดแอป) — เฉพาะ APK
IPA (iOS App Store Package) — ไฟล์ติดตั้ง iOS ซึ่งเป็นไฟล์ ZIP ที่มีแอปพลิเคชันที่ลงนามแล้ว IPA ประกอบด้วยโฟลเดอร์ Payload/ ที่มี .app bundle, Provisioning Profile และลายเซ็น IPA จะถูกสร้างบน macOS เท่านั้นผ่าน Xcode ซึ่งสร้างไฟล์ (.xcarchive) และส่งออก IPA สำหรับการแจกจ่ายผ่าน App Store IPA จะลงนามด้วย Apple Distribution Certificate สำหรับ Ad Hoc หรือ Enterprise — ด้วยใบรับรองที่เกี่ยวข้อง
| พารามิเตอร์ | APK | AAB | IPA |
|---|---|---|---|
| แพลตฟอร์ม | Android | Android (Google Play) | iOS |
| รูปแบบ | ZIP ไฟล์ | ZIP ไฟล์ | ZIP ไฟล์ |
| ติดตั้งโดยตรง | ใช่ | ไม่ (ผ่าน Google Play) | ผ่าน App Store / MDM |
| ลายเซ็น | Keystore (JKS) | Keystore (JKS/PEPK) | Apple Certificate |
| App Thinning | ไม่มี | มี (อัตโนมัติ) | มี (Slicing, Bitcode) |
JIT (Just-In-Time) — การคอมไพล์โค้ดขณะประมวลผลแอปพลิเคชัน ซึ่งส่งผลต่อความเร็วในการสร้างและเผยแพร่ บน Android จนถึงเวอร์ชัน 5.0 (Lollipop) ใช้ Dalvik VM พร้อมการคอมไพล์แบบ JIT ทุกครั้งที่เปิดแอปพลิเคชัน DEX bytecode จะถูกแปลงเป็นรหัสเครื่อง «ทันที» ข้อเสีย: ช้าลงในการเปิดครั้งแรกและการใช้พลังงานเพิ่มเติม AOT (Ahead-Of-Time) — การคอมไพล์โค้ดก่อนเปิดแอปพลิเคชัน ระหว่างการติดตั้ง ตั้งแต่ Android 7.0 (Nougat) ART (Android Runtime) จะคอมไพล์แอปพลิเคชันทั้งหมดระหว่างการติดตั้ง
ART (Android Runtime) — สภาพแวดล้อมรันไทม์ที่แทนที่ Dalvik ใน Android 5.0 ART ใช้แนวทางแบบผสม: การคอมไพล์ AOT ระหว่างการติดตั้ง + JIT สำหรับเมธอดที่ถูกเรียกใช้บ่อย ซึ่งรวมความเร็วของ AOT (เริ่มต้นเร็ว) เข้ากับความยืดหยุ่นของ JIT (การปรับให้เหมาะสมแบบปรับตัว) ผลลัพธ์: ประสิทธิภาพของแอปพลิเคชัน Android เพิ่มขึ้น 20-30% เมื่อเทียบกับ Dalvik สำหรับนักพัฒนา การเปลี่ยนไปใช้ ART นั้นโปร่งใส — โค้ดไม่ต้องการการเปลี่ยนแปลง
Bitcode — การแสดงโค้ดระดับกลาง (IR) ที่ Apple ใช้เพื่อคอมไพล์ IPA ใหม่สำหรับสถาปัตยกรรมโปรเซสเซอร์ต่างๆ Bitcode เป็นตัวเลือก: สำหรับแอปพลิเคชัน iOS จะเปิดใช้งานโดยค่าเริ่มต้น สำหรับ watchOS และ tvOS เป็นการบังคับ Apple สามารถคอมไพล์ Bitcode ใหม่เมื่อโปรเซสเซอร์ใหม่ออกโดยไม่ต้องให้นักพัฒนามีส่วนร่วม App Thinning — เทคโนโลยีของ Apple ที่รวม Slicing (ส่งเฉพาะทรัพยากรที่จำเป็นสำหรับอุปกรณ์) และ On-Demand Resources (โหลดทรัพยากรตามต้องการ) App Thinning ลดขนาดดาวน์โหลดจาก App Store ลง 30-50%
DEX — รูปแบบ bytecode สำหรับ Android ประมวลผลโดย ART/Dalvik ซอร์สโค้ด Kotlin/Java จะถูกคอมไพล์เป็นไฟล์ class จากนั้นเป็น DEX ผ่าน dx หรือ d8 (เครื่องมือที่ทันสมัยและเร็วกว่า) Multidex — กลไกสำหรับแอปพลิเคชันที่เกินขีดจำกัด 65,536 เมธอดในไฟล์ DEX เดียว ในโปรเจกต์สมัยใหม่ multidex จะเปิดใช้งานโดยอัตโนมัติหาก targetSdkVersion >= 21
Keystore — ไฟล์ที่มีคีย์ส่วนตัวและใบรับรองสำหรับลงนามแอปพลิเคชัน Android ระหว่างการสร้าง Keystore ถูกสร้างผ่าน keytool (คำสั่ง -genkey) หรือ Android Studio สำคัญ: Keystore ไม่สามารถหายได้ — หากไม่มีจะไม่สามารถอัปเดตแอปพลิเคชันบน Google Play ได้ พารามิเตอร์การลงนาม: keyAlias, keyPassword, storePassword และ storeFile รูปแบบ: JKS (Java KeyStore) หรือ PEPK (Play Encrypted Private Key) สำหรับ AAB
App Bundle ID (Android) — ตัวระบุเฉพาะของแอปพลิเคชันในรูปแบบแพ็กเกจ (com.example.app) Version Code — จำนวนเต็มสำหรับการกำหนดหมายเลขเวอร์ชันภายใน (แต่ละการ build ใหม่จะเพิ่มค่านี้) Version Name — สตริงที่แสดงแก่ผู้ใช้ (1.2.3) พารามิเตอร์เหล่านี้ถูกกำหนดใน build.gradle ระดับแอป
Apple Certificate — ใบรับรองดิจิทัลที่ยืนยันตัวตนของนักพัฒนา ประเภท: Development (สำหรับการดีบัก), Distribution (สำหรับ App Store), Ad Hoc (สำหรับการแจกจ่ายแบบจำกัด) ใบรับรองถูกสร้างใน Apple Developer Account และดาวน์โหลดไปยัง Keychain Provisioning Profile — ไฟล์ที่เชื่อมโยงใบรับรอง App ID (Bundle Identifier) และรายการอุปกรณ์ที่อนุญาต หากไม่มี Provisioning Profile แอปพลิเคชันจะไม่ทำงานบนอุปกรณ์
Bundle ID (iOS) — ตัวระบุเฉพาะของแอปพลิเคชัน (com.example.app) Build Number — หมายเลข build เพิ่มขึ้นในแต่ละ build Marketing Version — เวอร์ชันที่แสดงแก่ผู้ใช้ การจัดการเวอร์ชัน: สำหรับ iOS พารามิเตอร์ถูกกำหนดใน Info.plist และ Project Settings; สำหรับ Android — ใน build.gradle ที่ IT Sectr เราทำให้การอัปเดตเวอร์ชันเป็นอัตโนมัติผ่าน Fastlane — ซึ่งช่วยขจัดข้อผิดพลาดของมนุษย์ระหว่างการเปิดตัว
Google Play Console — เครื่องมือสำหรับเผยแพร่แอปพลิเคชัน Android กระบวนการ: ลงทะเบียนบัญชีนักพัฒนา ($25 ครั้งเดียว), สร้างแอปพลิเคชัน, กรอกเมทาดาทา (ชื่อ, คำอธิบาย, ภาพหน้าจอ, หมวดหมู่), อัปโหลด AAB, กำหนดค่าราคาและการแจกจ่าย, ตรวจสอบ Google ตรวจสอบแอปพลิเคชันโดยอัตโนมัติ (ไวรัส, การปฏิบัติตามนโยบาย) และด้วยตนเองสำหรับบางหมวดหมู่ การตรวจสอบใช้เวลาตั้งแต่ไม่กี่ชั่วโมงถึง 2-3 วัน
App Store Connect — แพลตฟอร์มของ Apple สำหรับเผยแพร่แอปพลิเคชัน iOS กระบวนการ: บัญชีนักพัฒนา Apple ($99/ปี), สร้างแอปพลิเคชันใน App Store Connect, เตรียม IPA ใน Xcode (Archive → Distribute App → App Store Connect), อัปโหลดผ่าน Transporter หรือ Xcode, กรอกเมทาดาทา, ส่งตรวจสอบ App Review — การตรวจสอบด้วยตนเองของ Apple อาจใช้เวลา 24 ชั่วโมงถึง 7 วัน สาเหตุทั่วไปที่ถูกปฏิเสธ: ปุ่มใช้งานไม่ได้, เนื้อหาไม่สมบูรณ์, การขอสิทธิ์โดยไม่มีคำอธิบาย
TestFlight — เครื่องมืออย่างเป็นทางการของ Apple สำหรับการทดสอบเบต้าแอปพลิเคชัน iOS TestFlight รองรับ Internal Testing (ผู้ทดสอบสูงสุด 100 คนทางอีเมล ไม่ต้องตรวจสอบ) และ External Testing (ผู้ทดสอบสูงสุด 10,000 คน ต้องตรวจสอบโดย Apple) build สามารถใช้ได้ 90 วัน หลังจากนั้นต้องอัปโหลด build ใหม่ TestFlight จะอัปเดตแอปพลิเคชันให้ผู้ทดสอบโดยอัตโนมัติเมื่ออัปโหลด build ใหม่
Internal Testing (Android) — ผู้ทดสอบสูงสุด 100 คน ไม่ต้องตรวจสอบโดย Google build พร้อมใช้งานทันที Closed Beta — ผู้ทดสอบสูงสุด 1000 คนทางอีเมลหรือ Google Groups ไม่ต้องตรวจสอบ Open Beta — ผู้ทดสอบไม่จำกัดผ่านลิงก์สาธารณะ ต้องตรวจสอบโดย Google Staged Rollout — การเพิ่มเปอร์เซ็นต์ของผู้ใช้ที่ได้รับการอัปเดตทีละน้อย (5% → 20% → 50% → 100%) นี่เป็นวิธีเปิดตัวที่ปลอดภัยที่สุด
App Thinning (iOS) — การลดขนาด IPA ที่ดาวน์โหลดโดยอัตโนมัติ: Slicing (เฉพาะทรัพยากรที่จำเป็นสำหรับอุปกรณ์), Bitcode (การปรับให้เหมาะสมกับโปรเซสเซอร์), On-Demand Resources (ดาวน์โหลดตามต้องการ) ที่ IT Sectr เราใช้ TestFlight สำหรับการทดสอบเบต้า iOS และ Internal Testing สำหรับ Android — ซึ่งช่วยให้เราจับปัญหาได้ก่อนการเปิดตัวในวงกว้าง
คำถามที่พบบ่อย
APK — ไฟล์ติดตั้งสากล ทำงานได้บนทุกอุปกรณ์ AAB — รูปแบบสำหรับ Google Play ที่สร้าง APK ที่เหมาะสมที่สุดสำหรับแต่ละอุปกรณ์ ขนาดดาวน์โหลดผ่าน AAB เล็กกว่า 15% สำหรับ Google Play ต้องใช้ AAB สำหรับ sideloading — ใช้ APK
คุณ จะไม่สามารถอัปเดต แอปพลิเคชันบน Google Play ได้ — คุณจะต้องสร้างแอปพลิเคชันใหม่ด้วย package name ใหม่ เก็บ Keystore ไว้ในที่ปลอดภัย (ตัวจัดการรหัสผ่าน, Git ที่เข้ารหัส) Google Play App Signing (การใช้คีย์ของ Google) ช่วยลดความเสี่ยงนี้
Google Play — $25 ครั้งเดียวสำหรับบัญชีนักพัฒนา App Store — $99/ปี ทั้งสองจำนวนรวมแอปพลิเคชันไม่จำกัด สำหรับ iOS คุณต้องมี Mac (จาก $999) หรือเช่า Mac คลาวด์
Staged Rollout — การเปิดตัวอัปเดตแบบค่อยเป็นค่อยไป: แรกเริ่ม 5% ของผู้ใช้ จากนั้น 20%, 50% และ 100% หากตรวจพบการขัดข้องในขั้นตอนใด การเปิดตัวจะหยุดลง สามารถใช้ได้ใน Google Play Console
สำหรับ Android — ไม่ คุณสามารถติดตั้ง APK บนอุปกรณ์ผ่าน USB หรืออีมูเลเตอร์โดยไม่ต้องมีบัญชี สำหรับ iOS — ใช่ หากไม่มีบัญชี $99/ปี แอปพลิเคชันจะทำงานบนซิมูเลเตอร์เท่านั้น ไม่ทำงานบนอุปกรณ์จริง
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ