<uses-sdk>

Google Play ใช้แอตทริบิวต์ <uses-sdk> ที่ประกาศไว้ในไฟล์ Manifest ของแอปเพื่อกรองแอปออกจากอุปกรณ์ที่ไม่เป็นไปตามข้อกำหนดเวอร์ชันแพลตฟอร์ม ก่อนตั้งค่าแอตทริบิวต์เหล่านี้ โปรดทำความเข้าใจตัวกรอง Google Play

ไวยากรณ์:
<uses-sdk android:minSdkVersion="integer"
          android:targetSdkVersion="integer"
          android:maxSdkVersion="integer" />
มีอยู่ใน:
<manifest>
คำอธิบาย:

ช่วยให้คุณแสดงความเข้ากันได้ของแอปพลิเคชันกับแพลตฟอร์ม Android อย่างน้อย 1 เวอร์ชันโดยใช้จำนวนเต็มระดับ API ระดับ API ที่แอปพลิเคชันแสดงจะเปรียบเทียบกับระดับ API ของระบบ Android หนึ่งๆ ซึ่งอาจแตกต่างกันไปในอุปกรณ์ Android แต่ละเครื่อง

แม้ว่าจะมีชื่อเช่นนี้ แต่องค์ประกอบนี้ใช้เพื่อระบุระดับ API ไม่ใช่หมายเลขเวอร์ชันของชุดพัฒนาซอฟต์แวร์ (SDK) หรือแพลตฟอร์ม Android ระดับ API จะเป็นจำนวนเต็มเดียวเสมอ คุณไม่สามารถรับระดับ API จากหมายเลขเวอร์ชัน Android ที่เชื่อมโยงได้ เช่น ไม่เหมือนกับเวอร์ชันหลักหรือผลรวมของเวอร์ชันหลักและเวอร์ชันย่อย

คุณไม่สามารถระบุว่าแอปกำหนดเป้าหมายหรือต้องใช้ SDK เวอร์ชันย่อย

และอ่านเอกสารเกี่ยวกับการกำหนดเวอร์ชันแอปพลิเคชันด้วย

แอตทริบิวต์:
android:minSdkVersion
จำนวนเต็มที่ระบุระดับ API ขั้นต่ำที่จำเป็นสำหรับแอปพลิเคชันที่จะเรียกใช้ ระบบ Android จะป้องกันไม่ให้ผู้ใช้ติดตั้งแอปพลิเคชันหากระดับ API ของระบบต่ำกว่าค่าที่ระบุในแอตทริบิวต์นี้ ประกาศแอตทริบิวต์นี้เสมอ

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

android:targetSdkVersion
จำนวนเต็มที่ระบุระดับ API ที่แอปพลิเคชันกำหนดเป้าหมาย หากไม่ได้ตั้งค่า ค่าเริ่มต้นจะเท่ากับค่าที่กำหนดให้กับ minSdkVersion

แอตทริบิวต์นี้จะแจ้งให้ระบบทราบว่าคุณได้ทดสอบกับเวอร์ชันเป้าหมายแล้ว และระบบจะไม่เปิดใช้ลักษณะการทำงานด้านความเข้ากันได้ใดๆ เพื่อรักษาความเข้ากันได้ในอนาคตของแอปกับเวอร์ชันเป้าหมาย แอปพลิเคชันจะยังคงทำงานในเวอร์ชันที่ต่ำกว่าได้ (ต่ำสุดคือ minSdkVersion)

เมื่อ Android พัฒนาไปด้วยแต่ละเวอร์ชันใหม่ๆ พฤติกรรมบางอย่างและแม้แต่รูปลักษณ์อาจมีการเปลี่ยนแปลง อย่างไรก็ตาม หากระดับ API ของแพลตฟอร์มสูงกว่าเวอร์ชันที่ targetSdkVersion ของแอปประกาศไว้ ระบบจะเปิดใช้ลักษณะการทำงานที่เข้ากันได้เพื่อให้แอปทำงานต่อไปตามที่คุณคาดหวัง คุณปิดใช้ลักษณะการทำงานที่เข้ากันได้ดังกล่าวได้โดยระบุ targetSdkVersion ให้ตรงกับระดับ API ของแพลตฟอร์มที่แอปทำงานอยู่

