Android 9 (API ระดับ 28) เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่ คุณสามารถใช้ประโยชน์จากแอปของคุณ รวมถึงการเปลี่ยนแปลงลักษณะการทำงานใหม่ๆ เอกสารนี้จะแสดงภาพรวมของขั้นตอนในการย้ายข้อมูล แอปไปยัง Android 9 ในระยะสำคัญ 2 ช่วงดังนี้
- ตรวจสอบความเข้ากันได้ขั้นพื้นฐานกับ Android 9
ตรวจสอบว่าแอปที่มีอยู่ทำงานได้อย่างสมบูรณ์บนแพลตฟอร์มเวอร์ชันใหม่ ขณะนี้ คุณไม่ได้ใช้ API ใหม่หรือเปลี่ยน
targetSdkVersion
ของแอป แต่อาจต้องทำการเปลี่ยนแปลงเล็กน้อย - กำหนดเป้าหมายไปยังแพลตฟอร์มใหม่ คอมไพล์ด้วย 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
ที่อาจส่งผลต่อลักษณะการทำงานของแอปหรือทำให้แอปเสียหายไปเลย แม้ว่าคุณจะไม่ได้เปลี่ยนแปลง
targetSdkVersion
ด้วยเหตุนี้ คุณจึงควรตรวจสอบการเปลี่ยนแปลงที่สำคัญ
ในตารางที่ 1 และทดสอบการแก้ไขที่คุณนำไปใช้เพื่อรองรับการเปลี่ยนแปลง
เปลี่ยน | สรุป |
---|---|
ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ 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 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 จะแสดงรายการการเปลี่ยนแปลงเหล่านี้พร้อมลิงก์ไปยังข้อมูลเพิ่มเติม
เปลี่ยน | สรุป |
---|---|
สิทธิ์สำหรับบริการที่ทำงานอยู่เบื้องหน้า | แอปที่ต้องการใช้บริการที่ทำงานอยู่เบื้องหน้าต้องขอสิทธิ์ 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