Xposed Framework สำหรับ Nougat & abforce Submodule อธิบายแล้ว

ในบทความนี้ เราจะสำรวจความแตกต่างระหว่าง Xposed สำหรับ Nougat ที่กำลังจะมาถึงของ rovo89 และการใช้งานปัจจุบันที่พร้อมใช้งานสำหรับ Nougat

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

ต้องการรับคุณสมบัติทั้งหมดจาก ROM แบบกำหนดเองโดยไม่ต้องแฟลชหรือไม่?GravityBox หรือXTouchwiz จะทำอย่างนั้น ต้องการปรับแต่งการตั้งค่าบางอย่างตามแอป เช่น การเปลี่ยน DPI ของแอปใดแอปหนึ่งหรือไม่การตั้งค่าแอพ คุณได้ครอบคลุมแล้ว หวังว่านักพัฒนาแอปพลิเคชันจะเพิ่มฟีเจอร์เฉพาะ เช่น Google ที่ให้คุณปรับแต่งแฮงเอาท์ หรือ Facebook อนุญาตให้คุณดาวน์โหลดโพสต์ Instagram ที่คุณชอบ? คุณไม่จำเป็นต้องทำเช่นนั้น เพราะ Xposed ให้พลังแก่นักพัฒนาในการปรับเปลี่ยนอะไรก็ได้ที่พวกเขาอยากได้ ต้องการ ไม่ว่าจะเป็นคุณสมบัติทั้งระบบที่ต้องใช้ ROM แบบกำหนดเองหรือปรับแต่งเฉพาะบางอย่าง แอปพลิเคชัน.

กรอบงาน Xposed มาพร้อมกับข้อได้เปรียบที่สำคัญสำหรับนักพัฒนา ซึ่งก็คือความง่ายในการพัฒนา (เมื่อเทียบกับการต้องคอมไพล์ AOSP สำหรับการปรับแต่ง ROM หรือต้องแก้ไขโค้ด Smali) นอกจากนี้ยังนำมาซึ่งข้อได้เปรียบอย่างมากสำหรับผู้ใช้:

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

ปัญหาเดียว? เนื่องจากลักษณะและจำนวนเวลาว่างของนักพัฒนา Xposed (นักพัฒนาที่ได้รับการยอมรับอาวุโสของเราเองโรโว89) มักจะล่าช้ากว่าการเปิดตัว Androidใช้เวลาประมาณสี่เดือนในการอัปเดตเพื่อรองรับ Lollipopและใช้เวลาประมาณหนึ่งปีกว่าจะมาถึงนูกัต นี่ไม่ได้แย่อย่างที่คิดถ้าคุณลองคิดดู จริงๆ แล้วมีผู้ใช้ Android กี่คนบน Nougat (ประมาณ 13.5%แม้ว่าผู้ที่ชื่นชอบ Android ซึ่งเป็นกลุ่มเป้าหมายของ Xposed ก็มีแนวโน้มที่จะใช้งาน Nougat มากกว่าเช่นกัน) อย่างไรก็ตาม อาจเป็นเรื่องที่น่ารำคาญทีเดียวที่จะไม่สามารถใช้โมดูล Xposed ที่คุณชื่นชอบและมี Android เวอร์ชันล่าสุดและยิ่งใหญ่ที่สุดในเวลาเดียวกันได้

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


ก่อนอื่น เพื่อที่จะเข้าใจงานที่ดำเนินไป -- และยังคงดำเนินต่อไป -- ในกรอบงาน Xposed อย่างเป็นทางการ รวมถึงเวอร์ชันของ abforce เราจำเป็นต้องดูว่ากรอบงานทำงานอย่างไร ในขณะที่กรอบนั้นเองนั้น เพียงส่วนหนึ่งของโครงการ, โดยปกติเราหมายถึงทั้งเฟรมเวิร์กและตัวติดตั้ง เนื่องจากเฟรมเวิร์กสูญเสียข้อดีหลายประการหากไม่มีตัวติดตั้งสากล ซึ่งก็มีงานจำนวนมากเช่นกัน

