เมื่ออัปโหลด APK คุณต้องปฏิบัติตามข้อกำหนดระดับ API เป้าหมายของ Google Play
ตั้งแต่วันที่ 31 สิงหาคม 2026 เป็นต้นไปจะมีการดำเนินการต่อไปนี้
- แอปใหม่และการอัปเดตแอปต้องกำหนดเป้าหมายเป็น Android 16 (ระดับ API 36) ขึ้นไปเพื่อส่งไปยัง Google Play ยกเว้นแอป Wear OS และ Android Automotive OS ซึ่งต้องกำหนดเป้าหมายเป็น Android 15 (ระดับ API 35) ขึ้นไป และแอป Android TV และ Android XR ซึ่งต้องกำหนดเป้าหมายเป็น Android 14 (ระดับ API 34) ขึ้นไป
- แอปที่มีอยู่ต้องกำหนดเป้าหมายเป็น Android 15 (API ระดับ 35) ขึ้นไปเพื่อให้พร้อมใช้งานสำหรับผู้ใช้ใหม่ซึ่งมีอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android เวอร์ชันใหม่กว่าระดับ API เป้าหมายของแอป แอปที่กำหนดเป้าหมายเป็น Android 14 (API ระดับ 34) หรือต่ำกว่า รวมถึง Android 13 (API ระดับ 33) หรือต่ำกว่าสำหรับ Wear OS, Android TV และ Android XR และ Android 12 (API ระดับ 31) หรือต่ำกว่าสำหรับ Android Automotive OS จะพร้อมใช้งานเฉพาะในอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android ที่มีเวอร์ชันเดียวกันหรือต่ำกว่าระดับ API เป้าหมายของแอปเท่านั้น
หากต้องการเวลาเพิ่มเติมในการอัปเดตแอป คุณจะขอขยายเวลาได้จนถึงวันที่ 1 พฤศจิกายน 2026 คุณจะเข้าถึงแบบฟอร์มขยายเวลาของแอปใน Play Console ได้ภายในปีนี้
ข้อยกเว้นสำหรับข้อกำหนดเหล่านี้ ได้แก่
- แอปส่วนตัวแบบถาวรที่จำกัดไว้สำหรับผู้ใช้ในองค์กรหนึ่งโดยเฉพาะและมีไว้เพื่อการเผยแพร่ภายในเท่านั้น
เหตุใดจึงควรกำหนดเป้าหมายเป็น SDK เวอร์ชันใหม่
Android เวอร์ชันใหม่ทุกเวอร์ชันมีการเปลี่ยนแปลงที่ช่วยเพิ่มความปลอดภัยและประสิทธิภาพ และช่วยปรับปรุงประสบการณ์การใช้งาน Android ของผู้ใช้ การเปลี่ยนแปลงบางอย่างเหล่านี้จะมีผลกับแอปที่ประกาศการรองรับอย่างชัดเจนผ่านแอตทริบิวต์ไฟล์ Manifest targetSdkVersion (หรือที่เรียกว่าระดับ API เป้าหมาย) เท่านั้น
การกำหนดค่าแอปเพื่อกำหนดเป้าหมายระดับ API ล่าสุดจะทำให้ผู้ใช้ได้รับประโยชน์จากการปรับปรุงเหล่านี้ ในขณะที่แอปยังทำงานบน Android เวอร์ชันเก่าได้ การกำหนดเป้าหมายเป็นระดับ API ล่าสุดยังช่วยให้แอปของคุณใช้ประโยชน์จากฟีเจอร์ล่าสุดของแพลตฟอร์มเพื่อสร้างความพึงพอใจให้แก่ผู้ใช้ได้ด้วย นอกจากนี้ ตั้งแต่ Android 10 (API ระดับ 29) เป็นต้นไป ผู้ใช้จะเห็นคำเตือนเมื่อเริ่มแอปเป็นครั้งแรกหากแอปกำหนดเป้าหมายเป็น Android 5.1 (API ระดับ 22) หรือต่ำกว่า
เอกสารนี้จะไฮไลต์ประเด็นสำคัญที่คุณจำเป็นต้องทราบในการอัปเดตระดับ API เป้าหมายเพื่อให้เป็นไปตามข้อกำหนดของ Google Play ดูวิธีการในส่วนต่อไปนี้ โดยขึ้นอยู่กับเวอร์ชันที่คุณจะย้ายข้อมูลไป
ก็ได้ย้ายข้อมูลจาก Android 12 ขึ้นไป (ระดับ API 31) ไปยังเวอร์ชันที่ใหม่กว่า
หากต้องการอัปเดตแอปเพื่อกำหนดเป้าหมายเป็น Android เวอร์ชันที่ใหม่กว่า ให้ทำตามรายการการเปลี่ยนแปลงลักษณะการทำงานที่เกี่ยวข้องต่อไปนี้
- การเปลี่ยนแปลงลักษณะการทำงานของ Android 13
- การเปลี่ยนแปลงลักษณะการทำงานของ Android 14
- การเปลี่ยนแปลงลักษณะการทำงานของ Android 15
- การเปลี่ยนแปลงลักษณะการทำงานของ Android 16
ย้ายข้อมูลจาก Android 11 (ระดับ API 30) ไปยัง Android 12 (ระดับ API 31)
ความปลอดภัยและสิทธิ์
- บลูทูธ: คุณต้องแทนที่การประกาศสำหรับสิทธิ์
BLUETOOTHและBLUETOOTH_ADMINด้วยสิทธิ์BLUETOOTH_SCAN,BLUETOOTH_ADVERTISEหรือBLUETOOTH_CONNECTคุณไม่จำเป็นต้องส่งคำขอสิทธิ์รันไทม์LOCATIONสำหรับการดำเนินการบลูทูธอีกต่อไป - ตำแหน่ง: ผู้ใช้สามารถขอให้แอปเรียกข้อมูลตำแหน่งโดยประมาณเท่านั้น คุณต้องขอสิทธิ์
ACCESS_COARSE_LOCATIONทุกครั้งที่ขอACCESS_FINE_LOCATION- ตัวกรอง Intent: หากแอปมีกิจกรรม บริการ หรือ Broadcast Receiver ที่ใช้ตัวกรอง Intent คุณต้องประกาศแอตทริบิวต์ android:exported สำหรับคอมโพเนนต์เหล่านี้อย่างชัดเจน
- การไฮเบอร์เนต: ระบบอาจทำให้แอปเข้าสู่โหมดไฮเบอร์เนตหากไม่ได้ใช้งานเป็นระยะเวลาหนึ่ง ในโหมดไฮเบอร์เนต ระบบจะรีเซ็ตสิทธิ์รันไทม์และแคชของแอป และคุณจะเรียกใช้งานหรือการแจ้งเตือนไม่ได้ คุณสามารถตรวจสอบสถานะการไฮเบอร์เนตของแอปได้
- ความสามารถในการเปลี่ยนแปลงได้ของ Intent รอดำเนินการ: คุณต้องระบุความสามารถในการเปลี่ยนแปลงได้ของออบเจ็กต์ PendingIntent แต่ละรายการที่แอปสร้างขึ้น
ประสบการณ์ของผู้ใช้
- การแจ้งเตือนที่กำหนดเอง: การแจ้งเตือนที่มีมุมมองเนื้อหาที่กำหนดเองจะไม่ใช้พื้นที่การแจ้งเตือนทั้งหมดอีกต่อไป แต่ระบบจะใช้เทมเพลตมาตรฐานแทน เทมเพลตนี้ช่วยให้มั่นใจได้ว่าการแจ้งเตือนที่กำหนดเองจะมีการตกแต่งเหมือนกับการแจ้งเตือนอื่นๆ ในทุกสถานะ ลักษณะการทำงานนี้เกือบจะเหมือนกับลักษณะการทำงานของ
Notification.DecoratedCustomViewStyle - การเปลี่ยนแปลงการยืนยัน Android App Link: เมื่อใช้การยืนยัน Android App Link โปรดตรวจสอบว่าตัวกรอง Intent มีหมวดหมู่ BROWSABLE และรองรับรูปแบบ HTTPS
ประสิทธิภาพ
การจำกัดการเปิดบริการที่ทำงานอยู่เบื้องหน้า: หากต้องการกำหนดเป้าหมายเป็น Android 12 ขึ้นไป แอปของคุณจะเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะที่ทำงานอยู่เบื้องหลังไม่ได้ ยกเว้นในบางกรณีพิเศษ หากแอปพยายามเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะทำงานอยู่เบื้องหลัง จะเกิดข้อยกเว้น (ยกเว้นในบางกรณีพิเศษ)
ลองใช้ WorkManager เพื่อกำหนดเวลาและเริ่มงานด่วนขณะที่แอปทำงานอยู่เบื้องหลัง หากต้องการดำเนินการที่ต้องคำนึงถึงเวลาซึ่งผู้ใช้ขอให้เสร็จสมบูรณ์ ให้เริ่มบริการที่ทำงานอยู่เบื้องหน้าภายในสัญญาณปลุกเจาะจง
ข้อจำกัดของแทรมโปลีนการแจ้งเตือน: เมื่อผู้ใช้แตะการแจ้งเตือน บางแอปจะตอบสนองด้วยการเปิดคอมโพเนนต์ของแอปที่เริ่มกิจกรรมที่ผู้ใช้เห็นและโต้ตอบด้วย คอมโพเนนต์แอปนี้เรียกว่าแทรมโพลีนการแจ้งเตือน
แอปต้องไม่เริ่มกิจกรรมจากบริการหรือ Broadcast Receiver ที่ใช้เป็นแทรมโปลีนการแจ้งเตือน หลังจากผู้ใช้แตะการแจ้งเตือนหรือปุ่มดำเนินการภายในการแจ้งเตือน แอปจะเรียกใช้
startActivity()ภายในบริการหรือ Broadcast Receiver ไม่ได้
ดูชุดการเปลี่ยนแปลงทั้งหมดที่ส่งผลต่อแอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31)
ย้ายข้อมูลจากเวอร์ชันต่ำกว่า Android 11 (ระดับ API 30)
เลือกเวอร์ชัน Android ที่คุณจะย้ายข้อมูลมา
ย้ายข้อมูลไปยัง Android 5 (ระดับ API 21)
ดูหน้าการเปลี่ยนแปลงลักษณะการทำงานที่เกี่ยวข้องสำหรับแต่ละรุ่นต่อไปนี้เพื่อให้แน่ใจว่าแอปของคุณได้พิจารณาการเปลี่ยนแปลงที่เกิดขึ้นในรุ่นเหล่านี้แล้ว
ดำเนินการต่อด้วยการปฏิบัติตามวิธีการในส่วนถัดไป
ย้ายข้อมูลไปยัง Android 6 (ระดับ API 23)
ข้อควรพิจารณาต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น Android 6.0 และแพลตฟอร์มเวอร์ชันที่สูงกว่า
-
-
สิทธิ์ที่เป็นอันตรายจะได้รับการอนุญาตเมื่อรันไทม์เท่านั้น ขั้นตอน UI ต้องให้ความสามารถในการให้สิทธิ์เหล่านี้
-
ตรวจสอบว่าแอปของคุณพร้อมที่จะจัดการกับการปฏิเสธคำขอสิทธิ์เมื่อเป็นไปได้ เช่น หากผู้ใช้ปฏิเสธคำขอเข้าถึง GPS ของอุปกรณ์ ให้ตรวจสอบว่าแอปมีวิธีอื่นในการดำเนินการต่อ
-
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 6.0 (API ระดับ 23) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงานสำหรับแพลตฟอร์มเวอร์ชันนั้น
ดำเนินการต่อด้วยการปฏิบัติตามวิธีการในส่วนถัดไป
ย้ายข้อมูลไปยัง Android 7 (ระดับ API 24)
ข้อควรพิจารณาต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น Android 7.0 และแพลตฟอร์มเวอร์ชันที่สูงกว่า
-
Doze และสแตนด์บายแอป
ออกแบบสำหรับลักษณะการทำงานที่อธิบายไว้ในการเพิ่มประสิทธิภาพสำหรับโหมด Doze และสแตนด์บายแอป ซึ่งครอบคลุมการเปลี่ยนแปลงที่เพิ่มขึ้นซึ่งเปิดตัวในแพลตฟอร์มรุ่นต่างๆ
เมื่ออุปกรณ์อยู่ในโหมด Doze และโหมดสแตนด์บายแอป ระบบจะทำงานดังนี้
- จำกัดการเข้าถึงเครือข่าย
- เลื่อนการปลุก การซิงค์ และงาน
- จำกัดการสแกน GPS และ Wi-Fi
- จำกัดข้อความ Firebase Cloud Messaging ที่มีความสำคัญปกติ
-
การเปลี่ยนแปลงสิทธิ์
- ระบบจะจำกัดการเข้าถึงไดเรกทอรีส่วนตัวของแอป
-
การเปิดเผย URI ของ
file://นอกแอปจะทริกเกอร์FileUriExposedExceptionหากต้องการแชร์ไฟล์ภายนอกแอป ให้ใช้FileProvider
-
ระบบห้ามไม่ให้ลิงก์กับไลบรารีที่ไม่ใช่ NDK
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 7.0 (API ระดับ 24) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงานสำหรับแพลตฟอร์มเวอร์ชันนั้น
ดำเนินการต่อด้วยการปฏิบัติตามวิธีการในส่วนถัดไป
ย้ายข้อมูลไปยัง Android 8 (ระดับ API 26)
ข้อควรพิจารณาต่อไปนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น Android 8.0 และแพลตฟอร์มเวอร์ชันที่สูงกว่า
-
ขีดจำกัดการดำเนินการในเบื้องหลัง
-
ระบบจะจำกัดบริการสำหรับแอปที่ไม่ได้ทำงานในพื้นหน้า
-
startService()จะส่งข้อยกเว้นเมื่อแอปพยายามเรียกใช้ขณะที่ห้ามใช้startService() -
หากต้องการเริ่มบริการที่ทำงานอยู่เบื้องหน้า แอปต้องใช้
startForeground()และstartForegroundService() - ตรวจสอบการเปลี่ยนแปลงที่เกิดขึ้นกับ JobScheduler API อย่างละเอียดตามที่ระบุไว้ในหน้าการเปลี่ยนแปลงลักษณะการทำงานของ Android 8.0 (API ระดับ 26)
- Firebase Cloud Messaging ต้องใช้ SDK บริการ Google Play เวอร์ชัน 10.2.1 ขึ้นไป
- เมื่อใช้ Firebase Cloud Messaging การส่งข้อความจะขึ้นอยู่กับขีดจำกัดการดำเนินการในเบื้องหลัง เมื่อจำเป็นต้องทำงานในเบื้องหลังเมื่อได้รับข้อความ เช่น เพื่อทำการซิงค์ข้อมูลในเบื้องหลัง แอปของคุณควรจัดกำหนดการงานโดยใช้ Firebase Job Dispatcher หรือ JobIntentService แทน ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบของ Firebase Cloud Messaging
-
-
การกระจายข้อมูลแบบไม่เจาะจงปลายทาง
-
มีการจำกัดการออกอากาศโดยนัย ดูข้อมูลเกี่ยวกับการจัดการเหตุการณ์ในเบื้องหลังได้ที่เอกสารประกอบสำหรับ
JobSchedulerAPI
-
มีการจำกัดการออกอากาศโดยนัย ดูข้อมูลเกี่ยวกับการจัดการเหตุการณ์ในเบื้องหลังได้ที่เอกสารประกอบสำหรับ
-
ขีดจำกัดการเข้าถึงตำแหน่งในเบื้องหลัง
-
แอปที่ทำงานอยู่ในพื้นหลังมีสิทธิ์เข้าถึงข้อมูลตำแหน่งแบบจำกัด
- ในอุปกรณ์ที่มีบริการ Google Play ให้ใช้ ผู้ให้บริการ Fused Location เพื่อรับการอัปเดตตำแหน่งเป็นระยะๆ
-
แอปที่ทำงานอยู่ในพื้นหลังมีสิทธิ์เข้าถึงข้อมูลตำแหน่งแบบจำกัด
-
ระบบจะจำกัดบริการสำหรับแอปที่ไม่ได้ทำงานในพื้นหน้า
-
ช่องทางการแจ้งเตือน
- คุณควรกำหนด พร็อพเพอร์ตี้การรบกวนของการแจ้งเตือนตามแต่ละช่องทาง
- คุณต้องกำหนดการแจ้งเตือนให้กับช่องทางเพื่อแสดงการแจ้งเตือน
-
แพลตฟอร์มเวอร์ชันนี้รองรับ
NotificationCompat.Builder
-
ความเป็นส่วนตัว
- ANDROID_ID จะกำหนดขอบเขตตามคีย์ App Signing
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 8.0 (API ระดับ 26) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงานสำหรับแพลตฟอร์มเวอร์ชันนั้น
ย้ายข้อมูลจาก Android 8 (API 26) ไปยัง Android 9 (API 28)
-
การจัดการพลังงาน
- ที่เก็บข้อมูลสแตนด์บายแอปนำข้อจำกัดใหม่ๆ ในเบื้องหลังมาใช้โดยอิงตามการมีส่วนร่วมของแอป เช่น งานที่เลื่อนออกไป การปลุก และโควต้าสำหรับข้อความที่มีลำดับความสำคัญสูง
- การปรับปรุงโหมดประหยัดแบตเตอรี่ เพิ่มข้อจำกัดในแอปที่อยู่ในสแตนด์บายแอป
-
สิทธิ์บริการที่ทำงานอยู่เบื้องหน้า
- ต้องขอสิทธิ์ปกติ
FOREGROUND_SERVICE(ไม่ใช่สิทธิ์รันไทม์)
- ต้องขอสิทธิ์ปกติ
-
การเปลี่ยนแปลงด้านความเป็นส่วนตัว
- สิทธิ์เข้าถึงเซ็นเซอร์ที่ทำงานอยู่เบื้องหลังแบบจำกัด
- จำกัดการเข้าถึงบันทึกการโทร ซึ่งตอนนี้อยู่ในกลุ่มสิทธิ์
CALL_LOG - จำกัดการเข้าถึงหมายเลขโทรศัพท์ โดยต้องใช้สิทธิ์
READ_CALL_LOG - จำกัดการเข้าถึงข้อมูล Wi-Fi
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 9.0 (ระดับ API 28) ได้ที่การเปลี่ยนแปลงลักษณะการทำงาน
ย้ายข้อมูลจาก Android 9 (ระดับ API 28) ไปยัง Android 10 (ระดับ API 29)
-
การแจ้งเตือนที่มี Intent เต็มหน้าจอ
-
ต้องขอสิทธิ์ปกติ
USE_FULL_SCREEN_INTENT(ไม่ใช่สิทธิ์รันไทม์)
-
ต้องขอสิทธิ์ปกติ
-
การรองรับอุปกรณ์แบบพับได้และอุปกรณ์หน้าจอขนาดใหญ่
-
ตอนนี้กิจกรรมหลายรายการสามารถอยู่ในสถานะ "กลับมาทำงานอีกครั้ง" พร้อมกันได้ แต่มีเพียงกิจกรรมเดียวเท่านั้นที่โฟกัสอยู่จริงๆ
-
การเปลี่ยนแปลงนี้ส่งผลต่อลักษณะการทำงานของ
onResume()และonPause() -
แนวคิดวงจรใหม่ของ "กลับมาทำงานต่อที่ด้านบนสุด" ซึ่งตรวจพบได้โดยการสมัครรับข้อมูล
onTopResumedActivityChanged()- มีกิจกรรมเดียวเท่านั้นที่สามารถ "กลับมาทำงานต่อในระดับบนสุด" ได้
-
การเปลี่ยนแปลงนี้ส่งผลต่อลักษณะการทำงานของ
-
เมื่อตั้งค่า
resizeableActivityเป็นfalseแอปจะระบุminAspectRatioเพิ่มเติมได้ ซึ่งจะแสดงแอปแบบ Letterbox โดยอัตโนมัติในสัดส่วนภาพที่แคบลง
-
ตอนนี้กิจกรรมหลายรายการสามารถอยู่ในสถานะ "กลับมาทำงานอีกครั้ง" พร้อมกันได้ แต่มีเพียงกิจกรรมเดียวเท่านั้นที่โฟกัสอยู่จริงๆ
-
การเปลี่ยนแปลงด้านความเป็นส่วนตัว
-
พื้นที่เก็บข้อมูลที่กำหนดขอบเขต
- สิทธิ์เข้าถึงที่จัดเก็บข้อมูลภายนอกจะจำกัดไว้เฉพาะไดเรกทอรีเฉพาะแอปและสื่อบางประเภทที่แอปสร้างขึ้นเท่านั้น
-
จำกัดการเข้าถึงตำแหน่งขณะที่แอปทำงานอยู่เบื้องหลัง ซึ่งต้องใช้สิทธิ์
ACCESS_BACKGROUND_LOCATION - จำกัดการเข้าถึงตัวระบุที่รีเซ็ตไม่ได้ เช่น IMEI และหมายเลขซีเรียล
-
จำกัดการเข้าถึงข้อมูลกิจกรรมการเคลื่อนไหวร่างกาย เช่น จำนวนก้าวของผู้ใช้ ซึ่งต้องใช้สิทธิ์
ACTIVITY_RECOGNITION -
จำกัดการเข้าถึง API บางรายการของโทรศัพท์ บลูทูธ และ Wi-Fi โดยต้องใช้สิทธิ์
ACCESS_FINE_LOCATION -
จำกัดการเข้าถึงการตั้งค่า Wi-Fi
- แอปจะไม่สามารถเปิดหรือปิดใช้ Wi-Fi โดยตรงได้อีกต่อไป และจะต้องดำเนินการโดยใช้แผงการตั้งค่า
-
ข้อจำกัดในการเริ่มการเชื่อมต่อกับเครือข่าย Wi-Fi ซึ่งกำหนดให้ใช้
WifiNetworkSpecifierหรือWifiNetworkSuggestion
-
พื้นที่เก็บข้อมูลที่กำหนดขอบเขต
ย้ายข้อมูลจาก Android 10 (ระดับ API 29) ไปยัง Android 11 (ระดับ API 30)
-
ความเป็นส่วนตัว
- การบังคับใช้พื้นที่เก็บข้อมูลที่กำหนดขอบเขต : แอปควรใช้โมเดลพื้นที่เก็บข้อมูลที่กำหนดขอบเขตซึ่งจะบันทึกและเข้าถึงไฟล์เฉพาะแอป สื่อ และไฟล์ประเภทอื่นๆ โดยใช้ตำแหน่งเฉพาะ
- รีเซ็ตสิทธิ์อัตโนมัติ: หากผู้ใช้ไม่ได้โต้ตอบกับแอปเป็นเวลา 2-3 เดือน ระบบจะรีเซ็ตสิทธิ์ที่มีความละเอียดอ่อนของแอปโดยอัตโนมัติ ซึ่งไม่น่าจะส่งผลกระทบต่อแอปส่วนใหญ่ หากแอปของคุณทำงานในเบื้องหลังเป็นหลักโดยไม่มีการโต้ตอบของผู้ใช้ คุณอาจพิจารณาขอให้ผู้ใช้ปิดใช้การรีเซ็ตอัตโนมัติ
- การเข้าถึงตำแหน่งในเบื้องหลัง: แอปต้องขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหน้าและเบื้องหลังแยกกัน การให้สิทธิ์เข้าถึงตำแหน่งในเบื้องหลังทำได้ในการตั้งค่าแอปเท่านั้น ไม่ใช่กล่องโต้ตอบสิทธิ์รันไทม์
-
ระดับการเข้าถึงแพ็กเกจ: เมื่อแอปค้นหารายการแอปและบริการที่ติดตั้งในอุปกรณ์ ระบบจะกรองรายการที่แสดงผล
- หากใช้บริการการอ่านออกเสียงข้อความหรือ การจดจำเสียงพูด คุณจะต้องเพิ่มองค์ประกอบการค้นหาสำหรับบริการลงในไฟล์ Manifest
-
ความปลอดภัย
- ระบบไม่รองรับไฟล์ `resource.arsc` ที่บีบอัดอีกต่อไป
- ตอนนี้ต้องใช้ APK Signature Scheme v2 นักพัฒนาแอปควรลงชื่อด้วย APK Signature Scheme v1 ต่อไปเพื่อเหตุผลด้านความเข้ากันได้แบบย้อนหลัง
- ข้อจำกัดของอินเทอร์เฟซที่ไม่ใช่ SDK เราไม่แนะนำให้ใช้ API ที่ไม่ใช่ SDK สำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 30 เนื่องจากอินเทอร์เฟซที่ไม่ใช่ SDK บางรายการถูกบล็อกแล้วในตอนนี้ ดูรายการอินเทอร์เฟซที่ไม่ใช่ SDK ที่ถูกบล็อกทั้งหมดได้ที่อินเทอร์เฟซที่ไม่ใช่ SDK ซึ่งถูกบล็อกใน Android 11
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นใน Android 11 (API ระดับ 30) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงาน
อัปเดตเป็น API 31 ต่อโดยทำตามวิธีการในส่วนก่อนหน้า
ปรับแอปให้ทันสมัย
ขณะที่คุณอัปเดตระดับ API เป้าหมายสำหรับแอป ลองพิจารณาการนำฟีเจอร์แพลตฟอร์ม ล่าสุดมาใช้เพื่อสร้างความทันสมัยให้แอปและสร้างความพึงพอใจให้กับผู้ใช้
- พิจารณาใช้ CameraX ซึ่งอยู่ในเวอร์ชันเบต้า เพื่อใช้ประโยชน์สูงสุดจากกล้อง
- ใช้คอมโพเนนต์ Jetpack เพื่อช่วยให้คุณทำตามแนวทางปฏิบัติแนะนำ ไม่ต้องเขียนโค้ด Boilerplate และลดความซับซ้อนของงานที่ซับซ้อนเพื่อให้คุณมุ่งเน้นที่โค้ดที่ต้องการได้
- ใช้ Kotlin เพื่อเขียนแอปได้ดีขึ้นและเร็วขึ้นโดยใช้โค้ดน้อยลง
- ตรวจสอบว่าคุณปฏิบัติตามข้อกำหนดและแนวทางปฏิบัติแนะนำด้านความเป็นส่วนตัว
- เพิ่มการรองรับธีมมืดลงในแอป
- เพิ่มการรองรับการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัสลงในแอป
- ย้ายข้อมูลแอปจาก Google Cloud Messaging (GCM) ไปยัง Firebase Cloud Messaging เวอร์ชันล่าสุด
- ใช้ประโยชน์จากการจัดการหน้าต่างขั้นสูง
- รองรับสัดส่วนภาพที่ใหญ่ขึ้น (มากกว่า 16:9) เพื่อใช้ประโยชน์จากความก้าวหน้าล่าสุดในด้านฮาร์ดแวร์ ตรวจสอบว่าแอปปรับขนาดให้เต็มพื้นที่หน้าจอที่พร้อมใช้งาน ประกาศสัดส่วนภาพสูงสุดเป็นทางเลือกสุดท้ายเท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับสัดส่วนภาพสูงสุดได้ที่ประกาศการรองรับหน้าจอที่ถูกจำกัด
- เพิ่มการรองรับหลายหน้าต่างเพื่อช่วยให้แอปเพิ่มประสิทธิภาพการทำงาน และเพื่อจัดการการแสดงผลหลายหน้าจอ
- หากประสบการณ์การใช้งานแอปที่ย่อขนาดลงจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ ให้เพิ่มการรองรับการแสดงภาพซ้อนภาพ
- เพิ่มประสิทธิภาพสำหรับอุปกรณ์ที่มีคัตเอาท์ดิสเพลย์
- อย่าคาดเดาความสูงของแถบสถานะ แต่ให้ใช้
WindowInsetsและView.OnApplyWindowInsetsListenerแทน ดูข้อมูลเพิ่มเติมได้ที่วิดีโอ droidcon NYC 2017 เพื่อดูคำอธิบาย - อย่าคิดไปเองว่าแอปมีหน้าต่างทั้งหมด แต่ให้ยืนยันตำแหน่งโดยใช้
View.getLocationInWindow()ไม่ใช่View.getLocationOnScreen()* เมื่อจัดการกับMotionEventให้ใช้MotionEvent.getX()และMotionEvent.getY()ไม่ใช่MotionEvent.getRawX(),MotionEvent.getRawY()
ตรวจสอบและอัปเดต SDK และคลัง
ตรวจสอบว่าทรัพยากร Dependency ของ SDK ของบุคคลที่สามรองรับ API 31: ผู้ให้บริการ SDK บางรายเผยแพร่ API 31 ในไฟล์ Manifest ส่วนผู้ให้บริการรายอื่นๆ จะต้องมีการตรวจสอบเพิ่มเติม หากคุณใช้ SDK ที่ไม่รองรับ API 31 ให้ความสำคัญกับการทำงานร่วมกับผู้ให้บริการ SDK เพื่อแก้ไขปัญหา
นอกจากนี้ โปรดทราบว่า targetSdkVersion ของแอปหรือเกมอาจจำกัดการเข้าถึงไลบรารีแพลตฟอร์ม Android ส่วนตัว โปรดดูรายละเอียดที่หัวข้อแอป NDK ที่ลิงก์กับไลบรารีแพลตฟอร์ม
นอกจากนี้ คุณควรตรวจสอบข้อจำกัดที่อาจมีอยู่ในไลบรารีการสนับสนุนของ Android เวอร์ชันที่คุณใช้อยู่ด้วย คุณต้องตรวจสอบความเข้ากันได้ระหว่างเวอร์ชันหลักของไลบรารีการสนับสนุนของ Android กับ compileSdkVersion ของแอปเช่นเคย
เราขอแนะนำให้คุณเลือก targetSdkVersion ที่มีค่าต่ำกว่าหรือเท่ากับเวอร์ชันหลักของ Support Library เราขอแนะนำให้คุณอัปเดตเป็น
Support Library ที่เข้ากันได้ล่าสุดเพื่อใช้ประโยชน์จากฟีเจอร์
ความเข้ากันได้และการแก้ไขข้อบกพร่องล่าสุด
ทดสอบแอป
หลังจากอัปเดตระดับ API และฟีเจอร์ของแอปตามความเหมาะสมแล้ว คุณควรทดสอบ Use Case หลักบางอย่าง คำแนะนำต่อไปนี้เป็นเพียงตัวอย่างบางส่วนเท่านั้น แต่มีจุดประสงค์เพื่อเป็นแนวทางในกระบวนการทดสอบ เราขอแนะนำให้คุณทดสอบรายการต่อไปนี้
- แอปของคุณคอมไพล์เป็น API 29 โดยไม่มีข้อผิดพลาดหรือคำเตือน
แอปของคุณมีกลยุทธ์สำหรับกรณีที่ผู้ใช้ปฏิเสธคำขอสิทธิ์ และแจ้งให้ผู้ใช้ให้สิทธิ์ โดยทำดังนี้
- ไปที่หน้าข้อมูลแอปของแอปและปิดใช้สิทธิ์แต่ละสิทธิ์
- เปิดแอปและตรวจสอบว่าไม่มีข้อขัดข้อง
- ทำการทดสอบกรณีการใช้งานหลักและตรวจสอบว่ามีการแจ้งขอสิทธิ์ที่จำเป็นอีกครั้ง
จัดการ Doze ให้ได้ผลลัพธ์ที่คาดหวังและไม่มีข้อผิดพลาด
- ใช้ adb เพื่อให้อุปกรณ์ทดสอบเข้าสู่โหมด Doze ขณะที่แอปทำงานอยู่
- ทดสอบกรณีการใช้งานทั้งหมดที่กระตุ้นข้อความของ Firebase Cloud Messaging
- ทดสอบกรณีการใช้งานทั้งหมดที่ใช้ Alarms หรือ Google ค้นงาน
- ขจัดการพึ่งพาบริการในพื้นหลัง
- ตั้งค่าแอปเป็นสแตนด์บายแอป
- ทดสอบกรณีการใช้งานทั้งหมดที่กระตุ้นข้อความของ Firebase Cloud Messaging
- ทดสอบกรณีการใช้งานทั้งหมดที่ใช้ Alarms
- ใช้ adb เพื่อให้อุปกรณ์ทดสอบเข้าสู่โหมด Doze ขณะที่แอปทำงานอยู่
จัดการรูปภาพ/วิดีโอที่เพิ่งถ่าย/อัดใหม่
- ตรวจสอบว่าแอปจัดการการออกอากาศ
ACTION_NEW_PICTUREและACTION_NEW_VIDEOที่ถูกจำกัดอย่างถูกต้อง (นั่นคือ ย้ายไปยังงาน JobScheduler) - ตรวจสอบว่า Use Case ที่สำคัญซึ่งขึ้นอยู่กับเหตุการณ์เหล่านี้ยังคงทำงานอยู่
- ตรวจสอบว่าแอปจัดการการออกอากาศ
จัดการการแชร์ไฟล์ไปยังแอปอื่นๆ - ทดสอบ Use Case ที่แชร์ข้อมูลไฟล์กับแอปอื่นๆ (แม้แต่แอปอื่นของนักพัฒนาแอปรายเดียวกัน)
- ทดสอบว่าเนื้อหาปรากฏในแอปอื่นและไม่ทำให้แอปขัดข้อง
ข้อมูลเพิ่มเติม
เลือกรับอีเมลใน Google Play Console เพื่อให้เราส่งข้อมูลอัปเดตและประกาศสำคัญจาก Android และ Google Play รวมถึงจดหมายข่าวรายเดือนสำหรับพาร์ทเนอร์ให้คุณได้