ตัวอย่างเช่น การตั้งค่านี้เป็น "11" ขึ้นไปจะช่วยให้ระบบใช้ธีมเริ่มต้นของ Holo กับแอปของคุณเมื่อทำงานบน Android 3.0 ขึ้นไป และยังปิดใช้โหมดความเข้ากันได้ของหน้าจอเมื่อทำงานบนหน้าจอขนาดใหญ่ขึ้นด้วย เนื่องจากการรองรับ API ระดับ 11 จะรองรับหน้าจอขนาดใหญ่ขึ้นโดยนัย

ระบบสามารถเปิดใช้ลักษณะการทำงานที่เข้ากันได้หลายอย่างตามค่าที่คุณตั้งไว้สำหรับแอตทริบิวต์นี้ พฤติกรรมเหล่านี้หลายอย่างอธิบายไว้ในเวอร์ชันแพลตฟอร์มที่เกี่ยวข้องในข้อมูลอ้างอิง Build.VERSION_CODES

หากต้องการดูแลรักษาแอปพลิเคชันควบคู่ไปกับ Android แต่ละรุ่น ให้เพิ่มค่าของแอตทริบิวต์นี้ให้ตรงกับระดับ API ล่าสุด จากนั้นทดสอบแอปพลิเคชันอย่างละเอียดในเวอร์ชันแพลตฟอร์มที่เกี่ยวข้อง

เปิดตัวใน: ระดับ API 4

android:maxSdkVersion
จำนวนเต็มที่กำหนดระดับ API สูงสุดที่แอปพลิเคชันออกแบบมาให้ทำงาน

ใน Android 1.5, 1.6, 2.0 และ 2.0.1 ระบบจะตรวจสอบค่าของแอตทริบิวต์นี้เมื่อติดตั้งแอปพลิเคชันและเมื่อตรวจสอบแอปพลิเคชันอีกครั้งหลังจากการอัปเดตระบบ ไม่ว่าในกรณีใด หากแอตทริบิวต์ maxSdkVersion ของแอปพลิเคชันต่ำกว่าระดับ API ที่ระบบใช้ ระบบจะไม่อนุญาตให้ติดตั้งแอปพลิเคชัน ในกรณีที่มีการตรวจสอบอีกครั้งหลังจากการอัปเดตระบบ การดำเนินการนี้จะนำแอปพลิเคชันของคุณออกจากอุปกรณ์อย่างมีประสิทธิภาพ

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

แอปพลิเคชันที่ประกาศ maxSdkVersion="5" ในไฟล์ Manifest ได้รับการเผยแพร่ใน Google Play ผู้ใช้ที่มีอุปกรณ์ที่ใช้ Android 1.6 (ระดับ API 4) ดาวน์โหลดและติดตั้งแอป หลังจากผ่านไป 2-3 สัปดาห์ ผู้ใช้จะได้รับการอัปเดตระบบผ่านอากาศ (OTA) เป็น Android 2.0 (ระดับ API 5) หลังจากติดตั้งการอัปเดตแล้ว ระบบจะตรวจสอบ maxSdkVersion ของแอปพลิเคชันและตรวจสอบความถูกต้องอีกครั้งได้สำเร็จ

แอปพลิเคชันจะทำงานตามปกติ อย่างไรก็ตาม หลังจากนั้นอุปกรณ์จะได้รับการอัปเดตระบบอีกครั้ง โดยครั้งนี้จะอัปเดตเป็น Android 2.0.1 (ระดับ API 6) หลังจากอัปเดตแล้ว ระบบจะไม่สามารถตรวจสอบแอปพลิเคชันอีกครั้งได้ เนื่องจากระดับ API ของระบบ (6) สูงกว่าระดับสูงสุดที่แอปพลิเคชันรองรับ (5) ระบบจะป้องกันไม่ให้ผู้ใช้มองเห็นแอปพลิเคชัน ซึ่งส่งผลให้นำแอปพลิเคชันออกจากอุปกรณ์