พลังของ Xposed มาจากแนวคิดที่เรียบง่าย: วิธีการใดๆ ก็สามารถ "ติดงอมแงม" ได้ (วิธีการมีขนาดเล็ก) ชิ้นส่วนที่ประกอบเป็นโปรแกรมใดๆ) เพื่อให้โค้ดของโมดูล Xposed ดำเนินการก่อน หลัง หรือแทน มัน. ยกตัวอย่างง่ายๆ: สมมติว่า Instagram ใช้วิธีการที่เรียกว่า "showMenuOptions" เมื่อคุณคลิกปุ่มเมนู และวิธีการนั้นจัดการแสดงปุ่ม "รายงาน" และ "แชร์" ให้คุณเห็น ด้วยการสร้างโมดูล Xposed คุณสามารถแก้ไขวิธีการนั้นเพื่อเพิ่มปุ่มเพิ่มเติมเพื่อดาวน์โหลดรูปภาพแทนการแชร์ เป็นต้น การแก้ไขอาจมีตั้งแต่การปรับแต่งง่ายๆ (เช่น บันทึกการเปลี่ยนแปลงของ Play Store) ไปจนถึงการยกเครื่องครั้งใหญ่ (เช่น GravityBoxซึ่งมีจุดมุ่งหมายเพื่อให้คุณสมบัติทั้งหมดที่ ROM แบบกำหนดเองจะมี)!

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

เบื้องหลังความเรียบง่ายนี้มีการทำงานหลายอย่าง:

  1. สำหรับนักพัฒนาโมดูล API ที่ให้มาจะต้องมีความเสถียรและรับประกันว่าจะใช้งานได้ กรอบงาน Xposed ไม่สามารถสุ่มล้มเหลวด้วย ROM และ/หรือชุดค่าผสมของ hook บางอย่าง (ยกเว้นในกรณีพิเศษ) กล่าวอีกนัยหนึ่ง หากผู้ใช้กำลังประสบปัญหา ปัญหานั้นควรเป็นความผิดของผู้ใช้ (ไม่ใช่ การติดตั้ง/เปิดใช้งานบางอย่างอย่างถูกต้อง) หรือความผิดของผู้พัฒนาโมดูล (เนื่องจากมีข้อบกพร่องในไฟล์ โมดูล). แต่เกือบจะแน่ใจว่าเฟรมเวิร์กนั้นทำงานได้ตามที่ตั้งใจไว้ และไม่ใช่สาเหตุของข้อผิดพลาดที่จะทำให้ผู้ใช้หงุดหงิดและนักพัฒนาสับสน
  2. สำหรับผู้ใช้ เฟรมเวิร์กจะต้องติดตั้งได้ง่ายบนอุปกรณ์และ ROMไม่ว่าพวกเขาจะมี Samsung ที่ใช้ TouchWiz เวอร์ชันล่าสุดหรือ Nexus ที่ติดตั้ง LineageOS ก็ตาม ตัวติดตั้ง Xposed จัดการทุกสิ่งเบื้องหลัง ต้องมีการทำงานจำนวนมากในการทดสอบตัวติดตั้งและเฟรมเวิร์กบนอุปกรณ์ที่หลากหลายและการผสมผสาน ROM พบข้อผิดพลาด ซึ่งมักเกิดจากการใช้งานที่แตกต่างกันโดย OEM และต้องได้รับการแก้ไขเพื่อให้มั่นใจถึงความน่าเชื่อถือสำหรับผู้ใช้ทุกคน
  3. การแก้ไข Android ที่สำคัญบางครั้งอาจนำมาซึ่งการเปลี่ยนแปลงที่สำคัญ ซึ่งจำเป็นต้องคิดใหม่บางส่วนของสถาปัตยกรรมของเฟรมเวิร์กเพื่อปรับให้เข้ากับการเปลี่ยนแปลงเหล่านั้น บางครั้ง โอกาสเพิ่มเติมก็ปรากฏให้เห็นในเวอร์ชั่นใหม่ ซึ่งต้องใช้เวลาเพิ่มเติมเพื่อให้ได้ผลิตภัณฑ์ที่ดีกว่า เมื่อ ART เปิดตัวครั้งแรก เช่น การให้ Xposed ปิดการใช้งานการปรับให้เหมาะสมบางอย่างเพื่อให้การเชื่อมต่อสามารถทำงานได้อย่างถูกต้อง ในกรณีของ Nougat นั้นคอมไพเลอร์ทันเวลา (JIT) นำมาซึ่งโอกาสคงการเพิ่มประสิทธิภาพเหล่านั้นไว้.

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

