Substratum นำเสนอทางเลือกมากขึ้นให้กับ TouchWiz ที่ไม่ยืดหยุ่นได้อย่างไร

click fraud protection

Sungstratum จากทีม [projekt.] นำธีมทั้งหมดของ RRO-OMS มาสู่อุปกรณ์ Samsung Nougat ผ่านทาง Substratum! อ่านต่อเพื่อทราบข้อมูลเพิ่มเติม!

ธีม Android พัฒนาไปไกลมาก ตั้งแต่การแก้ไขแบบแฮ็กไปจนถึง Substratum และตอนนี้ สังข์สตราตัม. หลายปีก่อน คำว่า "ธีม" ในการสนทนาของ Android มักถูกแทนที่ด้วยคำว่า "ตัวเลือก" ซึ่งเป็นการพยักหน้า ตัวเลือกธีมของ T-Mobile ที่พบใน CyanogenMod ที่วางรากฐานที่ทำให้ Android เป็นธีม สวรรค์. ความสามารถในการปรับเปลี่ยนรูปลักษณ์ของระบบปฏิบัติการทำให้ผู้ใช้สามารถปรับแต่งได้อีกมิติหนึ่ง ทำให้พวกเขาสามารถทำการเปลี่ยนแปลงที่ทำให้อุปกรณ์ของตนมีความเป็นส่วนตัวมากขึ้น

งานดีดำเนินต่อไปในสองทิศทางที่แตกต่างกัน ตัวเลือกธีมได้พัฒนาเป็น CyanogenMod Theme Engine แต่ถึงแม้จะมีความพยายามหลายปีในการทุ่มเทให้กับทรัพยากรสำหรับการกำหนดธีม แต่ CMTE ก็ล้าสมัย เมื่อมีทางเลือกอื่นเกิดขึ้น.


RRO และเลเยอร์

รากฐานของทางเลือกหนึ่งถูกวางไว้เมื่อมีการสนับสนุนโค้ดของ Sony ในรูปแบบของกรอบงานใหม่ที่เรียกว่า การซ้อนทับทรัพยากรรันไทม์ (RRO) ได้รับการยอมรับเข้าสู่ AOSP เฟรมเวิร์กนี้ให้ความสามารถในการแทนที่ทรัพยากรแอปพลิเคชันระหว่างรันไทม์ (จึงเป็นชื่อ) "โอเวอร์เลย์" เพียงอย่างเดียวนั้นมีให้เห็นและได้รับการสนับสนุนใน Android ตั้งแต่ต้น Gingerbread (และ อาจจะเร็วกว่านั้นด้วย) ใช้เพื่อแลกเปลี่ยนทรัพยากรเพื่อให้แอปพลิเคชันทำงานเฉพาะเจาะจงเป็นหลัก อุปกรณ์. แนวทางของ Sony ใน RRO เกี่ยวข้องกับการปรับเปลี่ยนผู้จัดการสินทรัพย์ให้ยอมรับ APK ซึ่งใช้ทรัพยากรที่แมปกับทรัพยากรอื่นๆ ที่เกี่ยวข้องที่มีอยู่ในอุปกรณ์ จากนั้นทรัพยากรใหม่เหล่านี้จาก APK จะถูกซ้อนทับบนทรัพยากรพื้นฐานในขณะรันไทม์เท่านั้น ทำให้ระบบสามารถทำงานได้เหมือนกับว่าทรัพยากรใหม่เหล่านี้เป็นส่วนหนึ่งของทรัพยากรนั้นมาโดยตลอด

