APK เมื่อคุณอัปโหลด APK ไฟล์ต้องเป็นไปตามระดับ API เป้าหมายของ Google Play ข้อกำหนด
ตั้งแต่วันที่ 31 สิงหาคม 2024 เป็นต้นไปจะมีการดำเนินการต่อไปนี้
- แอปใหม่และอัปเดตแอปต้องกำหนดเป้าหมายเป็น Android 14 (API ระดับ 34) ขึ้นไปเป็น ที่ส่งไปยัง Google Play ยกเว้นแอป Wear OS และ Android TV ซึ่งต้อง กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป
- แอปที่มีอยู่ต้องกำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไปจึงจะใช้งานต่อไปได้ พร้อมใช้งานสำหรับผู้ใช้ใหม่บนอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android เวอร์ชันสูงกว่า ระดับ API เป้าหมาย แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) หรือต่ำกว่า (Android 10 (API ระดับ 29) หรือต่ำกว่าสำหรับ Wear OS และ Android 11 (API ระดับ 30) หรือต่ำกว่า สำหรับ Android TV) จะพร้อมใช้งานบนอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android ที่ เท่ากับหรือต่ำกว่าระดับ API เป้าหมายของแอป
คุณจะขอขยายเวลาได้จนถึงวันที่ 1 พฤศจิกายน 2024 หากต้องการข้อมูลเพิ่มเติม ก็ได้เวลาอัปเดตแอปแล้ว คุณจะเข้าถึงแบบฟอร์มขยายเวลาของแอปได้ใน Play Console ภายในปีนี้
ข้อยกเว้นสำหรับข้อกำหนดเหล่านี้ ได้แก่
- แอปส่วนตัวแบบถาวรที่จำกัดไว้สำหรับผู้ใช้ใน เป็นองค์กรและมีไว้เพื่อการเผยแพร่ภายในเท่านั้น
- แอปที่กำหนดเป้าหมายเป็น Android Automotive OS หรือแพ็กเกจที่มีการกำหนดเป้าหมาย APK Android Automotive OS
เหตุใดจึงควรกำหนดเป้าหมาย SDK ที่ใหม่กว่า
Android เวอร์ชันใหม่ทุกเวอร์ชันมีการเปลี่ยนแปลงที่ช่วยเพิ่มความปลอดภัยและประสิทธิภาพ
และปรับปรุงประสบการณ์ของผู้ใช้ Android การเปลี่ยนแปลงเหล่านี้บางส่วนเท่านั้น
ใช้กับแอปที่ประกาศการรองรับอย่างชัดแจ้งผ่านtargetSdkVersion
ไฟล์ Manifest (หรือที่รู้จักกันในชื่อระดับ API เป้าหมาย)
การกำหนดค่าแอปเพื่อกำหนดเป้าหมายระดับ API ล่าสุดจะทำให้ผู้ใช้ได้รับประโยชน์ จากการปรับปรุงเหล่านี้ ในขณะที่แอปของคุณยังคงสามารถทำงานบน Android เวอร์ชันเก่า นอกจากนี้ การกำหนดเป้าหมายระดับ API ล่าสุดยังช่วยให้แอปของคุณใช้ประโยชน์จาก ฟีเจอร์ล่าสุดของแพลตฟอร์มเพื่อสร้างความพึงพอใจให้กับผู้ใช้ นอกจากนี้ ณ Android 10 (API ระดับ 29) ผู้ใช้จะเห็นคําเตือนเมื่อเปิดแอปสําหรับ ครั้งแรกหากแอปกำหนดเป้าหมายเป็น Android 5.1 (API ระดับ 22) หรือต่ำกว่า
เอกสารนี้ไฮไลต์ประเด็นสำคัญที่คุณจำเป็นต้องทราบในการอัปเดต ระดับ API เป้าหมายให้เป็นไปตามข้อกำหนดของ Google Play ดูวิธีการ ในส่วนต่อไปนี้ ขึ้นอยู่กับเวอร์ชันที่จะย้ายข้อมูลไป
ย้ายข้อมูลจาก Android 12 ขึ้นไป (API ระดับ 31) ไปยังเวอร์ชันล่าสุด
หากต้องการอัปเดตแอปให้กําหนดเป้าหมายเป็น Android เวอร์ชันใหม่กว่านี้ ให้ทําตาม รายการการเปลี่ยนแปลงลักษณะการทำงานที่เกี่ยวข้อง
ย้ายข้อมูลจาก 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 ที่ใช้ตัวกรองความตั้งใจ คุณต้องทำดังนี้ ประกาศแอตทริบิวต์ android:exported อย่างชัดแจ้งสำหรับแอตทริบิวต์เหล่านี้ คอมโพเนนต์
- การพักใช้งาน: แอปอาจถูกเข้าสู่โหมดไฮเบอร์เนตหากไม่ได้ใช้งาน ในช่วงเวลาหนึ่ง ในโหมดไฮเบอร์เนต สิทธิ์รันไทม์ของแอปและ ระบบจะรีเซ็ตแคช และคุณจะไม่สามารถเรียกใช้งานหรือการแจ้งเตือนได้ คุณสามารถตรวจสอบ สถานะการพักใช้งาน
- การเปลี่ยนแปลงของ Intent ที่รอดำเนินการ: คุณต้องระบุการเปลี่ยนแปลงแต่ละรายการ ออบเจ็กต์ PendingIntent ที่แอปของคุณสร้างขึ้น
ประสบการณ์ของผู้ใช้
- การแจ้งเตือนที่กำหนดเอง: การแจ้งเตือนพร้อมมุมมองเนื้อหาที่กำหนดเองจะไม่มี
ใช้พื้นที่การแจ้งเตือนแบบเต็มนานขึ้น ระบบจะใช้
เทมเพลตมาตรฐาน เทมเพลตนี้จะตรวจสอบว่าการแจ้งเตือนที่กำหนดเองมี
ตกแต่งเหมือนกับการแจ้งเตือนอื่นๆ ในทุกรัฐ ลักษณะการทำงานนี้
เกือบเหมือนกันทุกประการกับลักษณะการทำงานของ
Notification.DecoratedCustomViewStyle
- การเปลี่ยนแปลงการยืนยัน Android App Link: เมื่อใช้ Android App Link ตรวจสอบว่าตัวกรอง Intent มี "BROWSABLE" หรือไม่ และรองรับรูปแบบ HTTPS
ประสิทธิภาพ
ข้อจำกัดในการเปิดบริการที่ทำงานอยู่เบื้องหน้า: หากต้องการกำหนดเป้าหมายเป็น Android 12 หรือ แอปจะไม่สามารถเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะที่อยู่ใน ยกเว้นกรณีพิเศษบางกรณี หากแอปพยายามจะเริ่มต้น บริการที่ทำงานอยู่เบื้องหน้าขณะทำงานในเบื้องหลังโดยมีข้อยกเว้น (ยกเว้นกรณีพิเศษบางกรณี)
ลองใช้ WorkManager เพื่อกำหนดเวลาและเริ่มงานด่วนไปพร้อมๆ กับ ที่แอปของคุณทำงานอยู่เบื้องหลัง ในการดำเนินการที่ต้องคำนึงถึงเวลาเป็นสำคัญ คำขอของผู้ใช้ เริ่มต้นบริการที่ทำงานอยู่เบื้องหน้าภายในการปลุกในเวลาที่แน่นอน
การจำกัดแทรมโพลีนการแจ้งเตือน: เมื่อผู้ใช้แตะการแจ้งเตือน แอปบางแอปตอบสนองโดยการเปิดใช้งานคอมโพเนนต์แอปที่เริ่มกิจกรรม ที่ผู้ใช้เห็นและโต้ตอบด้วย คอมโพเนนต์ของแอปนี้เรียกว่า แทรมโพลีนการแจ้งเตือน
แอปต้องไม่เริ่มกิจกรรมจากบริการหรือเครื่องรับสัญญาณออกอากาศที่ ใช้เป็นแทรมโพลีนการแจ้งเตือน หลังจากผู้ใช้แตะการแจ้งเตือนหรือ ภายในการแจ้งเตือน แอปของคุณไม่สามารถเรียกใช้
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 เวอร์ชัน 10.2.1 SDK บริการ Google Play ขึ้นไป
- เมื่อใช้ Firebase Cloud Messaging การนำส่งข้อความจะขึ้นอยู่กับขีดจำกัดการดำเนินการในเบื้องหลัง เมื่อจำเป็นต้องทำงานเบื้องหลังหลังจากได้รับข้อความ เช่น ในการซิงค์ข้อมูลเบื้องหลัง แอปควรกำหนดเวลางานโดยใช้ Firebase Job Dispatcher หรือ JobIntentService แทน สำหรับข้อมูลเพิ่มเติม โปรดดู เอกสารเกี่ยวกับ Firebase Cloud Messaging
-
ตอนนี้
-
การออกอากาศโดยนัย
-
มีการจำกัดการออกอากาศโดยนัย สำหรับข้อมูลเกี่ยวกับการจัดการเหตุการณ์ในเบื้องหลัง โปรดดูเอกสารสำหรับ
JobScheduler
API
-
มีการจำกัดการออกอากาศโดยนัย สำหรับข้อมูลเกี่ยวกับการจัดการเหตุการณ์ในเบื้องหลัง โปรดดูเอกสารสำหรับ
-
ขีดจำกัดของตำแหน่งในเบื้องหลัง
-
แอปที่ทำงานอยู่ในพื้นหลังมีสิทธิ์เข้าถึงข้อมูลตำแหน่งแบบจำกัด
- ในอุปกรณ์ที่ใช้บริการ Google Play ให้ใช้ ผู้ให้บริการ Fused Location เพื่อรับตำแหน่งเป็นครั้งคราว อัปเดต
-
แอปที่ทำงานอยู่ในพื้นหลังมีสิทธิ์เข้าถึงข้อมูลตำแหน่งแบบจำกัด
-
ระบบจะจำกัดบริการสำหรับแอปที่ไม่ได้ทำงานในพื้นหน้า
-
ช่องทางการแจ้งเตือน
- คุณควรให้คำจำกัดความ พร็อพเพอร์ตี้การขัดขวางการแจ้งเตือนแบบต่อช่องทาง
- คุณต้องกำหนดการแจ้งเตือนให้กับช่องทางเพื่อแสดงการแจ้งเตือน
-
แพลตฟอร์มเวอร์ชันนี้รองรับ
NotificationCompat.Builder
-
ความเป็นส่วนตัว
- ANDROID_ID จำกัดขอบเขตต่อหนึ่งคีย์การลงนามแอป
สำหรับรายการการเปลี่ยนแปลงที่นำมาใช้ใน 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
ซึ่งจะทำแถบดำด้านบน-ล่างของภาพในแอปโดยอัตโนมัติในสัดส่วนภาพที่แคบลง
-
ตอนนี้กิจกรรมหลายรายการอยู่ใน "กลับมาทำงานอีกครั้ง" ได้แล้ว ในเวลาเดียวกัน แต่มีเพียงรายการเดียวเท่านั้นที่สนใจ
-
การเปลี่ยนแปลงด้านความเป็นส่วนตัว
-
พื้นที่เก็บข้อมูลที่กำหนดขอบเขต
- การเข้าถึงที่จัดเก็บข้อมูลภายนอกจะจำกัดไว้เฉพาะแอปที่เจาะจงเท่านั้น และสื่อบางประเภทที่แอปมี สร้าง แล้ว
-
จำกัดการเข้าถึงตำแหน่งขณะที่แอปอยู่ในเบื้องหลัง
ต้องมี
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 เดือนแล้ว ระบบจะรีเซ็ตสิทธิ์ที่มีความละเอียดอ่อนของแอปโดยอัตโนมัติ ซึ่งจะไม่ส่งผลต่อแอปส่วนใหญ่ หากแอปทำงานอยู่เบื้องหลังเป็นหลักโดยไม่มีการโต้ตอบของผู้ใช้ คุณอาจ โปรดพิจารณาขอให้ผู้ใช้ปิด รีเซ็ตอัตโนมัติ
- การเข้าถึงตําแหน่งในเบื้องหลัง: แอปต้อง ขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหน้าและเบื้องหลังแยกกัน คุณให้สิทธิ์เข้าถึงตําแหน่งในเบื้องหลังได้เฉพาะในการตั้งค่าแอป ไม่ใช่กล่องโต้ตอบสิทธิ์รันไทม์
-
ระดับการเข้าถึงแพ็กเกจ: เมื่อแอปค้นหา
สำหรับรายการแอปและบริการที่ติดตั้งไว้ในอุปกรณ์ ระบบจะกรองรายการที่ส่งคืน
- หากคุณใช้การอ่านออกเสียงข้อความ หรือ บริการ Speech Recognition คุณจะต้องเพิ่มองค์ประกอบการค้นหาสำหรับบริการในไฟล์ Manifest
-
ความปลอดภัย
- ไฟล์ "resource.arsc" ที่บีบอัด ไม่ได้รับการสนับสนุนอีกต่อไป
- ตอนนี้ต้องระบุ APK Signature Scheme v2 นักพัฒนาแอปควรลงนามด้วย APK Signature Scheme v1 ด้วยเหตุผลด้านความเข้ากันได้แบบย้อนหลัง
- การจำกัดอินเทอร์เฟซที่ไม่ใช่ SDK เราไม่แนะนำให้ใช้อินเทอร์เฟซที่ไม่ใช่ SDK สำหรับแอปที่กำหนดเป้าหมายเป็น API ระดับ 30 เนื่องจากอินเทอร์เฟซที่ไม่ใช่ SDK เหล่านี้บางส่วนถูกบล็อกแล้ว โปรดดูอินเทอร์เฟซที่ไม่ใช่ SDK ที่ ถูกบล็อกใน Android 11 สำหรับรายการอินเทอร์เฟซที่ไม่ใช่ SDK ทั้งหมดที่ถูกบล็อก
ดูรายการการเปลี่ยนแปลงที่นำมาใช้ใน Android 11 (API ระดับ 30) โดยละเอียดได้ที่ หน้าการเปลี่ยนแปลงลักษณะการทำงาน
อัปเดตเป็น API 31 ต่อไปโดยทำตามวิธีการในส่วนก่อนหน้า
ปรับแอปให้ทันสมัย
ขณะที่คุณอัปเดตระดับ API เป้าหมายสำหรับแอป ลองพิจารณาการนำฟีเจอร์แพลตฟอร์ม ล่าสุดมาใช้เพื่อสร้างความทันสมัยให้แอปและสร้างความพึงพอใจให้กับผู้ใช้
- ลองใช้ cameraX ซึ่งเป็นรุ่นเบต้า เพื่อให้ได้ประโยชน์สูงสุดจากการใช้ กล้อง
- ใช้คอมโพเนนต์ Jetpack เพื่อช่วยให้คุณทำตามแนวทางปฏิบัติแนะนำได้ โดยที่คุณไม่ต้องใช้ ตั้งแต่การเขียนโค้ด Boilerplate และลดความซับซ้อนของงานที่ซับซ้อนเพื่อให้คุณ โค้ดที่คุณสนใจ
- ใช้ Kotlin เพื่อเขียนแอปได้ดีขึ้น เร็วขึ้น และเขียนโค้ดน้อยลง
- ตรวจสอบว่าคุณปฏิบัติตามข้อกำหนดด้านความเป็นส่วนตัวและแนวทางปฏิบัติแนะนำ
- เพิ่มการรองรับธีมมืดในแอป
- เพิ่มการสนับสนุนการนำทางด้วยท่าทางสัมผัสในแอป
- ย้ายข้อมูลแอปจากการรับส่งข้อความในระบบคลาวด์ของ Google (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 บางรายการ ผู้ให้บริการเผยแพร่ไฟล์ดังกล่าวในไฟล์ Manifest ผู้อื่นจะต้องใช้ การสอบสวน หากใช้ SDK ที่ไม่รองรับ API 31 ให้กำหนดลำดับความสำคัญเป็นสำคัญ ทำงานร่วมกับผู้ให้บริการ SDK เพื่อแก้ไขปัญหา
นอกจากนี้ โปรดทราบว่าtargetSdkVersion
ของแอปหรือเกมอาจจำกัด
เข้าถึงไลบรารีแพลตฟอร์ม Android ส่วนตัว ดูการลิงก์แอป NDK กับแพลตฟอร์ม
ไลบรารีเพื่อดูรายละเอียด
นอกจากนี้ คุณควรตรวจสอบข้อจำกัดใดๆ ที่อาจมีอยู่ในเวอร์ชันของ
ไลบรารีการสนับสนุนของ Android ที่คุณใช้อยู่ และเช่นเคย คุณต้องตรวจสอบว่า
ความเข้ากันได้ระหว่างไลบรารีการสนับสนุนของ Android เวอร์ชันหลักกับ
compileSdkVersion
ของแอป
เราขอแนะนำให้คุณเลือก targetSdkVersion
ที่น้อยกว่าหรือเท่ากับ
สนับสนุนเวอร์ชันหลักของไลบรารี เราขอแนะนำให้คุณอัปเดตเป็น
Support Library ที่เข้ากันได้ล่าสุดเพื่อใช้ประโยชน์จากฟีเจอร์
ความเข้ากันได้และการแก้ไขข้อบกพร่องล่าสุด
ทดสอบแอป
หลังจากอัปเดตระดับ API และฟีเจอร์ของแอปตามความเหมาะสมแล้ว คุณควร ทดสอบกรณีการใช้งานหลักๆ คําแนะนําต่อไปนี้เป็นเพียงตัวอย่างบางส่วนเท่านั้น แต่มีจุดมุ่งหมาย เพื่อช่วยแนะนำขั้นตอนการทดสอบ เราขอแนะนำให้คุณทดสอบรายการต่อไปนี้
- ทราบว่าแอปคอมไพล์ไปยัง 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 ที่สำคัญซึ่งขึ้นอยู่กับเหตุการณ์เหล่านี้ยังคง ที่ทำงาน
- ตรวจสอบว่าแอปของคุณจัดการกับแอปที่ถูกจำกัด
การออกอากาศ
จัดการการแชร์ไฟล์ไปยังแอปอื่นๆ - ทดสอบกรณีการใช้งานทั้งหมดที่แชร์ข้อมูลไฟล์กับแอปอื่นๆ (แม้แต่ แอปอื่นจากนักพัฒนาซอฟต์แวร์คนเดียวกัน)
- ทดสอบว่าเนื้อหาแสดงในแอปอื่นและไม่ได้ทริกเกอร์ ขัดข้อง
ข้อมูลเพิ่มเติม
เลือกรับอีเมลใน Google Play Console เพื่อให้เราสามารถ ส่งการอัปเดตและประกาศสำคัญๆ จาก Android และ Google Play ให้คุณ รวมถึงจดหมายข่าวรายเดือนของพาร์ทเนอร์