คำเตือน: เราไม่แนะนำให้ประกาศแอตทริบิวต์นี้ ประการแรก ไม่จำเป็นต้องตั้งค่าแอตทริบิวต์เป็นวิธีการบล็อกการติดตั้งใช้งานแอปพลิเคชันของคุณในแพลตฟอร์ม Android เวอร์ชันใหม่เมื่อมีการเปิดตัว แพลตฟอร์มเวอร์ชันใหม่ได้รับการออกแบบมาให้เข้ากันได้แบบย้อนหลังอย่างสมบูรณ์ แอปพลิเคชันของคุณจะทำงานได้อย่างถูกต้องในเวอร์ชันใหม่ หากใช้เฉพาะ API มาตรฐานและเป็นไปตามแนวทางปฏิบัติแนะนำในการพัฒนา ประการที่ 2 ในบางกรณี การประกาศแอตทริบิวต์อาจส่งผลให้แอปพลิเคชันของคุณถูกนำออกจากอุปกรณ์ของผู้ใช้หลังจากการอัปเดตระบบเป็นระดับ API ที่สูงขึ้น อุปกรณ์ส่วนใหญ่ที่อาจมีการติดตั้งแอปพลิเคชันของคุณจะได้รับการอัปเดตระบบเป็นระยะๆ ผ่านอากาศ (OTA) ดังนั้นโปรดพิจารณาผลกระทบที่มีต่อแอปพลิเคชันของคุณก่อนที่จะตั้งค่าแอตทริบิวต์นี้

เปิดตัวใน: ระดับ API 4

Android บางเวอร์ชัน (นอกเหนือจาก Android 2.0.1) ไม่ตรวจสอบหรือบังคับใช้แอตทริบิวต์ maxSdkVersion ระหว่างการติดตั้งหรือการตรวจสอบอีกครั้ง อย่างไรก็ตาม Google Play จะยังคงใช้แอตทริบิวต์เป็นตัวกรองเมื่อแสดงแอปพลิเคชันที่พร้อมให้ผู้ใช้ดาวน์โหลด
เปิดตัวใน:
ระดับ API 1

ระดับ API คืออะไร

ระดับ API คือค่าจำนวนเต็มที่ระบุการแก้ไขเฟรมเวิร์ก API ที่ไม่ซ้ำกันซึ่งเสนอโดยแพลตฟอร์ม Android เวอร์ชันหนึ่ง

แพลตฟอร์ม Android มี Framework API ที่แอปพลิเคชันสามารถใช้เพื่อโต้ตอบกับระบบ Android ที่เกี่ยวข้อง API ของเฟรมเวิร์กประกอบด้วยสิ่งต่อไปนี้

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

แพลตฟอร์ม Android เวอร์ชันต่อๆ มาแต่ละเวอร์ชันอาจรวมการอัปเดต API เฟรมเวิร์กแอปพลิเคชัน Android ที่แพลตฟอร์มนั้นๆ มีให้

การอัปเดต API ของเฟรมเวิร์กได้รับการออกแบบมาเพื่อให้ API ใหม่ยังคงเข้ากันได้กับ API เวอร์ชันก่อนหน้า กล่าวคือ การเปลี่ยนแปลงส่วนใหญ่ใน API เป็นการเพิ่มและแนะนำฟังก์ชันการทำงานใหม่หรือฟังก์ชันการทำงานทดแทน เมื่อมีการอัปเกรดส่วนต่างๆ ของ API ส่วนเก่าที่ถูกแทนที่จะเลิกใช้งานแต่ไม่ได้ถูกนำออก เพื่อให้แอปพลิเคชันที่มีอยู่ยังคงใช้ส่วนเหล่านั้นได้

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

