APK ที่คุณจะอัปโหลดต้องตรงตามข้อกำหนดของระดับ API เป้าหมายของ Google Play
ตั้งแต่วันที่ 31 สิงหาคม 2025 เป็นต้นไปจะมีการดำเนินการต่อไปนี้
- แอปใหม่และการอัปเดตแอปต้องกำหนดเป้าหมายเป็น Android 15 (API ระดับ 35) ขึ้นไปเพื่อส่งไปยัง Google Play ยกเว้นแอป Wear OS, Android Automotive OS และ Android TV ซึ่งต้องกำหนดเป้าหมายเป็น Android 14 (API ระดับ 34) ขึ้นไป
- แอปที่มีอยู่ต้องกำหนดเป้าหมายเป็น Android 14 (API ระดับ 34) ขึ้นไปเพื่อให้พร้อมใช้งานสำหรับผู้ใช้ใหม่ซึ่งมีอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android เวอร์ชันใหม่กว่าระดับ API เป้าหมายของแอป แอปที่กำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) หรือต่ำกว่า รวมถึง Android 12 (API ระดับ 31) หรือต่ำกว่าสำหรับ Wear OS และ Android TV จะพร้อมใช้งานเฉพาะในอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android ที่มีเวอร์ชันเดียวกันหรือต่ำกว่าระดับ API เป้าหมายของแอปเท่านั้น
คุณจะขอขยายเวลาได้จนถึงวันที่ 1 พฤศจิกายน 2025 หากต้องการเวลาเพิ่มเติมในการอัปเดตแอป และจะเข้าถึงแบบฟอร์มขอขยายเวลาของแอปใน Play Console ได้ภายในปีนี้
ข้อยกเว้นสำหรับข้อกำหนดเหล่านี้ ได้แก่
- แอปส่วนตัวแบบถาวรที่จำกัดไว้สำหรับผู้ใช้ในองค์กรหนึ่งโดยเฉพาะและมีไว้เพื่อการเผยแพร่ภายในเท่านั้น
เหตุผลที่ควรกำหนดเป้าหมาย 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 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 อย่างชัดเจนสำหรับคอมโพเนนต์เหล่านี้
- ไฮเบอร์เนต: ระบบอาจเปลี่ยนแอปเป็นโหมดไฮเบอร์เนตหากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง ในโหมดไฮเบอร์เนต ระบบจะรีเซ็ตสิทธิ์รันไทม์และแคชของแอป และคุณจะเรียกใช้ งานหรือการแจ้งเตือนไม่ได้ คุณสามารถตรวจสอบสถานะการหยุดทำงานของแอปได้
- ความสามารถในการเปลี่ยนแปลงได้ของ PendingIntent: คุณต้องระบุความสามารถในการเปลี่ยนแปลงได้ของออบเจ็กต์ PendingIntent แต่ละรายการที่แอปของคุณสร้าง
ประสบการณ์ของผู้ใช้
- การแจ้งเตือนที่กำหนดเอง: การแจ้งเตือนที่มีมุมมองเนื้อหาที่กำหนดเองจะไม่ใช้พื้นที่การแจ้งเตือนทั้งหมดอีกต่อไป แต่ระบบจะใช้เทมเพลตมาตรฐานแทน เทมเพลตนี้ช่วยให้มั่นใจได้ว่าการแจ้งเตือนที่กำหนดเองจะมี
การตกแต่งเหมือนกับการแจ้งเตือนอื่นๆ ในทุกสถานะ ลักษณะการทำงานนี้
เกือบจะเหมือนกับลักษณะการทำงานของ
Notification.DecoratedCustomViewStyle
- การเปลี่ยนแปลงการยืนยัน Android App Link: เมื่อใช้การยืนยัน Android App Link โปรดตรวจสอบว่าตัวกรอง Intent มีหมวดหมู่ BROWSABLE และรองรับรูปแบบ HTTPS
ประสิทธิภาพ
ข้อจำกัดในการเปิดบริการที่ทำงานอยู่เบื้องหน้า: หากต้องการกำหนดเป้าหมายเป็น Android 12 ขึ้นไป แอปของคุณจะเริ่มบริการที่ทำงานอยู่เบื้องหน้าขณะทำงานในเบื้องหลังไม่ได้ ยกเว้นในบางกรณีพิเศษ หากแอปพยายามเริ่มต้น บริการที่ทำงานอยู่เบื้องหน้าขณะทำงานในเบื้องหลัง ระบบจะยกเว้น (ยกเว้นกรณีพิเศษบางกรณี)
ลองใช้ WorkManager เพื่อกำหนดเวลาและเริ่มงานเร่งด่วนขณะที่แอปทำงานในเบื้องหลัง หากต้องการดำเนินการที่ต้องทำให้เสร็จภายในเวลาที่กำหนดซึ่งผู้ใช้ขอ ให้เริ่มบริการที่ทำงานอยู่เบื้องหน้าภายในเวลาที่แน่นอนของการปลุก
ข้อจํากัดของ Notification Trampoline: เมื่อผู้ใช้แตะการแจ้งเตือน แอปบางแอปจะตอบสนองด้วยการเปิดใช้คอมโพเนนต์ของแอปที่เริ่มกิจกรรม ซึ่งผู้ใช้เห็นและโต้ตอบด้วย คอมโพเนนต์ของแอปนี้เรียกว่า การเปลี่ยนเส้นทางของข้อความแจ้ง
แอปต้องไม่เริ่มกิจกรรมจากบริการหรือตัวรับสัญญาณออกอากาศที่ ใช้เป็นตัวกระตุ้นการแจ้งเตือน หลังจากที่ผู้ใช้แตะการแจ้งเตือนหรือปุ่มการทำงานภายใน การแจ้งเตือนแล้ว แอปของคุณจะเรียกใช้
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 ที่มีลำดับความสำคัญปกติ
-
การเปลี่ยนแปลงสิทธิ์
- ระบบจะจำกัดการเข้าถึงไดเรกทอรีส่วนตัวของแอป
-
การเปิดเผย
file://
URI ภายนอกแอปจะทําให้เกิด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 ให้ใช้ ผู้ให้บริการตำแหน่งแบบรวมเพื่อรับการอัปเดตตำแหน่งเป็นระยะๆ
-
แอปที่ทำงานอยู่ในพื้นหลังมีสิทธิ์เข้าถึงข้อมูลตำแหน่งแบบจำกัด
-
ระบบจะจำกัดบริการสำหรับแอปที่ไม่ได้ทำงานในพื้นหน้า
-
ช่องการแจ้งเตือน
- คุณควรกำหนด พร็อพเพอร์ตี้การขัดจังหวะการแจ้งเตือนตามช่องทาง
- คุณต้องกำหนดการแจ้งเตือนให้กับช่องทางเพื่อแสดงการแจ้งเตือน
-
แพลตฟอร์มเวอร์ชันนี้รองรับ
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
เพิ่มเติมได้ ซึ่งจะใส่ขอบดำด้านข้างของแอปโดยอัตโนมัติในสัดส่วนภาพที่แคบกว่า
-
ตอนนี้กิจกรรมหลายอย่างสามารถอยู่ในสถานะ "กลับมาทำงานต่อ" ได้พร้อมกัน แต่จะมีเพียงกิจกรรมเดียวเท่านั้นที่โฟกัสอยู่
-
การเปลี่ยนแปลงด้านความเป็นส่วนตัว
-
พื้นที่เก็บข้อมูลที่จำกัดขอบเขต
- การเข้าถึงพื้นที่เก็บข้อมูลภายนอกจะจำกัดไว้เฉพาะไดเรกทอรีเฉพาะแอป และสื่อบางประเภทที่แอปสร้างขึ้น เท่านั้น
-
จำกัดการเข้าถึงตำแหน่งขณะที่แอปทำงานในเบื้องหลัง
โดยต้องมีสิทธิ์
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 ระดับ 30 ใช้อินเทอร์เฟซที่ไม่ใช่ SDK เนื่องจากตอนนี้ระบบได้บล็อกอินเทอร์เฟซที่ไม่ใช่ SDK บางรายการแล้ว ดูรายการอินเทอร์เฟซที่ไม่ได้อยู่ใน SDK ที่ถูกบล็อกทั้งหมดได้ที่อินเทอร์เฟซที่ไม่ได้อยู่ใน SDK ที่ ถูกบล็อกใน Android 11 แล้ว
ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 11 (API ระดับ 30) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงาน
อัปเดตเป็น API 31 ต่อไปโดยทำตามวิธีการในส่วนก่อนหน้า
ปรับแอปให้ทันสมัย
ขณะที่คุณอัปเดตระดับ API เป้าหมายสำหรับแอป ลองพิจารณาการนำฟีเจอร์แพลตฟอร์ม ล่าสุดมาใช้เพื่อสร้างความทันสมัยให้แอปและสร้างความพึงพอใจให้กับผู้ใช้
- ลองใช้ CameraX ซึ่งอยู่ในเวอร์ชันเบต้าเพื่อใช้กล้องให้เกิดประโยชน์สูงสุด
- ใช้คอมโพเนนต์ Jetpack เพื่อช่วยให้คุณทำตามแนวทางปฏิบัติแนะนำ โดยไม่ต้องเขียนโค้ดบอยเลอร์เพลต และลดความซับซ้อนของงานที่ซับซ้อน เพื่อให้คุณมุ่งเน้นไปที่โค้ดที่คุณสนใจได้
- ใช้ 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 และคลัง
ตรวจสอบว่าการอ้างอิง SDK ของบุคคลที่สามรองรับ API 31: ผู้ให้บริการ SDK บางรายเผยแพร่ในไฟล์ Manifest ของตน ส่วนรายอื่นๆ จะต้องมีการตรวจสอบเพิ่มเติม หากคุณใช้ SDK ที่ไม่รองรับ API 31 ให้จัดลำดับความสำคัญ ในการทำงานร่วมกับผู้ให้บริการ SDK เพื่อแก้ไขปัญหา
นอกจากนี้ โปรดทราบว่า targetSdkVersion
ของแอปหรือเกมอาจจำกัด
การเข้าถึงไลบรารีแพลตฟอร์ม Android ส่วนตัว โปรดดูรายละเอียดที่การลิงก์แอป NDK กับไลบรารีแพลตฟอร์ม
นอกจากนี้ คุณควรตรวจสอบข้อจำกัดที่อาจมีอยู่ในเวอร์ชันของ
Android Support Library ที่คุณใช้ด้วย คุณต้องตรวจสอบว่า
เวอร์ชันหลักของ Android Support Library และcompileSdkVersion
ของแอป
เข้ากันได้
เราขอแนะนำให้คุณเลือกเวอร์ชันที่targetSdkVersion
ต่ำกว่าหรือเท่ากับ
เวอร์ชันหลักของ Support Library เราขอแนะนำให้คุณอัปเดตเป็น
Support Library ที่เข้ากันได้ล่าสุดเพื่อใช้ประโยชน์จากฟีเจอร์
ความเข้ากันได้และการแก้ไขข้อบกพร่องล่าสุด
ทดสอบแอป
หลังจากอัปเดตระดับ API และฟีเจอร์ของแอปตามความเหมาะสมแล้ว คุณควร ทดสอบ Use Case หลักบางอย่าง คำแนะนำต่อไปนี้เป็นเพียงส่วนหนึ่งเท่านั้น แต่มีจุดมุ่งหมาย เพื่อเป็นแนวทางในกระบวนการทดสอบ เราขอแนะนำให้คุณทดสอบรายการต่อไปนี้
- แอปของคุณคอมไพล์เป็น API 29 โดยไม่มีข้อผิดพลาดหรือคำเตือน
แอปของคุณมีกลยุทธ์สำหรับกรณีที่ผู้ใช้ปฏิเสธคำขอสิทธิ์ และแจ้งให้ผู้ใช้ให้สิทธิ์ โดยทำดังนี้
- ไปที่หน้าข้อมูลแอปของแอปและปิดใช้สิทธิ์แต่ละสิทธิ์
- เปิดแอปและตรวจสอบว่าไม่มีข้อขัดข้อง
- ทำการทดสอบกรณีการใช้งานหลักและตรวจสอบว่าระบบแจ้งให้ขอสิทธิ์ที่จำเป็นอีกครั้ง
จัดการ Doze ให้ได้ผลลัพธ์ที่คาดหวังและไม่มีข้อผิดพลาด
- ใช้ adb เพื่อนำอุปกรณ์ทดสอบเข้าสู่โหมดพักขณะที่แอปทำงานอยู่
- ทดสอบกรณีการใช้งานทั้งหมดที่กระตุ้นข้อความของ Firebase Cloud Messaging
- ทดสอบกรณีการใช้งานทั้งหมดที่ใช้ Alarms หรือ Google ค้นงาน
- ขจัดการพึ่งพาบริการในพื้นหลัง
- ตั้งค่าแอปให้อยู่ในโหมดสแตนด์บายของแอป
- ทดสอบกรณีการใช้งานทั้งหมดที่กระตุ้นข้อความของ Firebase Cloud Messaging
- ทดสอบกรณีการใช้งานทั้งหมดที่ใช้ Alarms
- ใช้ adb เพื่อนำอุปกรณ์ทดสอบเข้าสู่โหมดพักขณะที่แอปทำงานอยู่
จัดการรูปภาพ/วิดีโอที่เพิ่งถ่าย/อัดใหม่
- ตรวจสอบว่าแอปของคุณจัดการการออกอากาศที่ถูกจำกัด
ACTION_NEW_PICTURE
และACTION_NEW_VIDEO
อย่างถูกต้อง (กล่าวคือ ย้ายไปยังงาน JobScheduler) - ตรวจสอบว่า Use Case ที่สําคัญซึ่งขึ้นอยู่กับเหตุการณ์เหล่านี้ยังคงทํางานได้
- ตรวจสอบว่าแอปของคุณจัดการการออกอากาศที่ถูกจำกัด
จัดการการแชร์ไฟล์ไปยังแอปอื่นๆ - ทดสอบ Use Case ที่แชร์ข้อมูลไฟล์กับแอปอื่นๆ (แม้จะเป็นแอปอื่นจากนักพัฒนาซอฟต์แวร์รายเดียวกัน)
- ทดสอบว่าเนื้อหาปรากฏในแอปอื่นและไม่ทำให้เกิดข้อขัดข้อง
ข้อมูลเพิ่มเติม
เลือกรับอีเมลใน Google Play Console เพื่อให้เราส่งข้อมูลอัปเดตและประกาศสำคัญจาก Android และ Google Play รวมถึงจดหมายข่าวสำหรับพาร์ทเนอร์รายเดือนให้คุณได้