เฟรมเวิร์ก RRO ถูกรวมเข้ากับ AOSP ก่อนที่ Lollipop 5.0 จะเผยแพร่สู่สาธารณะ แต่บิวด์ไม่กี่รุ่นของ 5.0 มีบางส่วนของเฟรมเวิร์กเสียหายเนื่องจากการเปลี่ยนแปลงอื่น ๆ ตัวอย่างนักพัฒนาของ Android 6.0 Marshmallow เป็นรุ่นแรกที่เพิ่มในกรอบการทำงาน RRO ที่จำกัดเปิดประตูแห่งการปรับแต่งได้ในระดับสต็อก Android ดังนั้นเว้นแต่ว่า OEM จะพยายามแยกออกจากตัวเลือกธีม Android ในสต็อกอย่างแน่นอน ระดับของความสอดคล้องสามารถคงไว้ได้ในแนวทางว่าจะนำ 'ธีม' ไปใช้อย่างไร หุ่นยนต์

ในขณะที่ AOSP กำลังเล่นกับ RRO และมองหาวิธีที่ดีที่สุดในการรวมเข้าด้วยกัน ทีมนักพัฒนาก็โทรมา BitSyko ร่วมกันทำงานร่วมแรงร่วมใจเรียกว่า "เลเยอร์". เลเยอร์ขยายตามฟังก์ชัน RRO ของหุ้นใน Android 5.1 Lollipop เพื่อให้เกิดการสลับทรัพยากรที่ซับซ้อนมากขึ้น และช่วยให้สามารถควบคุมองค์ประกอบสำหรับธีมได้มากกว่าที่เป็นไปได้ด้วย RRO ของหุ้น เนื่องจากเลเยอร์สร้างขึ้นบน RRO ผู้สร้าง ROM จำเป็นต้องเพิ่มโค้ดพิเศษเพื่อเปิดใช้งานฟังก์ชันการทำงานของเลเยอร์ใน ROM ของตน เนื่องจากธีมของเลเยอร์บางอันอาจไม่สามารถใช้งานได้กับ RRO ในสต็อกใน Marshmallow

ในขณะเดียวกัน Sony ก็เดินหน้าต่อไปด้วยความพยายามของตนเองในการใช้ธีม Android มันเริ่มทำงาน OMS (บริการตัวจัดการโอเวอร์เลย์)ซึ่งเป็นไคลเอนต์สำหรับการจัดการโอเวอร์เลย์ที่จะช่วยให้ผู้ให้บริการสามารถควบคุมลำดับความสำคัญแบบไดนามิกและเปิดใช้งานและปิดใช้งานโอเวอร์เลย์ OMS กำลังถูกรวมเข้ากับ AOSP และจะเข้าสู่ Android O. นักพัฒนา XDA ที่ได้รับการยอมรับ นิโคลัสชุม สามารถยืนยันผ่านแหล่งที่มาของเขาได้ว่า Android O จะมี "การซ้อนทับแบบไดนามิก" ซึ่งเชื่อกันว่าเป็นการอ้างอิงถึง OMS

OMS ทำให้เกิดข้อขัดแย้งกับเลเยอร์ ตามปกติแล้ว ฟังก์ชันดังกล่าวอยู่ภายใต้การควบคุมของธีม เพื่อที่จะจัดการกับปัญหาที่เกิดขึ้นโดย OMS รวมถึงขยายการทำงานของเลเยอร์ BitSyko จึงร่วมมือกันอีกครั้ง (และเปลี่ยนชื่อตัวเองเป็น [โครงการ]) เพื่อสร้าง ชั้นล่าง. Substratum เป็นไคลเอ็นต์ที่มีฟังก์ชัน OMS ที่พยายามปรับการทำงานของเลเยอร์กับ OMS และยังยืมองค์ประกอบอื่นๆ จากโซลูชันการกำหนดธีมอื่นๆ ที่ผ่านมา ภาพซ้อนทับจะไม่ซ้อนทับกันเพื่อกำหนดธีมให้กับองค์ประกอบแต่ละอย่างอีกต่อไป เนื่องจากขณะนี้องค์ประกอบที่จำเป็นทั้งหมดถูกแทรกลงในภาพซ้อนทับเดียว คุณสมบัติเช่นการคอมไพล์บนอุปกรณ์อนุญาตให้ใช้ธีมได้โดยไม่จำเป็นต้องรีบูตระหว่างการเปลี่ยนแปลง อย่างมีนัยสำคัญ ผู้ใช้ปลายทางสามารถลองใช้ธีมและการทดลองได้ง่ายขึ้น Substratum ได้รับการพัฒนาอย่างแข็งขันตั้งแต่เริ่มก่อตั้ง และแสดงรายการคุณลักษณะทั้งหมดและ ฟังก์ชันที่เพิ่มเข้ามาจะไม่อยู่ในขอบเขตของบทความนี้ ดังนั้นเราจะมาพูดถึงหัวข้อที่แท้จริงของบทความนี้กัน ชิ้นส่วน.