API ของเฟรมเวิร์กที่แพลตฟอร์ม Android มีให้จะระบุโดยใช้ตัวระบุจำนวนเต็มที่เรียกว่าระดับ API แพลตฟอร์ม Android แต่ละเวอร์ชันรองรับระดับ API เพียงระดับเดียว แม้ว่าการรองรับจะครอบคลุมระดับ API ก่อนหน้าทั้งหมดโดยนัย (จนถึงระดับ API 1) แพลตฟอร์ม Android เวอร์ชันแรกมีระดับ API เป็น 1 และเวอร์ชันต่อๆ มาก็มีระดับ API เพิ่มขึ้นเรื่อยๆ API ที่เปิดตัวหรือเลิกใช้งานใน SDK เวอร์ชันตัวอย่างรุ่นทดลองที่ยังไม่ถึงระดับความเสถียรของแพลตฟอร์มจะทำเครื่องหมายเป็น "API อยู่ระหว่างการพัฒนา" แทนหมายเลขระดับ API

ตารางต่อไปนี้ระบุระดับ API ที่แพลตฟอร์ม Android แต่ละเวอร์ชันรองรับ ดูข้อมูลเกี่ยวกับจำนวนอุปกรณ์ที่เกี่ยวข้องซึ่งใช้แต่ละเวอร์ชันได้ที่แดชบอร์ดการเผยแพร่

รุ่นของแพลตฟอร์มระดับ APIVERSION_CODEหมายเหตุ
Android 17 37 CINNAMON_BUN ไฮไลต์ของแพลตฟอร์ม
Android 16 36 BAKLAVA ไฮไลต์ของแพลตฟอร์ม
Android 15 35 VANILLA_ICE_CREAM ไฮไลต์ของแพลตฟอร์ม
Android 14 34 UPSIDE_DOWN_CAKE ไฮไลต์ของแพลตฟอร์ม
Android 13 33 TIRAMISU ไฮไลต์ของแพลตฟอร์ม
Android 12 32 S_V2 ไฮไลต์ของแพลตฟอร์ม
31 S ไฮไลต์ของแพลตฟอร์ม
Android 11 30 R ไฮไลต์ของแพลตฟอร์ม
Android 10 29 Q ไฮไลต์ของแพลตฟอร์ม
Android 9 28 P ไฮไลต์ของแพลตฟอร์ม
Android 8.1 27 O_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 8.0 26 O ไฮไลต์ของแพลตฟอร์ม
Android 7.1.1
Android 7.1
25 N_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 7.0 24 N ไฮไลต์ของแพลตฟอร์ม
Android 6.0 23 M ไฮไลต์ของแพลตฟอร์ม
Android 5.1 22 LOLLIPOP_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 5.0 21 LOLLIPOP
Android 4.4W 20 KITKAT_WATCH KitKat สำหรับอุปกรณ์ที่สวมใส่ได้เท่านั้น
Android 4.4 19 KITKAT ไฮไลต์ของแพลตฟอร์ม
Android 4.3 18 JELLY_BEAN_MR2 ไฮไลต์ของ แพลตฟอร์ม
Android 4.2, 4.2.2 17 JELLY_BEAN_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 4.1, 4.1.1 16 JELLY_BEAN ไฮไลต์ของแพลตฟอร์ม
Android 4.0.3, 4.0.4 15 ICE_CREAM_SANDWICH_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 4.0, 4.0.1, 4.0.2 14 ICE_CREAM_SANDWICH
Android 3.2 13 HONEYCOMB_MR2
Android 3.1.x 12 HONEYCOMB_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 3.0.x 11 HONEYCOMB ไฮไลต์ของแพลตฟอร์ม
Android 2.3.4
Android 2.3.3
10 GINGERBREAD_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 2.3.2
Android 2.3.1
Android 2.3
9 GINGERBREAD
Android 2.2.x 8 FROYO ไฮไลต์ของแพลตฟอร์ม
Android 2.1.x 7 ECLAIR_MR1 ไฮไลต์ของแพลตฟอร์ม
Android 2.0.1 6 ECLAIR_0_1
Android 2.0 5 ECLAIR
Android 1.6 4 DONUT ไฮไลต์ของแพลตฟอร์ม
Android 1.5 3 CUPCAKE ไฮไลต์ของแพลตฟอร์ม
Android 1.1 2 BASE_1_1
Android 1.0 1 BASE

