ปฏิบัติตามข้อกำหนดของระดับ API เป้าหมายของ Google Play

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 11 (API ระดับ 30) ไปยัง Android 12 (API ระดับ 31)

ความปลอดภัยและสิทธิ์

  • บลูทูธ: คุณต้องแทนที่การประกาศสำหรับสิทธิ์ BLUETOOTH และ BLUETOOTH_ADMIN ด้วยสิทธิ์ BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE หรือ BLUETOOTH_CONNECT คุณ ไม่จำเป็นต้องLOCATIONขอสิทธิ์รันไทม์สำหรับการดำเนินการบลูทูธ อีกต่อไป
  • ตำแหน่ง: ผู้ใช้สามารถขอให้แอปดึงข้อมูลตำแหน่งโดยประมาณเท่านั้น คุณต้องขอสิทธิ์ ACCESS_COARSE_LOCATION ทุกครั้งที่ขอ ACCESS_FINE_LOCATION
  • ไฮเบอร์เนต: ระบบอาจเปลี่ยนแอปเป็นโหมดไฮเบอร์เนตหากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง ในโหมดไฮเบอร์เนต ระบบจะรีเซ็ตสิทธิ์รันไทม์และแคชของแอป และคุณจะเรียกใช้ งานหรือการแจ้งเตือนไม่ได้ คุณสามารถตรวจสอบสถานะการหยุดทำงานของแอปได้
  • ความสามารถในการเปลี่ยนแปลงได้ของ 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 ขึ้นไป

ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 8.0 (API ระดับ 26) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงาน สำหรับแพลตฟอร์มเวอร์ชันนั้น

ย้ายข้อมูลจาก Android 8 (API 26) ไปยัง Android 9 (API 28)

ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน 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

ย้ายข้อมูลจาก Android 10 (API ระดับ 29) ไปยัง Android 11 (API ระดับ 30)

ดูรายการการเปลี่ยนแปลงทั้งหมดที่เปิดตัวใน Android 11 (API ระดับ 30) ได้ที่หน้าการเปลี่ยนแปลงลักษณะการทำงาน

อัปเดตเป็น API 31 ต่อไปโดยทำตามวิธีการในส่วนก่อนหน้า

ปรับแอปให้ทันสมัย

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

  • ลองใช้ CameraX ซึ่งอยู่ในเวอร์ชันเบต้าเพื่อใช้กล้องให้เกิดประโยชน์สูงสุด
  • ใช้คอมโพเนนต์ Jetpack เพื่อช่วยให้คุณทำตามแนวทางปฏิบัติแนะนำ โดยไม่ต้องเขียนโค้ดบอยเลอร์เพลต และลดความซับซ้อนของงานที่ซับซ้อน เพื่อให้คุณมุ่งเน้นไปที่โค้ดที่คุณสนใจได้
  • ใช้ Kotlin เพื่อเขียนแอปที่ดีขึ้นได้เร็วขึ้นและใช้โค้ดน้อยลง
  • ตรวจสอบว่าคุณปฏิบัติตามข้อกำหนดและแนวทางปฏิบัติแนะนำด้านความเป็นส่วนตัว
  • เพิ่มการรองรับธีมมืดในแอป
  • เพิ่มการรองรับการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัสลงในแอป
  • ย้ายข้อมูลแอปจาก Google Cloud Messaging (GCM) ไปยัง Firebase Cloud Messaging เวอร์ชันล่าสุด
  • ใช้ประโยชน์จากการจัดการหน้าต่างขั้นสูง
    • รองรับสัดส่วนภาพที่ใหญ่ขึ้น (มากกว่า 16:9) เพื่อใช้ประโยชน์จาก ความก้าวหน้าล่าสุดด้านฮาร์ดแวร์ ตรวจสอบว่าแอปปรับขนาดให้เต็ม พื้นที่หน้าจอที่ใช้ได้ ประกาศอัตราส่วนภาพสูงสุดเป็นทางเลือกสุดท้ายเท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับสัดส่วนภาพสูงสุดได้ที่ประกาศ การรองรับหน้าจอที่จำกัด
    • เพิ่มการรองรับหลายหน้าต่างเพื่อช่วยให้แอปเพิ่มประสิทธิภาพการทำงาน และจัดการจอแสดงผลหลายจอ
    • หากประสบการณ์การใช้งานแอปที่ย่อขนาดลงมาอย่างดีจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ ให้เพิ่มการรองรับการแสดงภาพซ้อนภาพ

ตรวจสอบและอัปเดต 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
  • จัดการรูปภาพ/วิดีโอที่เพิ่งถ่าย/อัดใหม่

  • จัดการการแชร์ไฟล์ไปยังแอปอื่นๆ - ทดสอบ Use Case ที่แชร์ข้อมูลไฟล์กับแอปอื่นๆ (แม้จะเป็นแอปอื่นจากนักพัฒนาซอฟต์แวร์รายเดียวกัน)

    • ทดสอบว่าเนื้อหาปรากฏในแอปอื่นและไม่ทำให้เกิดข้อขัดข้อง

ข้อมูลเพิ่มเติม

เลือกรับอีเมลใน Google Play Console เพื่อให้เราส่งข้อมูลอัปเดตและประกาศสำคัญจาก Android และ Google Play รวมถึงจดหมายข่าวสำหรับพาร์ทเนอร์รายเดือนให้คุณได้