Android SDK Platform คือชุดของไลบรารี อิมเมจระบบและเครื่องมือสำหรับระบบปฏิบัติการรุ่นเฉพาะ แต่ละแพลตฟอร์มเชื่อมโยงกับ API Level ของตัวเองและรวม android.jar พร้อมคลาส Android API คอมโพเนนต์รันไทม์และอีมูเลเตอร์ ตาม Google Developer Documentation, 2026 นักพัฒนาใช้ SDK Platform เพื่อคอมไพล์โค้ดเทียบกับเวอร์ชัน OS เป้าหมาย หากไม่มีแพลตฟอร์มที่ติดตั้งไว้ จะไม่สามารถสร้าง APK หรือเรียกใช้แอปพลิเคชันบนอีมูเลเตอร์ได้ SDK Manager จัดการการดาวน์โหลด อัปเดตและลบคอมโพเนนต์เหล่านี้
ประเด็นสำคัญ
SDK Platform เป็นคอมโพเนนต์พื้นฐานของ Android SDK ที่แสดงถึงชุดไลบรารีและเครื่องมือที่สมบูรณ์สำหรับการพัฒนาแอปพลิเคชันสำหรับ Android เวอร์ชันเฉพาะ แต่ละแพลตฟอร์มถูกระบุด้วย API Level ของมัน — จำนวนเต็มที่เพิ่มขึ้นเมื่อมี OS รุ่นใหม่ ตัวอย่างเช่น Android 13 สอดคล้องกับ API Level 33, Android 14 กับ API Level 34, Android 15 กับ API Level 35
แตกต่างจาก Android Studio (IDE) ตรงที่ SDK Platform ไม่มีโปรแกรมแก้ไขโค้ดหรือดีบักเกอร์ มันเป็นเลเยอร์ระบบที่เชื่อมต่อกับคอมไพเลอร์และระบบบิลด์ เมื่อนักพัฒนาเขียน import android.app.Activity คอมไพเลอร์จะนำคลาสนี้จาก android.jar ของ SDK Platform ที่กำหนด หากไม่มีแพลตฟอร์มที่ติดตั้งด้วย API Level ที่ต้องการ โค้ดจะไม่ถูกคอมไพล์
Google เผยแพร่ SDK Platform ใหม่สำหรับ Android เวอร์ชันเสถียรแต่ละรุ่น ประวัติศาสตร์ประกอบด้วย API Level มากกว่า 35 รายการ — ตั้งแต่ Android 1.0 (API 1) ถึง Android 15 (API 35) แต่ละแพลตฟอร์มเข้ากันได้ย้อนหลัง: โค้ดที่เขียนสำหรับ API Level 21 จะทำงานบน API Level 35 แต่ไม่ใช่ในทางกลับกัน
Android พัฒนาอย่างรวดเร็ว: แต่ละเวอร์ชันเพิ่ม API ใหม่ เปลี่ยนพฤติกรรมของ API ที่มีอยู่และแนะนำข้อจำกัด ตัวอย่างเช่น Android 10 (API 29) นำ Scoped Storage มาใช้, Android 12 (API 31) — SplashScreen API, Android 14 (API 34) — แฟล็ก BroadcastReceiver ที่บังคับ นักพัฒนาต้องคอมไพล์แอปพลิเคชันเทียบกับแพลตฟอร์มปัจจุบันเพื่อใช้ความสามารถเหล่านี้
ในขณะเดียวกัน แอปพลิเคชันสามารถทำงานบน OS เวอร์ชันเก่าได้ สำหรับสิ่งนี้ minSdk (API Level ขั้นต่ำที่แอปพลิเคชันทำงานได้) จะถูกระบุใน Gradle โค้ดใช้การตรวจสอบเวอร์ชันและการเรียก API ตามเงื่อนไข วิธีการนี้รับประกันความเข้ากันได้โดยไม่สูญเสียฟีเจอร์ใหม่
| เวอร์ชัน Android | API Level | ชื่อรหัส | ปีที่เผยแพร่ |
|---|---|---|---|
| Android 12 | 31 | Snow Cone | 2021 |
| Android 13 | 33 | Tiramisu | 2022 |
| Android 14 | 34 | Upside Down Cake | 2023 |
| Android 15 | 35 | Vanilla Ice Cream | 2024 |
SDK Platform ไม่ใช่ไฟล์เดียว แต่เป็นชุดของคอมโพเนนต์ที่ร่วมกันรับประกันการคอมไพล์ การสร้างและการทดสอบแอปพลิเคชัน องค์ประกอบหลักคือ android.jar — คลังเก็บคลาส Android API ที่รวมอยู่ในเวอร์ชันนี้ ไฟล์นี้เชื่อมต่อกับคอมไพเลอร์ Kotlin หรือ Java และกำหนดว่าคลาส เมธอดและคำอธิบายประกอบใดบ้างที่พร้อมใช้งานสำหรับนักพัฒนา
แต่ละ SDK Platform รวม System Image — อิมเมจระบบปฏิบัติการสำหรับอีมูเลเตอร์ Android Virtual Device หากไม่มีอิมเมจที่สอดคล้องกัน อีมูเลเตอร์จะไม่สามารถเริ่มอุปกรณ์เสมือนด้วย API Level ที่ต้องการ System Images มีหลายประเภท: Google APIs (พร้อมบริการ Google), Google Play (พร้อม Play Store) และ AOSP (Android บริสุทธิ์ไม่มีบริการ Google)
SDK Platform รวมเวอร์ชันของ Build-Tools และ Platform-Tools ที่ปรับให้เหมาะสมสำหรับ API Level นี้ Build-Tools ประกอบด้วย aapt2 (Android Asset Packaging Tool), dx/d8 (คอมไพเลอร์ Dalvik/ART) และ ApkSigner Platform-Tools ให้ ADB (Android Debug Bridge), fastboot และ SQLite เครื่องมือเหล่านี้ถูกอัปเดตโดยอิสระจาก SDK Platform ผ่าน SDK Manager
แต่ละแพลตฟอร์มรวมทรัพยากร Android มาตรฐาน — ธีมระบบ สไตล์ แอนิเมชัน สีและขนาด ทรัพยากรเหล่านี้ถูกใช้ระหว่างการคอมไพล์: หากนักพัฒนาอ้างอิง @android:style/Theme.Material.Light ระบบบิลด์จะนำคำจำกัดความจากทรัพยากร SDK Platform สิ่งนี้รับประกันรูปลักษณ์ที่สอดคล้องกันของคอมโพเนนต์ระบบบนอุปกรณ์ทั้งหมด
| คอมโพเนนต์ | คำอธิบาย | ขนาด (โดยประมาณ) |
|---|---|---|
| android.jar | ไลบรารี Android API สำหรับการคอมไพล์ | 50–120 MB |
| System Image | อิมเมจ OS สำหรับอีมูเลเตอร์ | 600–1500 MB |
| Build-Tools | เครื่องมือบิลด์ APK และ AAB | 200–400 MB |
| Platform Resources | ทรัพยากรระบบ (ธีม, สไตล์) | 30–80 MB |
| Skins | โปรไฟล์อุปกรณ์สำหรับอีมูเลเตอร์ | 10–50 MB |
API Level คือตัวระบุจำนวนเต็มของเวอร์ชัน Android SDK แต่ละรุ่น Android สอดคล้องกับ API Level หนึ่งที่เพิ่มขึ้นแบบโมโนโทนิก นักพัฒนาระบุ API Level ในสามพารามิเตอร์หลักของ build.gradle: compileSdk, minSdk และ targetSdk การเลือกพารามิเตอร์เหล่านี้กำหนดว่า API ใดพร้อมใช้งานและระบบจัดการแอปพลิเคชันอย่างไร
Google แนะนำให้รักษา minSdk ไว้ไม่ต่ำกว่าเกณฑ์การกระจายปัจจุบัน — ตาม Android Studio Distribution Dashboard (2026) อุปกรณ์ประมาณ 95% ทำงานบน Android 8.0 (API 26) ขึ้นไป compileSdk ควรเป็นเวอร์ชันเสถียรล่าสุด — สิ่งนี้ให้การเข้าถึง API ใหม่และอนุญาตให้การตรวจสอบ lint ตรวจจับเมธอดที่เลิกใช้
ในแต่ละ API Level ใหม่ Google นำการเปลี่ยนแปลงที่สำคัญมาใช้ Android 6.0 (API 23) เพิ่มสิทธิ์รันไทม์ — แอปพลิเคชันขอสิทธิ์ระหว่างการทำงาน ไม่ใช่ขณะติดตั้ง Android 8.0 (API 26) นำการเติมข้อความอัตโนมัติของฟอร์มและช่องทางการแจ้งเตือนมาใช้ Android 12 (API 31) เปลี่ยนวิธีการทำงานของ intent อย่างสิ้นเชิง — SplashScreen API และการส่งออกคอมโพเนนต์ผ่านแอตทริบิวต์ exported ปรากฏขึ้น Android 14 (API 34) ทำให้การระบุแฟล็กสำหรับ BroadcastReceiver เป็นข้อบังคับและแนะนำข้อจำกัดที่เข้มงวดเกี่ยวกับบริการเบื้องหน้า
การทำความเข้าใจประวัติของ API Level ช่วยนักพัฒนาเลือกกลยุทธ์ความเข้ากันได้ที่ถูกต้อง หากแอปพลิเคชันใช้ compileSdk 35 แต่ minSdk 26 โค้ดสามารถเรียกเมธอด API 35 ได้หลังจากตรวจสอบเวอร์ชันผ่าน Build.VERSION.SDK_INT เท่านั้น วิธีการนี้เรียกว่า version-gated development และเป็นมาตรฐานอุตสาหกรรม
| Android | API | ปี | นวัตกรรมสำคัญ |
|---|---|---|---|
| 6.0 Marshmallow | 23 | 2015 | สิทธิ์รันไทม์ |
| 8.0 Oreo | 26 | 2017 | ช่องทางการแจ้งเตือน, การเติมข้อความอัตโนมัติ |
| 10 | 29 | 2019 | Scoped Storage, ธีมมืด |
| 12 | 31 | 2021 | SplashScreen, แอตทริบิวต์ exported |
| 14 | 34 | 2023 | แฟล็ก Broadcast, บริการเบื้องหน้า |
SDK Manager คือเครื่องมือสำหรับจัดการคอมโพเนนต์ Android SDK: ติดตั้ง SDK Platform ใหม่ อัปเดตที่มีอยู่และลบที่ล้าสมัย SDK Manager พร้อมใช้งานเป็นอินเทอร์เฟซกราฟิกใน Android Studio และเป็นเครื่องมือบรรทัดคำสั่งผ่าน sdkmanager บรรทัดคำสั่งของ SDK Manager สะดวกสำหรับใช้ในไปป์ไลน์ CI/CD ที่ไม่มีอินเทอร์เฟซกราฟิก
SDK Manager ติดตั้งแพลตฟอร์มในไดเรกทอรี Android SDK ซึ่งโดยค่าเริ่มต้นอยู่ที่ $HOME/Android/Sdk บน Linux และ macOS หรือ %LOCALAPPDATA%\Android\Sdk บน Windows ภายในไดเรกทอรี platforms มีโฟลเดอร์ชื่อ android-{API Level} ซึ่งแต่ละโฟลเดอร์มี SDK Platform ที่สมบูรณ์
คำสั่ง sdkmanager รับตัวระบุแพ็กเกจในรูปแบบ "platforms;android-{API}" ตัวอย่างเช่น การติดตั้ง SDK Platform 35 คำสั่งมีลักษณะดังนี้:
# ติดตั้ง SDK Platform สำหรับ API Level 35
sdkmanager "platforms;android-35"
# ติดตั้งหลายแพลตฟอร์มด้วยคำสั่งเดียว
sdkmanager "platforms;android-34" "platforms;android-33" "platforms;android-31"
# รายการแพลตฟอร์มที่ติดตั้ง
sdkmanager --list_installed | grep platforms
# ลบแพลตฟอร์มที่ล้าสมัย
sdkmanager --uninstall "platforms;android-28"
โปรเจกต์ Android สมัยใหม่ใช้ Gradle Plugin ซึ่งสามารถติดตั้ง SDK Platform โดยอัตโนมัติในการบิลด์ครั้งแรก ในการทำเช่นนี้ ต้องระบุ compileSdk ใน build.gradle และเพิ่มไดเรกทอรี SDK ในการกำหนดค่าท้องถิ่น Android Studio ยังเสนอให้ติดตั้งแพลตฟอร์มที่ขาดหายเมื่อเปิดโปรเจกต์ — เพียงคลิกปุ่ม "Install SDK Platform" ในหน้าต่างซิงค์ Gradle
การอัปเดต SDK Platform เป็นประจำผ่าน SDK Manager เป็นสิ่งสำคัญ — พร้อมกับแพลตฟอร์ม Build-Tools และ Platform-Tools จะถูกอัปเดต ซึ่งส่งผลต่อประสิทธิภาพการบิลด์และความเสถียรของการดีบัก Google แนะนำให้ตรวจสอบการอัปเดต SDK ทุก 2-3 สัปดาห์ โดยเฉพาะก่อนเผยแพร่แอปพลิเคชันเวอร์ชันใหม่บน Google Play
ในการเรียกใช้อีมูเลเตอร์ด้วย API Level ที่กำหนด ต้องติดตั้ง System Image ในเวอร์ชันเดียวกัน SDK Manager อนุญาตให้ดาวน์โหลดอิมเมจของสถาปัตยกรรมต่าง ๆ (x86_64, arm64-v8a) และประเภทต่าง ๆ (Google APIs, Google Play, AOSP) หลังจากดาวน์โหลดอิมเมจ AVD Manager จะสร้างอุปกรณ์เสมือนตามอิมเมจนั้น
# ติดตั้ง System Image พร้อม Google APIs สำหรับ API 35
sdkmanager "system-images;android-35;google_apis;x86_64"
# สร้าง AVD ผ่านบรรทัดคำสั่ง
avdmanager create avd -n pixel8 -k "system-images;android-35;google_apis;x86_64"
# รายการ AVD ที่สร้าง
avdmanager list avd
สามพารามิเตอร์ใน build.gradle กำหนดวิธีที่แอปพลิเคชันทำงานกับ SDK Platform compileSdk คือ API Level ที่ใช้สำหรับการคอมไพล์ พารามิเตอร์นี้ระบุว่าคลาส Android API ใดบ้างที่พร้อมใช้งานในโค้ด compileSdk ควรเป็นเวอร์ชันใหม่ที่สุดในสามตัวและไม่ส่งผลต่อพฤติกรรมรันไทม์ — แอปพลิเคชันถูกคอมไพล์แต่ใช้เฉพาะ API ที่มีบนอุปกรณ์
minSdk คือ API Level ขั้นต่ำที่สามารถติดตั้งแอปพลิเคชันได้ Google Play จะไม่อนุญาตให้ติดตั้งแอปพลิเคชันบนอุปกรณ์ที่มีเวอร์ชันต่ำกว่า minSdk พารามิเตอร์นี้กำหนดเกณฑ์ความเข้ากันได้และส่งผลต่อการครอบคลุมผู้ชม ยิ่ง minSdk ต่ำเท่าไหร่ อุปกรณ์ที่รองรับก็ยิ่งมากขึ้น แต่ API ใหม่ที่สามารถใช้ได้โดยไม่ต้องตรวจสอบก็ยิ่งน้อยลง
targetSdk คือ API Level ที่แอปพลิเคชันได้รับการทดสอบ ระบบ Android ใช้ targetSdk เพื่อใช้การเปลี่ยนแปลงพฤติกรรม: หากแอปพลิเคชันไม่ได้อัปเดตเป็น API Level ใหม่ ระบบจะเปิดใช้งานโหมดความเข้ากันได้สำหรับเวอร์ชันเก่า Google Play กำหนดให้ targetSdk ไม่ต่ำกว่าระดับที่กำหนด — ในปี 2026 คือ API 34 (Android 14)
android {
compileSdk 35
defaultConfig {
applicationId "com.example.app"
minSdk 26
targetSdk 35
versionCode 1
versionName "1.0"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
// ต้องติดตั้งเวอร์ชัน Android SDK ผ่าน SDK Manager
// sdkmanager "platforms;android-35"
กลยุทธ์การเลือกขึ้นอยู่กับเป้าหมายของโปรเจกต์ สำหรับแอปพลิเคชันใหม่: compileSdk — เวอร์ชันเสถียรล่าสุด (35 ต้นปี 2026), minSdk — API 26 (Android 8.0, ครอบคลุม 95% ของอุปกรณ์), targetSdk — เวอร์ชันเสถียรล่าสุด สำหรับการอัปเดตแอปพลิเคชันที่มีอยู่: เพิ่ม compileSdk ทันที, targetSdk — หลังจากทดสอบการเปลี่ยนแปลงพฤติกรรมทั้งหมด, minSdk — เฉพาะเมื่อจำเป็นต้องยุติการรองรับอุปกรณ์เก่า
Google กำหนดให้ targetSdk ได้รับการอัปเดตภายในหนึ่งปีหลังจากเผยแพร่ Android เวอร์ชันใหม่ แอปพลิเคชันที่ไม่เป็นไปตามข้อกำหนดนี้ไม่สามารถเผยแพร่อัปเดตบน Google Play ได้ หากต้องการติดตามกำหนดเวลา ให้ใช้ปฏิทินอัปเดต Android OS อย่างเป็นทางการ
| พารามิเตอร์ | วัตถุประสงค์ | คำแนะนำ |
|---|---|---|
| compileSdk | เวอร์ชัน API สำหรับการคอมไพล์ | เวอร์ชันเสถียรล่าสุด |
| minSdk | เวอร์ชันที่รองรับขั้นต่ำ | API 26 สำหรับครอบคลุม 95% |
| targetSdk | เวอร์ชันสำหรับการเปลี่ยนแปลงพฤติกรรม | เวอร์ชันเสถียรล่าสุด + การทดสอบ |
เมื่อพัฒนาสำหรับ Android เวอร์ชันต่าง ๆ จำเป็นต้องพิจารณาความพร้อมใช้งานของ API หากแอปพลิเคชันใช้ compileSdk 35 แต่ทำงานบนอุปกรณ์ที่มี API 31 การเรียกเมธอดที่เพิ่มใน API 34 จะส่งผลให้เกิด NoSuchMethodError หรือ AbstractMethodError สำหรับการเรียก API ใหม่อย่างปลอดภัย จะใช้การตรวจสอบเวอร์ชันผ่าน Build.VERSION.SDK_INT
class FeatureChecker {
fun registerNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// ช่องทางการแจ้งเตือนพร้อมใช้งานจาก API 26
val channel = NotificationChannel(
"updates",
"อัปเดต",
NotificationManager.IMPORTANCE_DEFAULT
)
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}
}
สำหรับเมธอดที่เรียกเฉพาะในเวอร์ชันที่กำหนด ให้ใช้คำอธิบายประกอบ @RequiresApi สิ่งนี้บอกการตรวจสอบ lint ว่าเมธอดปลอดภัยและปิดการเตือน เมื่อรวมกับการตรวจสอบ SDK_INT คำอธิบายประกอบจะทำให้โค้ดสะอาดขึ้นและเข้าใจง่ายขึ้นสำหรับผู้ตรวจสอบ
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
fun scheduleExactAlarm(manager: AlarmManager, time: Long) {
// API 34: scheduleExact พร้อมแฟล็ก SCHEDULE_EXACT_ALARM
if (manager.canScheduleExactAlarms()) {
manager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} else {
// ขอสิทธิ์ SCHEDULE_EXACT_ALARM
val intent = Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM)
context.startActivity(intent)
}
}
fun safeScheduleAlarm(context: Context, triggerTime: Long) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
scheduleExactAlarm(getAlarmManager(context), triggerTime)
} else {
// เมธอด setExact แบบเก่าไม่มีการตรวจสอบสิทธิ์
getAlarmManager(context).setExact(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent)
}
}
บางครั้งจำเป็นต้องทราบว่า SDK Platform เวอร์ชันใดติดตั้งอยู่ในอุปกรณ์ของนักพัฒนาหรือใน CI สามารถทำได้ผ่าน ADB หรือโดยโปรแกรมในโค้ดแอปพลิเคชัน การรู้ API Level ของอุปกรณ์ช่วยในการทดสอบพฤติกรรมเฉพาะเวอร์ชัน
fun logDeviceInfo() {
with (Build.VERSION) {
Log.d("SDK_Demo", "SDK_INT: $SDK_INT")
Log.d("SDK_Demo", "RELEASE: $RELEASE")
Log.d("SDK_Demo", "CODENAME: $CODENAME")
Log.d("SDK_Demo", "PREVIEW_SDK_INT: $PREVIEW_SDK_INT")
}
// เอาต์พุต: SDK_INT: 35, RELEASE: 15, CODENAME: REL
}
คำถามที่พบบ่อย
Android Studio คือ IDE ในขณะที่ SDK Platform คือชุดของไลบรารีและเครื่องมือสำหรับการคอมไพล์ Studio ใช้ SDK Platform เพื่อสร้างแอปพลิเคชัน แต่แพลตฟอร์มจะถูกดาวน์โหลดแยกต่างหากผ่าน SDK Manager และสามารถอัปเดตได้โดยอิสระจากเวอร์ชันของ Studio
โดยปกติสามเวอร์ชันก็เพียงพอ: เวอร์ชันล่าสุด (compileSdk), เวอร์ชันต่ำสุด (minSdk) และอีกหนึ่งเวอร์ชันกลางสำหรับทดสอบ SDK Manager ช่วยให้เพิ่มและลบแพลตฟอร์มได้ง่ายตามต้องการ โดยเฉลี่ยแล้วนักพัฒนาเก็บ 3-5 แพลตฟอร์มบนเครื่องทำงานของตน
ไม่ได้ แต่ละ SDK Platform มีเฉพาะ API ของเวอร์ชันของตัวเองเท่านั้น ในการเรียกเมธอดจาก API 35 คุณต้องใช้แพลตฟอร์ม android-35 การระบุ compileSdk ใหม่ในขณะที่ติดตั้งแพลตฟอร์มเก่าจะทำให้เกิดข้อผิดพลาดในการคอมไพล์
Google เผยแพร่การอัปเดต SDK Platform สำหรับแต่ละเวอร์ชัน: การแก้ไขบั๊ก, API ใหม่, การปรับปรุงประสิทธิภาพ SDK Manager แจ้งเกี่ยวกับการอัปเดตที่มีอยู่ ขอแนะนำให้ติดตั้งรีวิชันล่าสุดของแพลตฟอร์มเพื่อการบิลด์ที่เสถียร
โดยค่าเริ่มต้น แต่ละ SDK Platform ใช้พื้นที่ 200-800 MB ในไดเรกทอรี Android/Sdk/platforms/android-{API} ภายในโฟลเดอร์ประกอบด้วย android.jar, โฟลเดอร์ data พร้อมทรัพยากรและไฟล์กำหนดค่าสำหรับอีมูเลเตอร์และระบบบิลด์
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