Dynamic Android จะช่วยให้นักพัฒนาทดสอบ AOSP บนอุปกรณ์ Android Q ใดก็ได้

โปรเจ็กต์ใหม่ที่เรียกว่า Dynamic Android จะช่วยให้นักพัฒนาทดสอบ AOSP Android Q GSIs บนอุปกรณ์ใดๆ ที่ใช้ Android Q หรือใหม่กว่า

ขอบคุณ โครงการเสียงแหลมผู้ผลิตอุปกรณ์สมาร์ทโฟนได้ส่งการอัปเดตซอฟต์แวร์ Android Pie ได้เร็วกว่าที่พวกเขาสามารถทำได้สำหรับการอัปเดต Android Oreo อย่างน้อยก็สำหรับสมาร์ทโฟนเรือธง Google ไม่ต้องการเห็นเฉพาะ OEM เท่านั้นที่ได้รับผลประโยชน์จาก Project Treble บริษัทเคยมีมาก่อน แสดงความสนใจ ในการปล่อย Generic System Image (GSI) ของ Android Q สำหรับนักพัฒนา เพื่อให้พวกเขาไม่ต้องพึ่งพาโปรแกรมจำลอง ให้ใช้ บริการคลาวด์หรือรอการอัปเดตบนอุปกรณ์ของตนเองเพื่อทดสอบแอปกับระดับ API ล่าสุด ตามทฤษฎีแล้ว การปล่อย GSI ควรอนุญาตให้นักพัฒนาทุกคนมีอุปกรณ์ที่เข้ากันได้กับ Project Treble (เดิมคือ Android 8.0 Oreo ขึ้นไป แต่ตอนนี้ถือว่ามีเพียงอุปกรณ์ที่เปิดตัวด้วย Android 9 Pie) เพื่อทดสอบ Android รุ่นล่าสุด รุ่น สิ่งที่นักพัฒนาต้องทำคือแฟลชอิมเมจระบบที่ด้านบนของการติดตั้งซอฟต์แวร์ที่มีอยู่ โดยไม่จำเป็นต้องกู้คืน บูต หรืออิมเมจของผู้จำหน่ายแบบกำหนดเอง

อย่างไรก็ตาม มีปัญหาหลายประการเกี่ยวกับกระบวนการติดตั้ง GSI ในปัจจุบัน ขั้นแรกคุณต้องมี bootloader ที่ปลดล็อคซึ่ง

เป็นไปไม่ได้ บนอุปกรณ์ Huawei หรือ Honor (โดยไม่ต้องชำระเงิน ค่าธรรมเนียม), อุปกรณ์ Nokia ของ HMD Global (ไม่รวม โนเกีย 8) หรืออุปกรณ์ที่มีตราสินค้าผู้ให้บริการในสหรัฐฯ ต่อไป กระบวนการ จะเป็นเรื่องยากสำหรับทุกคนที่ไม่คุ้นเคยกับการแฟลชภาพผ่าน fastboot สุดท้ายนี้ การแฟลช GSI ในตอนนี้จะทำให้คุณต้องล้างที่จัดเก็บข้อมูลภายในทั้งหมด ซึ่งหมายความว่าคุณอาจต้องการให้มีอุปกรณ์สำรองทดสอบ ขณะนี้ การกระพริบ GSI เป็นเพียงสิ่งที่ OEM ใช้เพื่อทดสอบความเข้ากันได้ของ Project Treble บนอุปกรณ์ของตน และยิ่งไปกว่านั้น ยังเป็นเพียงสิ่งที่น่าสนใจสำหรับผู้ที่ตายยากเท่านั้น ผู้ที่ชื่นชอบ ROM แบบกำหนดเอง. โครงการ "Dynamic Android" ใหม่ของ Google อาจมีการเปลี่ยนแปลง

Dynamic Android—ทดสอบ AOSP GSI บนอุปกรณ์ Android Q ได้อย่างง่ายดาย

ในช่วงไม่กี่เดือนที่ผ่านมา Google ได้ดำเนินการหาวิธีบูต GSI อย่างปลอดภัยโดยไม่ต้องปลดล็อกโปรแกรมโหลดบูต กล่าวโดยสรุป Google กำลังพัฒนาแอปที่มีสิทธิ์พิเศษที่อนุญาตให้ดาวน์โหลด GSI สำรองพื้นที่เก็บข้อมูล และทำเครื่องหมาย GSI ว่าสามารถบูตได้ โปรเจ็กต์นี้มีหลายองค์ประกอบ ดังนั้นเรามาพูดคุยกันทีละองค์ประกอบกันดีกว่า

Android แบบไดนามิกและ Android On Tap

มีการเพิ่มบริการใหม่สองรายการใน Android Q: บริการ Dynamic Android และ Android On Tap ในขณะที่ Dynamic Android จัดการการติดตั้ง GSI นั้น Android On Tap จะแจ้งแอประบบด้วยการโทรกลับและการออกอากาศ ตัวอย่างเช่น Android On Tap จะแจ้งเตือน KeyguardManager เพื่อขอให้ผู้ใช้ยืนยันคำขอการติดตั้งว่าอุปกรณ์ได้รับการปกป้องด้วย PIN รหัสผ่าน หรือรูปแบบหรือไม่ AOT ยังแจ้งเตือนผู้ใช้เมื่อบูตเข้าสู่ GSI

