Android Oreo เปิดตัวอินเทอร์เฟซบรรทัดคำสั่งสำหรับธีม

Android Oreo มีการรองรับอินเทอร์เฟซบรรทัดคำสั่งสำหรับธีม RRO ซึ่งบอกเป็นนัยว่าระบบปฏิบัติการจะเข้าใกล้การรองรับธีมทั้งระบบมากขึ้น

การเปิดตัว Android Oreo ทำให้ต้องใช้เวลาอย่างมากในการค้นหาสารพัดที่ซ่อนอยู่ภายในซอร์สโค้ด ที่ผ่านมาทีมวิศวกร Android ก็มี พูดคุยเกี่ยวกับการเปิดใช้งานธีมใน Android O. เรารายงานเมื่อเดือนพฤษภาคม การแสดงตัวอย่างนักพัฒนาซอฟต์แวร์ครั้งที่สองของ Android O อาจเป็นคำใบ้ของ Google ที่สนับสนุน Overlay Manager Service (OMS) และ Runtime Resource Overlay (RRO) แต่ตอนนี้เรารู้แล้วว่าเป็นเช่นนั้น Android Oreo ตอนนี้ ในทางเทคนิครองรับการกำหนดธีม OMS/RRO และยังมีอินเทอร์เฟซสำหรับการเปิดหรือปิดใช้งานธีม โดยที่คุณสามารถใช้บรรทัดคำสั่งได้

อัปเดต: Substratum ใช้คำสั่งเหล่านี้กับตัวอย่าง dev และตอนนี้กับ Oreo นับตั้งแต่มีให้ใช้งาน!


RRO และ OMS คืออะไร

RRO ได้รับการพัฒนาภายในโดย Sony สำหรับฟังก์ชันการทำงานของธีมบนกลุ่มผลิตภัณฑ์ Sony Xperia นักพัฒนาที่ตระหนักถึงความสำคัญของมันได้พยายามขยายการรองรับ ROM อื่นๆ และด้วยธีม RRO ที่เกิดขึ้นในอุปกรณ์มากมาย ไม่ใช่แค่อุปกรณ์ Sony เท่านั้น มันเข้ามาแทนที่ทรัพยากรอย่างชาญฉลาด ณ รันไทม์ของแอพ ซึ่งใช้งานง่ายซึ่งมองไม่เห็นจากตัวเลือกธีมอื่น ๆ ในขณะนั้น สิ่งนี้ได้พัฒนาเป็น OMS ซึ่งได้รับการพัฒนาภายในบริษัทโดย Sony เช่นกัน ที่มีชื่อเสียง

ผู้จัดการเลเยอร์ ใช้ธีม RRO ในตอนแรก แต่ OMS ได้รับการดัดแปลงในภายหลังเป็นสิ่งที่รู้จักกันในชื่อ Substratum และเป็นเฟรมเวิร์กของธีมที่ผู้ใช้ในฟอรัมของเราคุ้นเคยมากที่สุดในขณะนี้ ROM ในฟอรัมของเราที่มีการคอมมิต OMS หมายความว่าพวกเขาสนับสนุนกลไกการกำหนดธีมมาตรฐานของ Substratum "โหมดดั้งเดิม" ภายใน Substratum กำลังใช้ธีม RRO


Android Oreo เปิดตัวคำสั่งธีม

ดูเหมือนว่า Google ต้องการที่จะสนับสนุนธีมประเภทนี้อย่างเต็มที่ใน AOSP ซึ่งอาจมุ่งไปสู่ตัวจัดการธีมที่ระบบรองรับอย่างเต็มรูปแบบ ใน Android Gerrit นั้น Google ได้ทำการเปลี่ยนแปลงหลายอย่างในช่วงไม่กี่เดือนที่ผ่านมา (และกับ Android Oreo) ซึ่งแนะนำให้ย้ายเพื่อเปิดใช้งานเอ็นจิ้นธีมทั้งระบบ การเปลี่ยนแปลงอยู่ด้านล่าง พร้อมลิงก์ไปยังข้อผูกพันที่เกี่ยวข้อง

  • คำสั่งซ้อนทับ
  • เปิดตัว OverlayManagerService (OMS)
  • การอนุญาตใหม่ชื่อ CHANGE_OVERLAY_PACKAGES

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

แล้วทำไมเท่านั้น ในทางเทคนิค Android Oreo รองรับธีมหรือไม่ คำตอบง่ายๆ ก็คือ แม้ว่าคุณจะสามารถเรียกใช้วิธีการระบบในการติดตั้งธีมได้ แต่การทำเช่นนั้นก็พิสูจน์ได้ว่าไม่มีจุดหมาย เนื่องจากแม้ว่าคุณจะสามารถใช้อินเทอร์เฟซบรรทัดคำสั่งใหม่เพื่อจัดการธีมที่ติดตั้งได้ แต่จริงๆ แล้วคุณไม่สามารถทำได้ ติดตั้งธีมใหม่โดยไม่ต้องเข้าถึงรูท เนื่องจากธีมจำเป็นต้องเข้าไปในไดเร็กทอรีที่ถูกจำกัดจากผู้ใช้ ช่องว่าง. ด้วยการเข้าถึงรูท คุณสามารถเปิดใช้งานธีม Substratum ได้เลย ดังนั้นจึงไม่จำเป็นต้องทำด้วยวิธีใหม่ Google ยังไม่ได้รวมแอปพลิเคชันระบบสำหรับกำหนดธีมให้กับอุปกรณ์ ดังนั้นจนกว่าจะถึงเวลานั้นจะไม่มีประโยชน์ใดๆ เลยในการพยายามทำด้วยวิธีที่รวมไว้ใหม่