ชั้นล่างเข้าสู่ชั้นสูง

ตามที่อธิบายไว้ในส่วนก่อนหน้า Substratum เริ่มต้นเป็นวิธีในการขยายฟังก์ชัน OMS ของสต็อก รวมถึงฟังก์ชัน RRO ของสต็อก (ผ่านเลเยอร์) Substratum มีวัตถุประสงค์เพื่อใช้ควบคู่ไปกับ ROM ที่ใช้ AOSP เนื่องจาก OEM อื่นๆ ส่วนใหญ่จะทำการเปลี่ยนแปลงที่ขัดแย้งกัน ซึ่งจะไม่อนุญาตให้ Substratum อยู่ร่วมกับการปรับเปลี่ยนบนสกิน UX ที่ได้รับการแก้ไข เช่น Samsung สำหรับ ตัวอย่าง.

ซัมซุงเองก็กำลังพัฒนาโซลูชันธีมสำหรับใช้กับอุปกรณ์ของตัวเองบน Nougat ต่างจาก Sony ตรงที่ Samsung ไม่สนใจที่จะคืนโค้ดธีมให้กับ AOSP แต่เนื่องจากโซลูชันของ Samsung ค่อนข้างพื้นฐาน AOSP จึงไม่สูญเสียอะไรมากนัก โซลูชันธีมของ Samsung ที่รวมไว้ใน Touchwiz ทำให้ปรากฏให้เห็นจริงบน Samsung Galaxy S6 แต่ดังที่ได้กล่าวไปแล้ว มันถูกจำกัดไว้ค่อนข้างในสิ่งที่จะพยายามทำให้สำเร็จ ก่อนหน้านั้น มีการทดลองอย่างจำกัดที่เริ่มต้นด้วย Galaxy Alpha แม้ว่าองค์ประกอบ UI ของระบบส่วนใหญ่จะอยู่นอกขอบเขตก็ตาม ธีมสามารถเปลี่ยนวอลเปเปอร์และไอคอนได้ เช่นเดียวกับแอพสต็อกของ Samsung บางตัว เช่น ตัวโทรออก รายชื่อติดต่อ ข้อความ และพื้นที่แจ้งเตือน เป็นต้น

ปรากฎว่ากลไกธีมของ Samsung ขยาย RRO ตามที่พบใน AOSP Samsung ยังสร้าง OMS เวอร์ชันภายในของตนเองขึ้นใหม่หลังจากขยาย RRO ดังนั้นการใช้งานทั้ง RRO และ OMS จึงแตกต่างจาก AOSP แต่น่าประหลาดใจที่มีจำนวนไม่มากนัก ซึ่งเป็นพฤติกรรมที่ผิดปกติเมื่อพิจารณาถึงความโดดเด่นและความซับซ้อนของ Touchwiz Themers ที่ใช้เรือธง Samsung รุ่นใหม่รายงานว่าสามารถติดตั้งการซ้อนทับ RRO และให้พวกเขาสร้างธีมให้กับแอปพลิเคชันบุคคลที่สาม

