ตัวอย่างนักพัฒนา Android O มีการตั้งค่าธีมการแสดงผลที่ลึกลับ XDA ได้สรุปว่าเฟรมเวิร์กธีมนี้อิงจาก RRO ของ Sony
ในกรณีที่คุณไม่ทราบ Google ได้เปิดตัว Android O Developer Preview ตัวที่สอง (Android O DP2) ในระหว่างงาน I/O เมื่อวานนี้ เราได้แล้ว เจาะลึกทุกสิ่งใหม่ที่เราพบจนถึงตอนนี้แต่มีสิ่งหนึ่งที่เกี่ยวกับ DP2 ที่กวนใจฉัน ทุกคนที่ ได้รับการอัปเดตเบต้าหรือแฟลชด้วยตนเอง ภาพใหม่ก็พบกับอย่างรวดเร็วด้วย UI ที่แตกต่างอย่างสิ้นเชิง ในการตั้งค่าด่วน เหตุใด Google จึงตัดสินใจเปลี่ยนธีมในโลกนี้ หลังจากทดสอบและขุดเพิ่มเติมแล้วฉันก็ได้ข้อสรุป ไม่ว่าจะด้วยเหตุผลใดก็ตาม Google ได้ตัดสินใจที่จะดำเนินการดังกล่าว ธีม "กลับหัว" ธีมเริ่มต้น บางทีในขณะที่บริษัทอยู่ระหว่างกลาง ทดสอบโซลูชันธีมที่กำหนดเองตาม การซ้อนทับทรัพยากรรันไทม์ของ Sony (RRO) พวกเขาไม่สามารถทำให้ธีม Pixel เริ่มต้นทำงานได้ทันเวลาสำหรับการเปิดตัว Android O Beta
ธีมระบบเริ่มต้นใน Android O Developer Preview 2
การเปิดเผยว่ากรอบการทำงานของ Android O นั้นอิงตาม RRO ของ Sony อาจดูเหมือนชัดเจนสำหรับบางคนเนื่องจาก Google ดำเนินการรองรับ RRO ใน Android 6.0 Marshmallow
แม้ว่าคุณจะต้องมีอุปกรณ์ที่รูทก็ตาม อย่างไรก็ตาม เนื่องจากซอร์สโค้ดสำหรับ Android O ยังไม่ได้เปิดตัว จึงเป็นการคาดเดาล้วนๆ ที่จะแนะนำว่าธีมระบบใน Android O นี้แท้จริงแล้วคือ RRO นั่นเป็นเหตุผลที่เรา ความคุ้มครองเริ่มต้น ของสถานที่อันลึกลับนี้ รวมถึงการรายงานข่าวโดย เว็บไซต์อื่น ๆไม่ได้ทำการเชื่อมต่อนี้ แต่มีหลักฐานหลายชิ้นที่เชื่อมโยงคุณลักษณะนี้กับกรอบงานของธีมที่เราเชื่อว่าควรแสดงให้เห็นโดยสรุป ธีมอุปกรณ์ของ Android O ขึ้นอยู่กับ RRO. ด้วยการสนับสนุน RRO บนเครื่อง เดือนพฤษภาคมนี้ ในที่สุดก็มอบโซลูชันธีมสำหรับผู้ใช้ที่ไม่ได้รูทซึ่งเราทุกคนรอคอย.Runtime Resource Overlay (RRO) คืออะไร
RRO เป็นเฟรมเวิร์กธีมที่สร้างขึ้นโดยนักพัฒนาของ Sony ที่ขับเคลื่อน ธีม Xperia ของ Sony. ข้อดีของ RRO คือช่วยให้คุณสามารถแทนที่ทรัพยากรของแอปพลิเคชันได้โดยไม่ต้องแก้ไขซอร์สโค้ดของแอปพลิเคชัน สิ่งนี้เกิดขึ้นผ่านการใช้การซ้อนทับซึ่งมีสตริงทรัพยากรของตัวเองซึ่งใช้เพื่อแทนที่ทรัพยากรของแอปพลิเคชันที่ซ้อนทับในขณะที่กำลังโหลดแอปพลิเคชัน
สำหรับผู้ที่เห็น "RRO" และคิดว่า "เลเยอร์" แสดงว่าคุณค่อนข้างใกล้เคียง เลเยอร์เป็น RRO ของ Sony ที่ได้รับการปรับเปลี่ยนเล็กน้อย แต่ในระดับพื้นฐานนั้นทำงานคล้ายกันมาก RRO/Layers "ติดตั้ง" APK ของธีมไปที่ /system/vendor/overlay เมื่อบูตเครื่อง ตัวจัดการแพ็คเกจจะอ่าน APK เหล่านี้ ตรวจสอบแล้วใช้งาน รหัสแผนที่ เพื่อเชื่อมโยงเข้ากับตารางทรัพยากรระบบ คุณสามารถอ่านคำถามที่พบบ่อยโดยละเอียดเพิ่มเติมได้โดย ซิโกปอมปอสผู้พัฒนาของ (เลิกใช้แล้ว) ผู้จัดการเลเยอร์ แอป.
ภาพหน้าจอของแอป Layers Manager ที่เลิกใช้แล้ว
การอ่านที่แนะนำ: ประวัติโดยย่อของธีม: จากธีม OEM ไปจนถึงเลเยอร์ RRO
แน่นอนว่ามีชุมชน ROM แบบกำหนดเองของ Android เพียงไม่กี่รายที่ยังคงใช้เอ็นจิ้นธีมที่ใช้ RRO ส่วนใหญ่ได้ย้ายไปยังเอ็นจิ้นธีมอื่นเช่น ชั้นล่างซึ่งเป็นวิวัฒนาการของเลเยอร์ในปัจจุบันโดยอิงจาก Overlay Manager Service (OMS) (CyanogenMod Theme Engine (CMTE) เป็นอีกหนึ่งเฟรมเวิร์กธีมยอดนิยม อนาคตของมันยังคงอยู่ในอากาศ.) อย่างไรก็ตาม แม้ว่าคุณจะไม่ได้ใช้ ROM แบบกำหนดเองโดยที่ OMS คอมมิตก็ตาม แอพเอ็นจิ้นธีมชั้นล่าง ยังคงรองรับความสามารถในการใช้ธีม "Substratum Legacy" ซึ่งเป็นเพียงธีม RRO/Layers และด้วยเหตุนี้ ผู้ใช้จึงเริ่มทราบว่าธีมของอุปกรณ์ Android O และ RRO เป็นธีมเดียวกัน
ในที่สุด Google ก็เปิดตัวธีมผ่าน RRO
กว่าบน ส่วนความคิดเห็นของ หุ่นยนต์ตำรวจ บทความ, นักพัฒนา XDA ที่ได้รับการยอมรับ แม็กซ์อาร์1998 โพสต์ภาพหน้าจอโดยอ้างว่าธีม Substratum Legacy ปรากฏในตัวเลือกธีมอุปกรณ์ของ Google
ทางด้านซ้าย คุณจะเห็นรายการ APK ซ้อนทับที่ติดตั้งโดย Maxr1998 บน Android O Developer ตัวอย่างที่ 1 ทางด้านขวา คุณจะเห็นตัวเลือกธีมทั้งสองใน Android O Developer Preview 2 ก่อนหน้านี้ใน Android O DP1ทั้งสองตัวเลือกคือ "Pixel" และ "Inverted" โดยตั้งค่า "Pixel" เป็นค่าเริ่มต้น ในขณะที่ "Inverted" มีลักษณะคล้ายกับรูปลักษณ์และความรู้สึกของระดับสีเทาซึ่งเป็นค่าเริ่มต้นใน O DP2
แต่โปรดดูชื่อของธีมเริ่มต้นใน O DP2 อย่างระมัดระวัง มันถูกเรียกว่า "android.auto_generated_rro" เป็นชื่อที่แปลกมากจริงๆ แต่การรวม "RRO" ไว้ในชื่อคือสิ่งที่ทำให้ฉันเชื่อเป็นอันดับแรกว่านี่คือ RRO ของ Sony จริงๆ
ฉันก็คิดว่าถ้านี่คือ RRO จริง ฉันจะยืนยันสิ่งนี้ได้ที่ไหนอีก ความคิดเหล่านั้นทำให้ฉันต้องตรวจสอบ /system/vendor/overlay และตามที่คาดไว้ มีไฟล์ APK สองไฟล์อยู่ภายใน: framework-res__auto_generated_rro.apk และ PixelThemeOverlay.apk
ทั้งสองอย่างนี้ตรงกับชื่อของธีมในการตั้งค่าการแสดงผล น่าแปลกที่เมื่อคุณเลือกธีม Pixel ในการตั้งค่าการแสดงผล มันจะไม่ทำงาน ฉันไม่ใช่ผู้เชี่ยวชาญในการพัฒนาธีม RRO ดังนั้นฉันจึงไม่สามารถพูดได้ว่าทำไมธีม Pixel จึงไม่ทำงาน แม้ว่าการดำเนินการแยก APK ของทั้งสองแอปพลิเคชันจะเห็นได้ชัดว่าสิ่งเหล่านี้เป็นการซ้อนทับจริงๆ แอพ
PixelThemeOverlay.apk APK ฉีกขาด
[แท็บ] [ชื่อแท็บ ="AndroidManifest.xml"]
package="com.google.android.theme.pixel" platformBuildVersionCode="25" platformBuildVersionName="O">
<overlayandroid: priority="1"android: targetPackage="android"/>
<applicationandroid: hasCode="false"android: label="@string/pixel_overlay_pixel"/>
manifest>
[/tab][ชื่อแท็บ ="strings.xml"]
<resources>
<stringname="pixel_overlay_pixel">Pixelstring>
resources>
[/tab][ชื่อแท็บ ="colors.xml"]
<resources>
<colorname="user_icon_1">#ff5e97f6color>
<colorname="user_icon_2">#ff5c6bc0color>
<colorname="user_icon_3">#ff26a69acolor>
<colorname="user_icon_4">#ffec407acolor>
<colorname="user_icon_5">#ff33ac71color>
<colorname="user_icon_6">#ff8bc34acolor>
<colorname="user_icon_7">#ffff9800color>
<colorname="user_icon_8">#ffff7043color>
<colorname="system_error">#ffea4335color>
<colorname="primary_device_default_dark">#ff2d2d2dcolor>
<colorname="primary_device_default_settings">#ff2d2d2dcolor>
<colorname="primary_dark_device_default_dark">#ff242424color>
<colorname="primary_dark_device_default_settings">#ff242424color>
<colorname="secondary_device_default_settings">#ff3a3a3acolor>
<colorname="tertiary_device_default_settings">#ff616161color>
<colorname="quaternary_device_default_settings">#ff9e9e9ecolor>
<colorname="accent_device_default_700">#ff3367d6color>
<colorname="accent_device_default_light">#ff4285f4color>
<colorname="accent_device_default_dark">#ff5e97f6color>
<colorname="accent_device_default_50">#ffe8f0fecolor>
resources>
[/แท็บ]
[/แท็บ]
ถ้าคุณพร่องมันเนย เหนือเอกสารของ RRO จัดทำโดย Sony ชัดเจนว่านี่ควรจะเป็นธีม RRO ในไฟล์ AndroidManifest บรรทัดโอเวอร์เลย์ระบุว่าโอเวอร์เลย์นี้กำหนดเป้าหมายไฟล์ framework-res.apk ("android") และมีลำดับความสำคัญเป็น "1" ซึ่งเป็นลำดับความสำคัญสูงสุดที่สามารถให้ได้
ในทางกลับกัน ภายในไฟล์ framework-res__auto_generated_rro.apk จะมีไฟล์ AndroidManifest.xml ที่ดูคล้ายกัน แต่มีสตริงอื่นๆ อีกมากมายที่ไม่เกี่ยวข้องกับธีม แต่สิ่งนี้สามารถอธิบายได้ง่ายโดยข้อเท็จจริงที่ว่าธีม RRO นี้โดยพื้นฐานแล้วเป็นเวอร์ชันที่ถูกแยกส่วน framework-res.apk ของ Google Pixel ซึ่งฉันคิดว่าเป็นจริงเนื่องจาก \res\values\bools.xml มีบรรทัด
ซึ่งผมทราบจากการโพสในฟอรั่มของเราว่าเป็นไลน์ที่ผู้ใช้งาน จำเป็นต้องตั้งค่า เพื่อที่จะ เปิดใช้งานการสนับสนุน Round Icon ทั้งระบบ.
บทสรุป
ผู้ทดสอบของฉันยังไม่สามารถเข้าถึงรูทใน O DP2 เพื่อลองใช้ธีม Substratum Legacy/RRO ได้ แต่จากการค้นพบของฉันเองและของ Maxr1998 ก็ปลอดภัยที่จะพูดอย่างนั้น ในที่สุด Google อาจเตรียมนำธีม RRO มาสู่คนทั่วไป.
แน่นอนว่าไม่มีการรับประกันว่าฟีเจอร์นี้จะไม่ถูกถอดออกจาก Android O เวอร์ชันต่อมารุ่นใดรุ่นหนึ่ง อาจเป็นไปได้ที่ Google ตัดสินใจว่า RRO ไม่ได้ผลตามที่พวกเขาต้องการและทิ้งฟีเจอร์นี้ไป อย่างไรก็ตาม ด้วยประวัติศาสตร์อันยาวนานของ RRO ทั้งที่อยู่ในมือของ Sony และชุมชนการพัฒนาของเราเอง พวกเราหลายคนจึงคุ้นเคยกับความยิ่งใหญ่ที่เป็น Runtime Resource Overlay ของ Sony อยู่แล้ว และเนื่องจากมีธีมที่เข้ากันได้กับ RRO มากมายให้เลือกใช้งาน หาก Google ตัดสินใจอนุญาตให้เราติดตั้ง ธีมที่กำหนดเอง จะเปิดประตูสู่ตลาดธีมที่มีอยู่มากมายให้ผู้ใช้ได้เพลิดเพลิน
เครดิตรูปภาพคุณสมบัติ: โซนี่เดฟเวิลด์