ตามคำอธิบายของ "DynamicAndroidManager" บริการ "เสนอกลไกในการใช้ Android ใหม่ ชั่วคราว" หลังการติดตั้ง อุปกรณ์สามารถรีบูตเป็นอิมเมจที่ติดตั้งใหม่ด้วยอิมเมจที่สร้างขึ้นใหม่ได้ /data. การรีบูตในขณะที่อยู่ใน GSI จะทำให้ผู้ใช้กลับสู่อิมเมจระบบดั้งเดิม แต่อิมเมจที่ติดตั้งใหม่และข้อมูลจะถูกปิดใช้งานและไม่ถูกลบ หากผู้ใช้เลือกที่จะทำเช่นนั้น GSI และข้อมูลในนั้นก็สามารถลบออกได้อย่างสมบูรณ์

แหล่งที่มา: [1], [2], [3], [4]

จีเอสไอดี

GSI daemon จัดสรรพื้นที่ในพาร์ติชัน /data เพื่อจัดเก็บอิมเมจ GSI และข้อมูล และทำให้อิมเมจสามารถบูตได้ ข้อมูลเมตาของ GSI จะถูกเก็บไว้ใน /metadata ในขณะที่ GSI เองและข้อมูลจะถูกเก็บไว้ใน /data/gsi ตามค่าเริ่มต้น GSID จะจัดสรรข้อมูลผู้ใช้ 8GB สำหรับ GSI ที่ติดตั้งใหม่ โดยทั่วไป GSID จะมองหาพื้นที่ว่างอย่างน้อย 40% ก่อนที่จะเริ่มการติดตั้ง สุดท้ายนี้ daemon จะป้องกันไม่ให้ผู้ใช้ติดตั้ง GSI ภายใน GSI ด้วยเหตุผลที่ชัดเจน

แหล่งที่มา: [1], [2], [3], [4]

ความปลอดภัย

เปิดใช้งาน Android Verified Boot (AVB) สำหรับอิมเมจระบบ EXT4 ที่เพิ่งติดตั้งใหม่ (system_gsi เมาท์ไปที่ /system) Google ได้ใช้นโยบาย SELinux สำหรับบริการใหม่ด้วย สุดท้ายนี้ การติดตั้ง GSI กำหนดให้แอปต้องมีสิทธิ์ MANAGE_DYNAMIC_ANDROID ใหม่ นี่คือสิทธิ์ระดับลายเซ็นซึ่งหมายความว่าแอปจะต้องลงนามโดย OEM

แหล่งที่มา: [1], [2]

คำสั่ง ADB และ Fastboot

GSI จะสามารถติดตั้งได้ผ่านคำสั่ง ADB ใหม่ คำสั่งเชลล์ ADB gsi_tool ใหม่จะอนุญาตให้ผู้ใช้ปิดการใช้งาน เปิดใช้งานอีกครั้ง ติดตั้งและเก็บรักษา ข้อมูลผู้ใช้ ติดตั้งและสร้างข้อมูลผู้ใช้ ติดตั้งและล้างข้อมูลผู้ใช้ หรือตรวจสอบสถานะของ การติดตั้ง.

gsi_tool - command-line tool for installing GSI images.

Usage:
gsi_tool <disable|install|wipe|status> [options]

disable Disable the currently installed GSI.
enable Enable a previously disabled GSI.
installInstall a new GSI. Specify the image sizewith
--gsi-size and the desired userdata size with
--userdata-size (the latter defaults to 8GiB)
--wipe (remove old gsi userdata first)
wipe Completely remove a GSI and its associated data
status Showstatus

จะมีการเพิ่มคำสั่ง fastboot ใหม่สองคำสั่งเพื่อจัดการ GSI แม้ว่าการติดตั้ง fastboot จะไม่รองรับเนื่องจาก fastboot ไม่สามารถเมานต์ข้อมูลผู้ใช้ได้

fastboot gsi wipe
fastboot gsi disable

แหล่งที่มา: [1], [2]

สิ่งนี้จะเป็นประโยชน์ต่อใคร?

ฉันอยากจะบอกว่านักพัฒนาแอปจะสามารถใช้ประโยชน์จาก Dynamic Android และ Android On Tap ได้ แต่ฉันไม่แน่ใจทั้งหมด แม้ว่า Google จะแสดงความสนใจเพียงเท่านี้ แต่ก็ไม่รับประกันว่าคุณลักษณะนี้จะพร้อมใช้งานใน Android Q ทุกรุ่น OEM ที่ไม่ใช่ของ Google เพื่อใช้ประโยชน์จากสิ่งนี้บนอุปกรณ์ ซอฟต์แวร์จำเป็นต้องมีแอปตัวเลือก GSI ที่ลงนามโดยใบรับรองเดียวกันกับ รอม. ฉันไม่แน่ใจด้วยว่าการติดตั้ง GSI จาก ADB จะเป็นไปได้หากไม่มีรูท ADB เนื่องจากนโยบาย SELinuxอัปเดต: ใหม่ ให้สัญญา ยืนยันว่าจำเป็นต้องใช้รูท ADB เพื่อใช้ GSI_tool หากสิ่งนี้ไม่ได้มีไว้สำหรับนักพัฒนาแอปเพื่อทดสอบแอปของตนบน Android เวอร์ชันใหม่ทั้งหมด ก็เป็นไปได้เท่านั้น เป็นประโยชน์ต่อวิศวกรจาก OEM ที่ต้องการทดสอบชุดทดสอบความเข้ากันได้ (CTS) และชุดทดสอบผู้ขาย (VTS) บน อุปกรณ์

ขอขอบคุณเป็นพิเศษสำหรับนักพัฒนา XDA ที่ได้รับการยอมรับ ลูก้า020400 สำหรับความช่วยเหลือของเขาในบทความนี้