นี่เป็นสัญญาณที่ทีม [โครงการ] จำเป็นต้องพิจารณาการสนับสนุนอุปกรณ์ Samsung อย่างเป็นทางการบน Substratum ทีมงานแปลงโค้ดจำนวนเล็กน้อยจากส่วน RRO/Legacy ของแอป แต่แทนที่จะเป็น การร้องขอการรูทและขอให้รีบูตพวกเขาใช้ความตั้งใจเฉพาะเพื่อติดตั้งโอเวอร์เลย์ จากนั้นทีมงานจึงทำงานเพื่อให้แน่ใจว่าแอปพลิเคชันที่ได้รับผลกระทบผ่านธีมต่างๆ ถูกบังคับปิดในเบื้องหลัง เพื่อให้แน่ใจว่ามีการรีเฟรชเนื้อหาเต็มรูปแบบในการเปิดตัวครั้งถัดไป

เราถาม XDA Recognized Developer นิโคลัสชุม เพื่อให้ข้อมูลเชิงลึกเกี่ยวกับความท้าทายที่ทีมเผชิญเมื่อทำงานกับการใช้งาน RRO-OMS แบบปิดของ Samsung:

ความท้าทายที่เราเผชิญค่อนข้างคลุมเครือและไม่มีใครรู้จักสำหรับคนจำนวนมากที่ไม่มีความรู้มากนัก ทำความเข้าใจระบบธีม ไม่ว่าจะเป็นโอเพ่นซอร์สหรือโอเพ่นซอร์ส - ทุกอย่างมีการทดลองใช้ของตัวเองและ เฟสผิดพลาด ในกรณีนี้ เมื่อทำงานร่วมกับ Samsung ฉันพบปัญหามากมาย แต่ปัญหาหลักคือจุดประสงค์ของระบบไม่ได้เป็นเช่นนั้น ใช้สำหรับโอเวอร์เลย์หลังจากการติดตั้งเสร็จสิ้น - เช่น การใช้เครื่องรับกระจายเสียงด้วย “android.intent.action. PACKAGE_ADDED” - Theme Service ปฏิเสธสิ่งใดก็ตามที่ไม่ได้เป็นส่วนหนึ่งของลายเซ็นของระบบกับ Samsung เฉพาะรุ่น การอนุญาตให้บริการธีมจากการได้รับสิ่งนั้น ดังนั้นส่วนที่ยากที่สุดคือวิธีแก้ปัญหาที่เราต้องหาทาง รอบๆ.

วิธีที่เราใช้ Substratum ควบคู่ไปกับ Theme Engine ของ Samsung คือการใช้ระบบเดียวกับที่พวกเขาใช้ พวกเขาใช้ระบบ Resource Runtime Overlay ของ Sony เวอร์ชันที่ได้รับการปรับเปลี่ยนอย่างมาก ซึ่งย่อว่า RRO หรือที่รู้จักกันในชื่อเดิมในหมู่ผู้ใช้ Substratum อย่างไรก็ตาม สิ่งที่แตกต่างคือธีมของ Samsung มีสิทธิ์พิเศษที่จะซ่อนโอเวอร์เลย์เหล่านี้จากการตั้งค่า ดังนั้นคุณจึงไม่สามารถถอนการติดตั้งทีละรายการด้วยตนเองได้ เราใช้ระบบเดียวกัน แต่เราใช้การใช้งานของ AOSP/Sony ซึ่งเป็นสาเหตุที่ Samsung Themes สามารถกำหนดธีมเฟรมเวิร์กได้อย่างเต็มที่ ในขณะที่ การซ้อนทับของชั้นล่างไม่สามารถแตะเป้าหมายตัวกลางที่ไม่มี "fwk" ได้ - อย่างที่เราทุกคนรู้ดีว่าเฟรมเวิร์กเป็นเพียงแพ็คเกจ "android" ชื่อ.

