การย้ายข้อมูลแอปไปยัง Android 9

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

  1. ตรวจสอบความเข้ากันได้ขั้นพื้นฐานกับ Android 9

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

  2. กำหนดเป้าหมายไปยังแพลตฟอร์มใหม่ คอมไพล์ด้วย Android 9 SDK และ สร้างสรรค์ด้วยฟีเจอร์ของ Android 9

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

เตรียมอุปกรณ์ที่ใช้ Android 9

หากคุณมีอุปกรณ์ที่รองรับ ให้ขอรับ รูปภาพระบบ Android 9 จากผู้ผลิตสำหรับอุปกรณ์ของคุณ คลิกที่นี่เพื่อ รูปภาพเริ่มต้นสำหรับ อุปกรณ์ Pixel วิธีการทั่วไปสำหรับ กะพริบอิมเมจระบบที่นี่

คุณยังดาวน์โหลดอิมเมจระบบ Android 9 สำหรับ Android Emulator ได้ด้วย โดยจะแสดงอยู่ใน เครื่องมือจัดการ SDK ภายใต้ Android API 28 เป็น Google APIs Intel x86 Atom System Image

หมายเหตุ: อิมเมจระบบโปรแกรมจำลอง Android 9 มีให้ดาวน์โหลดใน Android Studio 3.1 ขึ้นไป Android Studio 3.2 มีความเข้ากันได้มากที่สุด ดูข้อมูลเพิ่มเติมได้ที่ดาวน์โหลด SDK สำหรับ Android 9

ตรวจสอบความเข้ากันได้กับ Android 9

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

ตรวจสอบความเข้ากันได้กับ Android 9 ทีละขั้นตอน

ทำการทดสอบความเข้ากันได้

โดยส่วนใหญ่แล้ว การทดสอบความเข้ากันได้กับ Android 9 จะมีการทดสอบประเภทเดียวกับที่คุณทำเมื่อเตรียมที่จะเผยแพร่แอป นี่คือเวลาที่ดีในการอ่านหลักเกณฑ์ด้านคุณภาพของแอปหลักและแนวทางปฏิบัติแนะนำสำหรับการทดสอบ

แต่ยังมีอีกแง่มุมหนึ่งที่ควรทดสอบ เพราะ Android 9 มีการเปลี่ยนแปลงในอุปกรณ์ Android ที่อาจส่งผลต่อลักษณะการทำงานของแอปหรือทำให้แอปเสียหายไปเลย แม้ว่าคุณจะไม่ได้เปลี่ยนแปลง targetSdkVersion ด้วยเหตุนี้ คุณจึงควรตรวจสอบการเปลี่ยนแปลงที่สำคัญ ในตารางที่ 1 และทดสอบการแก้ไขที่คุณนำไปใช้เพื่อรองรับการเปลี่ยนแปลง

ตาราง 1 การเปลี่ยนแปลงสำคัญที่ส่งผลกระทบต่อแอปทั้งหมด ที่ทำงานในอุปกรณ์ Android 9

เปลี่ยน สรุป
ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK ตอนนี้การเข้าถึงอินเทอร์เฟซบางรายการที่ไม่ใช่ SDK ถูกบล็อก ไม่ว่าจะเป็นการเข้าถึงโดยตรงผ่าน JNI หรือผ่านการสะท้อน ความพยายามที่จะเข้าถึงอินเทอร์เฟซที่จำกัดจะทำให้เกิดข้อผิดพลาดต่างๆ เช่น NoSuchFieldException และ NoSuchMethodException ดูข้อจำกัด บนอินเทอร์เฟซที่ไม่ใช่ SDK สำหรับรายละเอียด
การนำผู้ให้บริการคริปโตออก ตั้งแต่ Android 9 เป็นต้นไป ระบบได้นำผู้ให้บริการ Crypto JCA ออกแล้ว การโทร ไปยัง SecureRandom.getInstance("SHA1PRNG", "Crypto") จะโยน NoSuchProviderException
ตัวถอดรหัส UTF-8 ที่เข้มงวดขึ้น ใน Android 9 ตัวถอดรหัส UTF-8 สำหรับภาษา Java จะเข้มงวดกว่าและเป็นไปตามมาตรฐาน Unicode
การเข้าถึงกล้อง ไมโครโฟน และเซ็นเซอร์ถูกบล็อกสำหรับแอปที่ไม่ได้ใช้งาน ขณะที่แอปไม่มีการใช้งาน แอปจะเข้าถึงเซ็นเซอร์กล้อง ไมโครโฟน หรือ SensorManager ไม่ได้อีกต่อไป

หากต้องการดูรายการการเปลี่ยนแปลงลักษณะการทำงานของแอปทั้งหมดที่ใช้ Android 9 อย่างละเอียดมากขึ้น โปรดดูเอกสารการเปลี่ยนแปลงพฤติกรรม

อัปเดตเวอร์ชันเป้าหมายและใช้ฟีเจอร์ของ Android P

ส่วนนี้อธิบายวิธีเปิดใช้การรองรับ Android 9 อย่างเต็มรูปแบบ โดยการอัปเดต targetSdkVersion เป็น 28 และเพิ่มฟีเจอร์ใหม่ๆ ที่มีใน Android 9