จากที่กล่าวมาข้างต้น วิสัยทัศน์ของ rovo89 สำหรับ Xposed คือการเป็นโซลูชั่นที่มีความเสถียรซึ่งมอบสัญญาที่เชื่อถือได้และใช้งานง่ายสำหรับผู้ใช้และนักพัฒนา ปรัชญาของเขาแม้ว่าคุณอาจไม่เห็นด้วย แต่ก็เรียบง่ายและเข้าใจได้: ผลิตภัณฑ์ควรจะเป็นเช่นนั้น ปล่อยเมื่อพร้อมใช้ตามที่ตั้งใจไว้ เพราะปล่อยก่อน ย่อมเกิดปัญหามากกว่า ประโยชน์.


โมดูลย่อย Xposed ART ของ abforce สำหรับ Nougat

เราไม่เต็มใจที่จะเรียกงานของ abforce ว่า "ท่าเรือ" หรือ "Xposed อย่างไม่เป็นทางการ" เนื่องจากเป็นสิ่งที่ไม่ถูกต้องและทำให้เข้าใจผิด ดังที่เราได้เห็นแล้วว่า Xposed มีองค์ประกอบหลักสองประการ:

  1. แกนหลักของเฟรมเวิร์ก Xposed ซึ่งจัดการความมหัศจรรย์ของวิธีการเชื่อมต่อ
  2. ตัวติดตั้ง Xposed ซึ่งช่วยให้มั่นใจว่าเฟรมเวิร์กนั้นติดตั้งได้ง่ายบนอุปกรณ์ทั้งหมดอย่างถูกต้อง

สิ่งที่มีผลบังคับคือโค้ด Marshmallow ของพอร์ต rovo89 ในส่วนแรก (เฟรมเวิร์ก Xposed เท่านั้น) ไปยัง Nougat ในลักษณะที่จะต้องมีการอบการเปลี่ยนแปลงในขณะที่รวบรวม ROM แบบกำหนดเอง นอกจากนั้น ส่วนเล็กๆ น้อยๆ (แต่สำคัญ) ของเฟรมเวิร์กยังไม่ได้รับการปรับให้เข้ากับ Nougat อย่างสมบูรณ์ ด้วยเหตุนี้ พฤติกรรมอาจไม่สอดคล้องกันและแม้ว่าจะได้ผลเป็นส่วนใหญ่ (แต่ ไม่สำหรับทุกคน) มันไม่น่าเชื่อถือ สำหรับนักพัฒนาโมดูลและผู้ใช้ การพึ่งพาการใช้งานที่ไม่สมบูรณ์และไม่สอดคล้องกันจะเป็นเพียง มอบประสบการณ์ที่ไม่ดีแก่ทุกฝ่ายที่เกี่ยวข้อง, กับ บางโมดูลไม่ทำงานเลยหรือทำให้อุปกรณ์ไม่สามารถบู๊ตได้. ในขณะที่ผู้ใช้หลายคนอาจจะโอเคกับการมี บางสิ่งบางอย่างมากกว่าไม่มีอะไรเลยมุมมองของนักพัฒนายังคงเข้าใจได้อย่างสมบูรณ์ (โดยเฉพาะอย่างยิ่งหากคุณทราบว่าข้อจำกัดความรับผิดชอบไม่ได้หยุดคำถามสนับสนุนและการบ่นที่หลอกลวง)

(นอกเหนือจากสองประเด็นสำคัญข้างต้นแล้ว เรายังคาดหวังว่าจะมีการเปลี่ยนแปลงเพิ่มเติมในเฟรมเวิร์ก Xposed สุดท้ายอย่างเป็นทางการ เพื่อใช้ประโยชน์จากการเปลี่ยนแปลงที่นำมาใช้ใน Nougat)

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


มาตัดการไล่ล่าและตรงประเด็น: ชุมชนใดก็ตามมีองค์ประกอบและแง่มุมที่ไม่ดี ด้วยชุมชนที่ใหญ่พอ ๆ กับผู้ที่ชื่นชอบ Android องค์ประกอบที่ไม่ดีอาจดูเหมือนเป็นส่วนใหญ่เมื่อเป็นเพียงส่วนเล็ก ๆ (ขนาดใหญ่ แต่ยังถือว่าเล็กน้อยในแง่สัมพัทธ์) หากไม่มีการเคลือบน้ำตาล การตอบสนองของชุมชนจำนวนมากต่อการพัฒนา Xposed สำหรับ Nougat นั้นเป็นแบบเด็กมาก ขาดความเอาใจใส่หรือขาดความรับผิดชอบ