API ที่อยู่ระหว่างการพัฒนา

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

  • สถานะตัวอย่างก่อนเผยแพร่: การเพิ่มหรือการเลิกใช้งาน API เป็นส่วนหนึ่งของรุ่น SDK ตัวอย่างเบต้าหรือคานารีที่ใช้งานอยู่ก่อนการสรุประดับ API
  • ไม่รับประกันความเสถียร: API ที่อยู่ระหว่างการพัฒนาอาจมีการเปลี่ยนแปลงลายเซ็น เปลี่ยนชื่อ หรือถูกนำออกทั้งหมดระหว่างการเปิดตัว SDK เวอร์ชันตัวอย่าง ซึ่งต่างจาก API ที่เผยแพร่แล้ว (ซึ่งมีระดับ API ถาวรและเข้ากันได้แบบย้อนหลังกับรุ่นในอนาคต)

ตรวจสอบ API ที่อยู่ระหว่างการพัฒนาที่รันไทม์ (PREVIEW_SDK_INT)

เนื่องจาก API ที่อยู่ระหว่างการพัฒนาอาจเปลี่ยนแปลงหรือหายไประหว่างเวอร์ชันตัวอย่าง โปรดอย่าใช้การตรวจสอบมากกว่าหรือเท่ากับ (>=) เพื่อป้องกันการเรียก API ที่ยังไม่ได้เผยแพร่ API ที่มีอยู่ในเวอร์ชันตัวอย่าง 1 อาจมีการแก้ไขหรือยกเลิกในเวอร์ชันตัวอย่าง 2

แต่แอปที่ทดสอบฟีเจอร์เวอร์ชันตัวอย่างต้องตรวจสอบค่า Build.VERSION.PREVIEW_SDK_INT เพื่อดูความเท่ากันอย่างเคร่งครัด (==) กับเวอร์ชันตัวอย่างที่แน่นอนซึ่งแอปได้รับการคอมไพล์ ดังนี้

  • ในบิลด์และรุ่นที่ใช้งานจริงขั้นสุดท้าย Build.VERSION.PREVIEW_SDK_INT จะเป็น 0 เสมอ
  • ในบิลด์ตัวอย่าง PREVIEW_SDK_INT จะไม่ซ้ำกันสำหรับแต่ละรุ่น

การใช้ระดับ API ใน Android

ตัวระบุระดับ API มีบทบาทสำคัญในการช่วยให้ผู้ใช้และนักพัฒนาแอปพลิเคชันได้รับประสบการณ์ที่ดีที่สุดเท่าที่จะเป็นไปได้ ดังนี้

  • ซึ่งช่วยให้แพลตฟอร์ม Android อธิบายการแก้ไข API ของเฟรมเวิร์กสูงสุดที่รองรับได้
  • ซึ่งช่วยให้แอปพลิเคชันอธิบายการแก้ไข API ของเฟรมเวิร์กที่แอปพลิเคชันต้องการได้
  • ซึ่งช่วยให้ระบบเจรจาการติดตั้งแอปพลิเคชันในอุปกรณ์ของผู้ใช้เพื่อไม่ให้มีการติดตั้งแอปพลิเคชันที่เวอร์ชันไม่เข้ากัน

แพลตฟอร์ม Android แต่ละเวอร์ชันจะจัดเก็บตัวระบุระดับ API ไว้ภายในระบบ Android เอง

