Android 9 (API ระดับ 28) เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่คุณสามารถใช้ในแอป รวมถึงการเปลี่ยนแปลงลักษณะการทำงานใหม่ๆ เอกสารนี้จะอธิบายภาพรวมของขั้นตอนการย้ายข้อมูลแอปไปยัง Android 9 ผ่าน 2 ระยะหลักๆ ดังนี้
- ตรวจสอบความเข้ากันได้ขั้นพื้นฐานกับ Android 9
ตรวจสอบว่าแอปที่มีอยู่ทำงานได้อย่างสมบูรณ์บนแพลตฟอร์มเวอร์ชันใหม่ ในขั้นตอนนี้ คุณจะไม่ใช้ API ใหม่หรือเปลี่ยน
targetSdkVersion
ของแอป แต่อาจต้องทำการเปลี่ยนแปลงเล็กน้อย - กำหนดเป้าหมายเป็นแพลตฟอร์มใหม่ คอมไพล์ด้วย SDK ของ Android 9 และสร้างด้วยฟีเจอร์ของ 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 และทดสอบการแก้ไขที่คุณนำไปใช้เพื่อรองรับการเปลี่ยนแปลง
ตารางที่ 1 การเปลี่ยนแปลงสำคัญที่ส่งผลกระทบต่อแอปทั้งหมด ที่ทำงานในอุปกรณ์ Android 9
เปลี่ยน | สรุป |
---|---|
ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK |
ตอนนี้การเข้าถึงอินเทอร์เฟซบางรายการที่ไม่ใช่ SDK ถูกบล็อก ไม่ว่าจะเป็นการเข้าถึงโดยตรงผ่าน
JNI หรือผ่านการสะท้อน ความพยายามที่จะเข้าถึงอินเทอร์เฟซที่จำกัดจะทำให้เกิดข้อผิดพลาดต่างๆ เช่น
NoSuchFieldException และ NoSuchMethodException
ดูรายละเอียดได้ที่ข้อจำกัดเกี่ยวกับอินเทอร์เฟซที่ไม่ใช่ SDK
|
การนำผู้ให้บริการคริปโตออก |
ตั้งแต่ Android 9 เป็นต้นไป ระบบจะนำผู้ให้บริการ JCA ของ Crypto ออก การโทร
ไปยัง 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 ดังนั้น โปรดทําตามขั้นตอนเหล่านั้นก่อน
รับ SDK ของ Android 9
คุณดาวน์โหลดแพ็กเกจ 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 Castle จะทำให้เกิดข้อผิดพลาด NoSuchAlgorithmException หากต้องการแก้ไขข้อผิดพลาดนี้ อย่าระบุผู้ให้บริการใน getInstance() (กล่าวคือ ขอการใช้งานเริ่มต้น)
|
การยกเลิกสิทธิ์เข้าถึง Build.serial โดยตรง
|
ตอนนี้แอปที่จำเป็นต้องใช้ตัวระบุ Build.serial ต้องขอ READ_PHONE_STATE
แล้วใช้วิธีการ Build.getSerial() ใหม่ที่เพิ่มเข้ามาใน Android 9
|
ไม่อนุญาตให้แชร์ไดเรกทอรีข้อมูล WebView | แอปไม่สามารถแชร์ไดเรกทอรีข้อมูล WebView รายการเดียวในกระบวนการต่างๆ ได้อีกต่อไป หากแอปของคุณมีกระบวนการที่ใช้ WebView, CookieManager หรือ API อื่นๆ ในแพ็กเกจ android.webkit มากกว่า 1 รายการ แอปจะขัดข้องเมื่อกระบวนการที่ 2 เรียกใช้เมธอด WebView |
การเข้าถึงไดเรกทอรีข้อมูลของแอปที่ SELinux บล็อกไว้ | ระบบจะบังคับใช้แซนด์บ็อกซ์ SELinux ของแต่ละแอปด้วยข้อจำกัด SELinux ของแต่ละแอปในไดเรกทอรีข้อมูลส่วนตัวของแอปแต่ละแอป ตอนนี้ไม่อนุญาตให้เข้าถึงไดเรกทอรีข้อมูลของแอปอื่นโดยตรงตามเส้นทางแล้ว แอปอาจแชร์ข้อมูลต่อไปโดยใช้กลไก IPC ซึ่งรวมถึงการส่ง FD |
ดูรายการการเปลี่ยนแปลงลักษณะการทํางานเพิ่มเติมสําหรับแอปที่กําหนดเป้าหมายเป็น Android 9 ได้ในเอกสารการเปลี่ยนแปลงลักษณะการทํางาน
หากต้องการสำรวจฟีเจอร์และ API ใหม่ๆ ที่พร้อมใช้งานใน Android 9 โปรดดู ฟีเจอร์และ API ของ Android 9