ประเด็นหลักประเด็นแรกคือทัศนคติที่เหยียดหยามที่หลายคนแสดงเกี่ยวกับ "การตายของ Xposed" เนื่องจากใช้เวลานานเกินไปกว่าจะเผยแพร่สำหรับ Nougat แม้ว่าจะเป็นของ rovo89 ก็ตาม อัปเดตและการประกันและถึงแม้จะมีสถานการณ์ที่เกิดขึ้นกับ Lollipop เมื่อมีการเปิดตัว ART เวอร์ชันเริ่มต้นก็ตาม เป็นเรื่องปกติที่จะหยุดใช้ Xposed แต่ต้องไม่ดูถูกความสามารถของใครๆ หรือโจมตีผู้อื่นที่มีหลักปรัชญาที่แตกต่าง หรือไม่รับประกันว่าความต้องการของคุณจะถูกสนองตอบในทันที นี่เป็นเรื่องจริงมากยิ่งขึ้นสำหรับโปรเจ็กต์ที่ไม่มีค่าใช้จ่ายใด ๆ โดยที่นักพัฒนาได้แสดงวิธีการพัฒนาและเหตุผลเบื้องหลังของมัน

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

ในประเด็นสุดท้าย เรารู้สึกว่าเราควรนำปรัชญาการพัฒนาของ rovo89 ขึ้นมาอีกครั้ง โดยมีผู้ใช้แกนนำหลายคนอ้างว่าการมีการเปลี่ยนแปลงล่าสุดเป็นโอเพ่นซอร์สจะเป็นประโยชน์ แม้ว่าสิ่งนี้จะฟังดูดีในทางทฤษฎี แต่ก็เป็นเช่นนั้นไม่ใช่เรื่องง่ายในทางปฏิบัติ โดยเฉพาะอย่างยิ่งถ้าเราพิจารณาคำอธิบายของ rovo89:

[...] ฉันเชื่อว่าการผลักดันสถานะปัจจุบันออกไปจะไม่ช่วยโครงการได้ เราอาจจะได้เห็น "บางส่วน" เผยแพร่อย่างรวดเร็วโดยผู้ที่คอมไพล์โค้ด ซึ่งดูเหมือนว่าจะเป็นเช่นนั้น ทำงานได้ดีและเผยแพร่เป็น "พอร์ตของพวกเขา" แม้ว่าพวกเขาจะมีปัญหาและสิ่งที่ต้องทำโดยที่พวกเขาไม่รู้ก็ตาม ของ. เรียกฉันว่าเห็นแก่ตัวก็ได้ แต่ฉันไม่อยากเห็นผลงานที่จบเพียงครึ่งเดียวแบบนี้[แหล่งที่มา]

ซึ่งได้พิสูจน์แล้วว่าเป็นการทำนายสถานการณ์ปัจจุบันได้ค่อนข้างดี โดยมี "นักพัฒนา" หลายคนสมัครใช้งาน การเปลี่ยนแปลงของ abforce และการนำเสนอ ZIP แบบ flashable ที่มีการเตือนน้อยที่สุดหรือไม่มีเลย เครดิตที่ไม่สมบูรณ์ ทั้งหมดนี้ในขณะที่ขอ การบริจาค


เราหวังว่าคำอธิบายเหล่านี้จะช่วยคลายข้อสงสัยของคุณ และแก้ไขความเข้าใจผิดที่อาจเกิดขึ้นได้ Xposed เป็นโปรเจ็กต์ที่น่าทึ่งที่เข้าถึงผู้คนจำนวนมากที่กระตือรือร้นและชุมชน Flashaholic ของเรา และ Xposed สำหรับ Nougat น่าจะเป็นอีกหนึ่งเหตุการณ์สำคัญที่เต็มไปด้วยโอกาส ด้วยโมดูลเช่น GravityBox ให้การสนับสนุน Nougat แล้ว โปรเจ็กต์ที่เสร็จสิ้นแล้วของ rovo89 จะกลับมามีตัวเลือกมากมาย


คุณตื่นเต้นกับ Xposed บน Nougat ROM ของคุณหรือไม่? แจ้งให้เราทราบในความคิดเห็น!