แอปพลิเคชันสามารถใช้องค์ประกอบไฟล์ Manifest ที่ได้จาก API เฟรมเวิร์ก <uses-sdk> เพื่ออธิบายระดับ API ขั้นต่ำและสูงสุดที่แอปพลิเคชันสามารถทำงานได้ รวมถึงระดับ API ที่ต้องการซึ่งแอปพลิเคชันออกแบบมาเพื่อรองรับ องค์ประกอบนี้มีแอตทริบิวต์หลัก 3 รายการ ได้แก่

  • android:minSdkVersion: ระดับ API ขั้นต่ำที่แอปพลิเคชันสามารถทำงานได้ โดยค่าเริ่มต้นจะเป็น "1"
  • android:targetSdkVersion: ระดับ API ที่แอปพลิเคชันออกแบบมาให้ทำงาน ในบางกรณี การดำเนินการนี้จะช่วยให้แอปพลิเคชันใช้องค์ประกอบหรือลักษณะการทำงานของไฟล์ Manifest ที่กำหนดไว้ในระดับ API เป้าหมายได้ แทนที่จะถูกจำกัดให้ใช้เฉพาะองค์ประกอบหรือลักษณะการทำงานที่กำหนดไว้สำหรับระดับ API ขั้นต่ำ
  • android:maxSdkVersion: ระดับ API สูงสุดที่แอปพลิเคชันจะทำงานได้ สำคัญ: อ่านข้อมูลเกี่ยวกับแอตทริบิวต์นี้ในหน้านี้ก่อนใช้

ตัวอย่างเช่น หากต้องการระบุระดับ API ขั้นต่ำของระบบที่แอปพลิเคชันต้องใช้เพื่อเรียกใช้ แอปพลิเคชันจะรวมองค์ประกอบ <uses-sdk> ที่มีแอตทริบิวต์ android:minSdkVersion ไว้ในไฟล์ Manifest ค่าของ android:minSdkVersion คือจำนวนเต็มที่สอดคล้องกับระดับ API ของแพลตฟอร์ม Android เวอร์ชันแรกสุดที่แอปพลิเคชันสามารถทำงานได้

เมื่อผู้ใช้พยายามติดตั้งแอปพลิเคชัน หรือเมื่อตรวจสอบแอปพลิเคชันอีกครั้งหลังจากการอัปเดตระบบ ระบบ Android จะตรวจสอบแอตทริบิวต์ <uses-sdk> ในไฟล์ Manifest ของแอปพลิเคชันก่อน แล้วเปรียบเทียบค่ากับระดับ API ภายในของตนเอง ระบบจะอนุญาตให้เริ่มการติดตั้งก็ต่อเมื่อเป็นไปตามเงื่อนไขต่อไปนี้เท่านั้น

  • หากมีการประกาศแอตทริบิวต์ android:minSdkVersion ค่าของแอตทริบิวต์จะน้อยกว่าหรือเท่ากับจำนวนเต็มระดับ API ของระบบ หากไม่ได้ประกาศ ระบบจะถือว่าแอปพลิเคชันต้องใช้ API ระดับ 1
  • หากมีการประกาศแอตทริบิวต์ android:maxSdkVersion ค่าของแอตทริบิวต์จะเท่ากับหรือมากกว่าจำนวนเต็มระดับ API ของระบบ หากไม่ได้ประกาศ ระบบจะถือว่าแอปพลิเคชันไม่มีระดับ API สูงสุด อ่านคำอธิบายของแอตทริบิวต์นี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่ระบบจัดการแอตทริบิวต์

เมื่อประกาศในไฟล์ Manifest ของแอปพลิเคชัน องค์ประกอบ <uses-sdk> อาจมีลักษณะดังนี้

<manifest>
  <uses-sdk android:minSdkVersion="5" />
  ...
</manifest>

เหตุผลหลักที่แอปพลิเคชันประกาศระดับ API ใน android:minSdkVersion คือเพื่อบอกระบบ Android ว่าแอปใช้ API ที่เปิดตัวในระดับ API ที่ระบุ

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

ข้อควรพิจารณาในการพัฒนา

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

ความเข้ากันได้แบบส่งต่อของแอปพลิเคชัน