อินเทอร์เฟซการกำหนดธีมบรรทัดคำสั่ง

พวกเราที่ XDA ทดสอบคำสั่งบน Google Pixel ที่ใช้ Android Oreo release เราตัดสินใจทดสอบคำสั่งบางคำสั่งและใช้งานครั้งแรก

cmd overlays list

เพื่อดูโอเวอร์เลย์ที่ติดตั้งไว้ล่วงหน้าทั้งหมด เราสังเกตเห็นการมีอยู่ของ "com.google.android.theme.pixel" โดยปิดการใช้งานและเปิดใช้งาน "android.auto_generated_rro__" แทนโดยเรียกใช้คำสั่งต่อไปนี้

ดังที่เห็นได้ที่นี่ โอเวอร์เลย์มาตรฐานถูกปิดใช้งาน และโอเวอร์เลย์ที่สร้างขึ้นอัตโนมัติถูกเปิดใช้งาน รันคำสั่งของเราเพื่อดูโอเวอร์เลย์ที่ติดตั้งไว้อีกครั้ง เราจะเห็นผลลัพธ์ต่อไปนี้

ซึ่งส่งผลให้แอปพลิเคชันการตั้งค่าระบบ Android ธีมใหม่บน Google Pixel ของเรา โปรดทราบว่ารายการซ้อนทับด้านบนยังรวมถึงธีมที่ติดตั้งโดยใช้ Substratum และเราสามารถเปิด/ปิดการใช้งานเหล่านี้ได้อย่างง่ายดายเช่นกัน

ธีม auto_generated_rro

เรายังพบคำสั่งอื่นเมื่อขุดผ่านแหล่งที่มา คำสั่งมีดังนี้

cmd overlay dump --user 0

ให้ผลลัพธ์ต่อไปนี้แก่เรา

เอาท์พุต

การตั้งค่า

android.auto_generated_rro__: 0 {

mPackageName...: android.auto_generated_rro__

รหัสผู้ใช้...: 0

mTargetPackageName.: Android

mBaseCodePath...: /vendor/overlay/framework-res__auto_generated_rro.apk

mState...: STATE_ENABLED

mIsEnabled...: จริง

mIsStatic...: จริง

}

com.google.android.theme.pixel: 0 {

mPackageName...: com.google.android.theme.pixel

รหัสผู้ใช้...: 0

mTargetPackageName.: Android

mBaseCodePath...: /vendor/overlay/Pixel/PixelThemeOverlay.apk

mState...: STATE_DISABLED

mIsEnabled...: เท็จ

mIsStatic...: เท็จ

}

ภาพซ้อนทับเริ่มต้น: com.google.android.theme.pixel

แคช PackageInfo

2 แพ็คเกจ

อ่านเพิ่มเติม

ดังที่เห็นได้ว่า Google ได้ทุ่มเทความพยายามอย่างมากในการพัฒนาเอ็นจิ้นการกำหนดธีมและรวมเข้ากับซอร์ส AOSP ดูเหมือนว่าถ้าจะเพิ่มทั้งระบบ ธีมจะถูกเปิดใช้งานภายในจูนเนอร์ System UI. Google ก็มี ให้ข้อมูลสำหรับ OEMดังนั้นจึงเป็นไปได้ที่ OEM เพิ่มเติมสามารถเปิดใช้งานการสนับสนุนธีมตามเวอร์ชัน AOSP บน Android Oreo ในอนาคต

โดยรวมแล้วนี่เป็นการพัฒนาที่น่าตื่นเต้นมาก ธีมเป็นหนึ่งในหลายส่วนที่กำหนดให้ Android เป็นระบบปฏิบัติการที่ปรับแต่งได้อย่างสมบูรณ์บนโทรศัพท์ของคุณ แม้ว่าในปัจจุบันจะต้องรูทสำหรับธีมทั้งระบบก็ตาม ในอนาคตหากเปิดใช้งานให้ทำงานโดยไม่ต้องเข้าถึงรูท มันจะเป็นก้าวสำคัญในทิศทางของเสรีภาพของผู้ใช้ แน่นอนว่ามันอาจถูกล็อคไว้ใน System UI tuner มาระยะหนึ่งแล้ว (เนื่องจากธีมที่พังอาจทำให้แอปพังได้) แต่อนุญาต ผู้ใช้ยังสามารถใช้ประโยชน์จากการสนับสนุนธีมดั้งเดิมได้ตั้งแต่แรกคือส่วนเสริมที่ยิ่งใหญ่สำหรับระบบปฏิบัติการบนมือถือ ระบบ.