ดูเหมือนแปลกที่ [projekt.] สามารถทำงานร่วมกับการนำ RRO ของ Samsung ไปใช้ได้อย่างง่ายดาย ใครก็ตามที่เคยทำงานกับอุปกรณ์ Samsung สามารถพิสูจน์ได้ว่า Samsung มักจะทำสิ่งต่างๆ ได้ยากเพียงใด เราได้สอบถามถึงบล็อกเฉพาะใดๆ ที่ทีมพบระหว่างการท่าเรือ:

มีกลไกการรักษาความปลอดภัยบางประเภทที่ส่งผลกระทบต่อผู้ใช้เพียงไม่กี่ราย โดยที่การซ้อนทับจะย้อนกลับเมื่อเริ่มต้นระบบ นี่เป็นเพราะวิธีที่ Samsung บู๊ตอุปกรณ์ เนื่องจากเราส่วนใหญ่ใช้ TouchWiz/Samsung Experience เวอร์ชัน 7.0 เราจึงใช้วิธีการใหม่ในการ "เพิ่มประสิทธิภาพแอป" (คุณจะเห็นสิ่งนี้ได้เมื่อคุณอัปเดตโทรศัพท์ของคุณ จะแสดงการแจ้งเตือนพร้อมไอคอน Android Nougat โดยบอกว่ากำลังอัปเกรดอยู่เบื้องหลัง) ดังนั้นการเพิ่มประสิทธิภาพแอปด้วยวิธีนี้จึงยกเลิกการโหลดเป้าหมายด้วย แพ็คเกจซึ่งท้ายที่สุดจะขัดขวางกระบวนการ idmapping ขณะบู๊ต (เนื่องจากไม่มีแพ็คเกจเป้าหมาย) และด้วยเหตุนี้ มีเพียงไม่กี่คนที่ประสบปัญหาการโอเวอร์เลย์ยกเลิกการโหลดหลังจาก รีบูต

คุณยังสามารถเห็นสิ่งนี้เกิดขึ้นกับธีม Samsung บางส่วนได้เช่นกัน โดยเฉพาะธีม Dark/Black ของ @envy~ - เขา ทำให้สีแถบนำทางเริ่มต้นในจอแสดงผล -> แถบการนำทางเป็นสีดำ โดยที่สีเริ่มต้นที่แท้จริงคือ สีขาว. หลังจากตั้งค่าเป็นสีดำ คุณสามารถเปิดแป้นพิมพ์ได้และแถบนำทางยังคงเป็นสีดำ สิ่งนี้จะถูกเปลี่ยนกลับแบบสุ่มเมื่อรีบูตเช่นเดียวกับในอุปกรณ์จำนวนมาก

ด้วยธีมที่กลับมาโดดเด่นอีกครั้ง Substratum มีแผนอะไรสำหรับสาขาด้านข้างอย่าง Sungstratum บ้าง?

ข้างหน้า เราจะรวมแอปเล็กๆ เข้ากับส่วนเสริมสำหรับผู้ใช้ปัจจุบันของเรา เพื่อให้พวกเขาทำได้ สามารถหยุด Samsung Theme Service ได้หากติดตั้งธีมทั้งหมดบนอุปกรณ์ของตน เอ็กซ์ดีเอ ดังนั้นผู้ที่จะใช้ธีมที่จัดรูปแบบเป็นธีม Samsung จาก XDA คุณจะสามารถใช้ส่วนเสริมเพื่อป้องกัน บริการของ Samsung จากการคืนกลับเป็นธีมสต็อกหลังจากรีบูตทุกครั้ง (เนื่องจากไม่ได้ติดตั้งจากร้านค้า Samsung อย่างเป็นทางการ) จะต้องมีรหัสนักพัฒนาซอฟต์แวร์ Samsung ฟรีจากเว็บไซต์ แต่จะรวมการดาวน์โหลดเสริม sungstratum ไว้ล่วงหน้า


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


ตรวจสอบการรวม Substratum สำหรับ Samsung Nougat ในฟอรัม Substratum ของเรา!ชั้นล่างบน GitHub