โดยทั่วไปแล้ว แอปพลิเคชัน Android จะเข้ากันได้กับแพลตฟอร์ม Android เวอร์ชันใหม่ๆ

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

ความเข้ากันได้แบบส่งต่อเป็นสิ่งสำคัญเนื่องจากอุปกรณ์ที่ทำงานด้วยระบบ Android จำนวนมากได้รับการอัปเดตระบบผ่านอากาศ (OTA) ผู้ใช้อาจติดตั้งแอปพลิเคชันของคุณและใช้งานได้สำเร็จ จากนั้นจึงได้รับการอัปเดต OTA เป็นแพลตฟอร์ม Android เวอร์ชันใหม่ในภายหลัง เมื่อติดตั้งการอัปเดตแล้ว แอปพลิเคชันจะทำงานในสภาพแวดล้อมรันไทม์เวอร์ชันใหม่ แต่ยังคงมี API และความสามารถของระบบที่แอปพลิเคชันต้องใช้

การเปลี่ยนแปลงที่เกิดขึ้นด้านล่าง API เช่น การเปลี่ยนแปลงในระบบที่สำคัญอาจส่งผลต่อแอปพลิเคชันเมื่อทำงานในสภาพแวดล้อมใหม่ ในฐานะนักพัฒนาแอปพลิเคชัน คุณควรทำความเข้าใจลักษณะและลักษณะการทำงานของแอปพลิเคชันในสภาพแวดล้อมของแต่ละระบบ

Android SDK มีหลายแพลตฟอร์มที่คุณดาวน์โหลดได้เพื่อช่วยทดสอบแอปพลิเคชันในแพลตฟอร์ม Android เวอร์ชันต่างๆ แต่ละแพลตฟอร์มจะมีอิมเมจระบบที่เข้ากันได้ซึ่งคุณสามารถเรียกใช้ใน AVD เพื่อทดสอบแอปพลิเคชันได้

ความเข้ากันได้แบบย้อนหลังของแอปพลิเคชัน

แอปพลิเคชัน Android ไม่จำเป็นต้องเข้ากันได้แบบย้อนหลังกับแพลตฟอร์ม Android เวอร์ชันที่เก่ากว่าเวอร์ชันที่คอมไพล์

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

แม้ว่าอุปกรณ์ที่ทำงานด้วย Android ไม่น่าจะดาวน์เกรดเป็นแพลตฟอร์มเวอร์ชันก่อนหน้า แต่คุณควรตระหนักว่าอาจมีอุปกรณ์จำนวนมากที่ใช้แพลตฟอร์มเวอร์ชันก่อนหน้า แม้แต่อุปกรณ์ที่ได้รับการอัปเดต OTA ก็อาจมีความล่าช้าและอาจไม่ได้รับการอัปเดตเป็นเวลานาน

เลือกเวอร์ชันแพลตฟอร์มและระดับ API

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

คุณสามารถกำหนดเวอร์ชันแพลตฟอร์มที่ต่ำที่สุดได้โดยการคอมไพล์แอปพลิเคชันกับเป้าหมายบิลด์ที่ต่ำลงเรื่อยๆ หลังจากระบุเวอร์ชันต่ำสุดแล้ว ให้สร้าง AVD โดยใช้เวอร์ชันแพลตฟอร์มและระดับ API ที่เกี่ยวข้อง แล้วทดสอบแอปพลิเคชันอย่างเต็มรูปแบบ อย่าลืมประกาศแอตทริบิวต์ android:minSdkVersion ในไฟล์ Manifest ของแอปพลิเคชันและตั้งค่าเป็นระดับ API ของเวอร์ชันแพลตฟอร์ม

ประกาศระดับ API ขั้นต่ำ