นอกจากการนำเสนอ API ใหม่ให้คุณแล้ว Android 9 ยังนำเสนอลักษณะการทำงานบางอย่าง จะเปลี่ยนไปเมื่อคุณอัปเดต targetSdkVersion เป็น 28 เนื่องจากมีการเปลี่ยนแปลงพฤติกรรมบางอย่าง อาจต้องมีการเปลี่ยนแปลงโค้ดเพื่อหลีกเลี่ยงการหยุดทำงาน คุณควรทำความเข้าใจเกี่ยวกับประสิทธิภาพของแอปก่อน ได้รับผลกระทบเมื่อคุณเปลี่ยน targetSdkVersion โดยตรวจสอบการเปลี่ยนแปลงลักษณะการทำงานทั้งหมดของแอปที่กำหนดเป้าหมายเป็น Android 9

หมายเหตุ: ขั้นตอนที่อธิบายด้านบนเพื่อ ตรวจสอบว่าความเข้ากันได้ของแพลตฟอร์มเป็นข้อกำหนดเบื้องต้น ในการกําหนดเป้าหมายแอปไปยัง Android 9 ดังนั้น โปรดทําตามขั้นตอนเหล่านั้นก่อน

อัปเดตเวอร์ชันเป้าหมายและใช้ฟีเจอร์ของ Android 9 ทีละขั้นตอน

ดาวน์โหลด Android 9 SDK

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

ทดสอบแอป Android 9

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

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

ตาราง 2 จะแสดงรายการการเปลี่ยนแปลงเหล่านี้พร้อมลิงก์ไปยังข้อมูลเพิ่มเติม

ตาราง 2 การเปลี่ยนแปลงสำคัญที่ส่งผลกระทบต่อแอป เมื่อตั้งค่า targetSdkVersion เป็น 28

เปลี่ยน สรุป
สิทธิ์สำหรับบริการที่ทำงานอยู่เบื้องหน้า แอปที่ต้องการใช้บริการที่ทำงานอยู่เบื้องหน้าต้องขอสิทธิ์ FOREGROUND_SERVICE ก่อน นี่เป็นสิทธิ์ปกติ ดังนั้นระบบจะให้สิทธิ์ในการเข้าถึงคำขอ แอป การเริ่มบริการที่ทำงานอยู่เบื้องหน้าโดยไม่มีสิทธิ์จะทำให้ระบบแสดง SecurityException
การเลิกใช้งานการเข้ารหัส Bouncy Castle Android 9 เลิกใช้งานการเข้ารหัสหลายรายการจากผู้ให้บริการ Bouncy Castle เพื่อนำไปใช้ ที่มาจากผู้ให้บริการ Conscrypt โทรหา getInstance() ที่ ขอ Bouncy ผู้ให้บริการปราสาทสร้างข้อผิดพลาด NoSuchAlgorithmException รายการ หากต้องการแก้ไขข้อผิดพลาด โปรดอย่า ระบุผู้ให้บริการใน getInstance() (กล่าวคือ ขอการใช้งานเริ่มต้น)
การยกเลิกสิทธิ์เข้าถึง Build.serial โดยตรง ตอนนี้แอปที่จำเป็นต้องใช้ตัวระบุ Build.serial ต้องขอ READ_PHONE_STATE แล้วใช้วิธีการ Build.getSerial() ใหม่ที่เพิ่มเข้ามาใน Android 9
ไม่อนุญาตให้แชร์ไดเรกทอรีข้อมูล WebView แอปจะแชร์ไดเรกทอรีข้อมูล WebView เดียวในกระบวนการต่างๆ ไม่ได้อีกต่อไป หากแอปของคุณมี มากกว่าหนึ่งกระบวนการโดยใช้ WebView, CookieManager หรือ API อื่นๆ ใน android.webkit แอปของคุณจะขัดข้องเมื่อขั้นตอนที่ 2 เรียกใช้เมธอด WebView
การเข้าถึงไดเรกทอรีข้อมูลของแอปที่ SELinux บล็อกไว้ ระบบบังคับใช้แซนด์บ็อกซ์ SELinux ต่อแอป โดยมีข้อจำกัด SELinux ต่อแอปในแต่ละแอป ไดเรกทอรีข้อมูลส่วนตัวของแอป การเข้าถึงไดเรกทอรีข้อมูลของแอปอื่นโดยตรงด้วยเส้นทางคือ ไม่ได้รับอนุญาตแล้ว แอปอาจยังแชร์ข้อมูลต่อไปโดยใช้กลไก IPC ซึ่งรวมถึงการส่งผ่าน FD

สำหรับรายการการเปลี่ยนแปลงลักษณะการทำงานเพิ่มเติมสำหรับแอปที่กำหนดเป้าหมายเป็น Android 9 ดูเอกสารการเปลี่ยนแปลงลักษณะการทำงาน

หากต้องการสำรวจฟีเจอร์และ API ใหม่ๆ ที่พร้อมใช้งานใน Android 9 โปรดดู ฟีเจอร์และ API ของ Android 9