หากคุณสร้างแอปพลิเคชันที่ใช้ API หรือฟีเจอร์ของระบบที่เปิดตัวในแพลตฟอร์มเวอร์ชันล่าสุด ให้ตั้งค่าแอตทริบิวต์ android:minSdkVersion เป็นระดับ API ของแพลตฟอร์มเวอร์ชันล่าสุด ซึ่งจะช่วยให้ผู้ใช้ติดตั้งแอปพลิเคชันได้ก็ต่อเมื่ออุปกรณ์ใช้แพลตฟอร์ม Android เวอร์ชันที่เข้ากันได้เท่านั้น ซึ่งจะช่วยให้มั่นใจได้ว่าแอปพลิเคชันของคุณจะทำงานได้อย่างถูกต้องบนอุปกรณ์ของผู้ใช้

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

ทดสอบกับระดับ API ที่สูงขึ้น

หลังจากคอมไพล์แอปพลิเคชันแล้ว อย่าลืมทดสอบแอปพลิเคชันบนแพลตฟอร์มที่ระบุไว้ในแอตทริบิวต์ android:minSdkVersion ของแอปพลิเคชัน โดยสร้าง AVD ที่ใช้เวอร์ชันแพลตฟอร์มที่แอปพลิเคชันของคุณต้องการ นอกจากนี้ หากต้องการตรวจสอบความเข้ากันได้ในอนาคต ให้เรียกใช้และทดสอบแอปพลิเคชันในทุกแพลตฟอร์มที่ใช้ระดับ API สูงกว่าที่แอปพลิเคชันของคุณใช้

Android SDK มีแพลตฟอร์มหลายเวอร์ชันที่คุณใช้ได้ รวมถึงเวอร์ชันล่าสุด และมีเครื่องมืออัปเดตที่คุณใช้ดาวน์โหลดแพลตฟอร์มเวอร์ชันอื่นๆ ได้ตามความจำเป็น

หากต้องการเข้าถึงโปรแกรมอัปเดต ให้ใช้เครื่องมือบรรทัดคำสั่ง android ซึ่งอยู่ในไดเรกทอรี <sdk>/tools คุณเปิดเครื่องมืออัปเดต SDK ได้โดยเรียกใช้ android sdk หรือจะดับเบิลคลิกไฟล์ android.bat (Windows) หรือ android (OS X/Linux) ก็ได้

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

กรองเอกสารอ้างอิงตามระดับ API

หน้าเอกสารอ้างอิงของแพลตฟอร์ม Android มีการควบคุม "ระดับ API" ที่ด้านซ้ายบนของแต่ละหน้า คุณสามารถใช้ตัวควบคุมเพื่อแสดงเอกสารประกอบเฉพาะส่วนของ API ที่แอปพลิเคชันเข้าถึงได้จริง โดยอิงตามระดับ API ที่ระบุไว้ในแอตทริบิวต์ android:minSdkVersion ของไฟล์ Manifest

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

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

หากต้องการกลับไปดูเอกสารประกอบฉบับเต็ม ให้เลือก REL ที่ด้านบนของเมนูระดับ API โดยค่าเริ่มต้น ระบบจะปิดใช้การกรองระดับ API เพื่อให้คุณดู API เฟรมเวิร์กแบบเต็มได้ ไม่ว่าจะมีระดับ API ใดก็ตาม

เอกสารอ้างอิงสำหรับองค์ประกอบ API แต่ละรายการจะระบุระดับ API ที่มีการเปิดตัวหรือเลิกใช้งานองค์ประกอบแต่ละรายการ ระดับ API สำหรับแพ็กเกจและคลาสจะระบุเป็น "เพิ่มในระดับ API" และ "เลิกใช้งานในระดับ API" (หากมี) ที่มุมขวาบนของพื้นที่เนื้อหาในหน้าเอกสารประกอบแต่ละหน้า ระดับ API สำหรับสมาชิกคลาสจะระบุไว้ในส่วนหัวของคำอธิบายโดยละเอียดที่ขอบด้านขวา สำหรับการเพิ่มหรือการเลิกใช้งาน API รุ่นทดลองที่ยังไม่ถึงความเสถียรของแพลตฟอร์ม ตำแหน่งเหล่านี้จะแสดง "API อยู่ระหว่างการพัฒนา" แทนหมายเลขระดับ API