Обяснена е рамката на Xposed за Nougat & abforce Submodule

В тази статия изследваме разликите между предстоящата версия Xposed за Nougat на rovo89 и текущата реализация, която е достъпна за Nougat.

Рамката Xposed беше – и все още е – основен начин да персонализирате вашето устройство с Android, съвместимо с почти всички устройства, което ви позволява лесно да инсталирате модули, за да променяте практически всеки детайл.

Искате ли да получите всички функции, предлагани от персонализиран ROM, без да се налага да го флашвате?GravityBox илиXTouchwiz ще направи това. Искате ли да промените определени настройки за всяко приложение, като например промяна на DPI на конкретно приложение?Настройки на приложението покрихте ли. Дано разработчиците на приложението са се сетили да добавят конкретна функция, както Google ви позволяваперсонализирайте Hangouts или Facebook, което ви позволяваизтеглете публикации в Instagram, които харесвате? Е, не е нужно, защото Xposed дава на разработчиците силата да променят почти всичко, което искат искате, било то функция за цялата система, която ще изисква персонализиран ROM или настройка за конкретен приложение.

Рамката Xposed идва с голямо предимство за разработчиците, което е лекотата на разработка (в сравнение с необходимостта да компилирате AOSP за настройки на ROM или да редактирате Smali код). Освен това носи огромно предимство за потребителите: удобство, тъй като вече не ги принуждава да намират и флашват ROM, който предоставя всяка една функция, която търсят (вместо това те могат да смесват и съчетават независими модули) в допълнение към целевия си баланс на стабилност и производителност. Също така прави приложения за настройка много по-лесно, тъй като няма нужда да се занимавате с различни подписи, което в резултат би изисквало потребителите да деинсталират оригинала версия или преминаване през определени обръчи, когато приложението проверява своя подпис (нещо, с което се занимават модифицираните клиенти на YouTube, за екземпляр).

Единственият проблем? Поради своето естество и количеството свободно време разработчикът на Xposed (нашият собствен старши признат разработчик,rovo89) има, често изостава от версиите на Android.Отне около четири месеца, за да се актуализира, за да поддържа Lollipop, и отнема около година, за да дойде в Нуга. Това не е толкова лошо, колкото може да изглежда, ако се замислите колко потребители на Android всъщност използват Nougat (около 13,5%, но имайте предвид, че ентусиастите на Android, целевата аудитория на Xposed, също е по-вероятно да използват Nougat). Въпреки това все още може да бъде доста досадно да не можете да използвате любимите си модули Xposed и да имате най-новата и най-добра версия на Android едновременно.

Тъй като изходният код на рамката Xposed е наличен (поне за стабилни, пуснати версии), разработчикътabforce реши да си изцапа ръцете и да види дали може да пренесе някои от модификациите на rovo89 към Nougat. Избирайки различен и по-прост подход, abforce по същество адаптира частта от Xposed, която всъщност прави магията, след като бъде инсталирана, и направи възможно включването й при компилиране на ваш собствен ROM (след това, появиха се други решения). Този подход може да бъде много различен тъй като пренебрегва едно от основните предимства на Xposed, което е достъпно за всеки с лекота. Всеки напредък обаче е добре дошъл и справянето с една задача с няколко глави може да бъде изгодно и да предложи ново прозрение. Основният проблем, както го виждаме, е дезинформацията около това развитие (разпространена от някои други „разработчици“ и някои блогове), както и някои от реакциите на общността. Надяваме се, че тази статия ще направи цялата картина по-ясна.


На първо място, за да разберем работата, която премина -- и все още върви -- в официалната рамка на Xposed, както и във версията на abforce, трябва да разгледаме как работи рамката. Докато самата рамка е само част от проекта, обикновено имаме предвид както рамката, така и инсталатора тъй като рамката губи много от предимствата си без универсалния инсталатор, който също включва много работа.

Силата на Xposed идва от проста концепция: всеки метод може да бъде „закачен“ (методите са малките части, които съставляват всяка програма), за да може кодът на Xposed модул да се изпълнява преди, след или вместо то. Нека вземем прост пример: да приемем, че Instagram използва метод, наречен „showMenuOptions“, когато щракнете върху бутона на менюто, и този метод обработва показването на бутоните „Отчет“ и „Споделяне“. Като създадете модул Xposed, можете да промените този метод, за да добавите допълнителен бутон за изтегляне на изображението, вместо да го споделяте, например. Модификациите могат да варират от прости настройки (напр. Списък на промените в Play Store) до основен ремонт (като напр GravityBox, който има за цел да предостави всички функции, които персонализираният ROM би имал)!

Това прави Xposed мощен, но е само част от уравнението. Другите части са гъвкавостта - или всъщност възможността да използвате Xposed на почти всяко устройство (с поддържана версия на Android) и лекота на използване. Всичко, което потребителите трябва да направят, е да вземат инсталатора, който върши своята магия и динамично коригира системата им, за да интегрира Xposed. За да приложите модул, трябва само да го инсталирате, активирате и рестартирате. Няма нужда от суетене, няма нужда да флашвате персонализиран ROM (особено когато персонализираните ROM не винаги са жизнеспособен избор), няма нужда да деинсталирате APK, за да инсталирате друг, подписан с различен подпис. Всичко, от което се нуждаете, е root (абсолютно можете да имате персонализиран ROM и това има смисъл през много време; но въпреки че Xposed може да предостави повечето от функционалностите, които може да предостави персонализиран ROM, той също отива отвъд това).

Зад тази простота обаче стои много работа:

  1. За разработчиците на модули предоставеният API трябва да е стабилен и гарантирано да работи. Рамката Xposed не може произволно да се провали с определени комбинации от ROM и/или куки (освен в изключителни случаи). С други думи, ако даден потребител има проблем, този проблем трябва или да е по вина на потребителя (за не инсталиране/разрешаване на нещо правилно) или по вина на разработчика на модула (за наличие на грешки в модул). Но трябва да е почти сигурно, че самата рамка работи по предназначение и не е източникът на грешките, които биха оставили потребителите разочаровани и разработчиците объркани.
  2. За потребителите рамката трябва да бъде лесна за инсталиране на тяхното устройство и ROM, без значение дали имат Samsung с най-новата версия на TouchWiz или Nexus с инсталирана LineageOS. Инсталаторът на Xposed обработва всичко това зад кулисите. Трябва да се вложи много работа в това, за да се тестват инсталаторът и рамката на различни устройства и ROM комбинации. Откриват се грешки, често дължащи се на различни реализации от OEM производители, и трябва да бъдат коригирани, за да се гарантира надеждност за всички потребители.
  3. Големите ревизии на Android понякога могат да доведат до големи промени, което изисква преосмисляне на части от архитектурата на рамката, за да се адаптират към тези промени. Понякога се появяват и допълнителни възможности с по-новите версии, изискващи допълнително време за по-добър продукт. Когато ART беше представен за първи път, например, Xposed деактивира определени оптимизации, така че закачането да може да работи правилно. В случая на Нуга,компилатор точно навреме (JIT). носи възможност зазапазете тези оптимизации.

Голяма част от горната работа навлиза в незначителни детайли, където по-голямата част от рамката функционира по предназначение, но несъответствията и незначителните проблеми биха го превърнали в хазартно използване за потребителите и в кошмар за поддръжка и разработка за модула разработчици. Пуснатият продукт обаче има за цел да бъде използваем от всички и без изненади. Има някои изключения, разбира се, тъй като промените на някои OEM производители изискват повече усилия за адаптиране, но те са незначителни и по-голямата част от потребителите (и разработчиците) се наслаждават на стабилен и надежден Xposed опит. Всички открити изключения се документират сясни откази от отговорност за да няма изненадани.

Имайки предвид горното, визията на rovo89 за Xposed е да бъде стабилно решение, което предоставя надежден и лесен за използване договор за потребители и разработчици. Неговата философия, въпреки че може да не сте съгласни с нея, е проста и разбираема: продуктът трябва да бъде пуснат, когато е готов да се използва по предназначение, тъй като пускането му преди това води до повече проблеми от Ползи.


Xposed ART подмодул на abforce за Nougat

Не сме склонни да наричаме работата на abforce „порт“ или „неофициален Xposed“, тъй като това е неточно и подвеждащо. Както видяхме, Xposed има два основни компонента:

  1. Ядрото на самата рамка Xposed, която управлява магията на методите за закачане.
  2. Инсталаторът на Xposed, който гарантира, че рамката е лесна за правилно инсталиране на всички устройства.

Това, което abforce направи, беше пренасянето на Marshmallow кода на rovo89 в първата част (само рамката Xposed) към Nougat, по начин, който изисква промените да бъдат изпечени, докато се компилира персонализираният ROM. В допълнение към това много второстепенни (но важни) части от рамката не са напълно адаптирани към Nougat. Като такова, поведението може да бъде непоследователно и въпреки че в повечето случаи работи (все пак незавсеки), не е надеждно. За разработчиците и потребителите на модули, разчитането на непълна и непоследователна реализация би било просто предоставяне на лош опит за всички участващи страни, с някои модули изобщо не работят или карат устройството да не се зарежда. Докато много потребители може да са добре да имат по-скоро нещо, отколкото нищо, гледната точка на разработчиците все още е напълно разбираема (особено ако имате предвид, че отказите от отговорност не спират фалшивите въпроси за поддръжка и хленченето).

(В допълнение към горните две основни точки, ние също ще очакваме допълнителни промени в окончателната, официална Xposed рамка, за да се възползваме от промените, въведени в Nougat.)

Трябва да се отбележи, че abforce свърши отлична работа, когато повечето се задоволяваха просто с говорене, но работата му е далеч от пълното изживяване на Xposed и никой разработчик или блог не твърди друго (и определено не abforce; отново имаме само уважение към всички действителни разработчици, които влагат истинска работа и усилия в това). Всъщност, както ще разгледаме малко по-късно, част от отговора на общността (било то потребители или „разработчици“) е единствената лоша част в тази верига от разработки.


Нека прекъснем преследването и да преминем направо към точката: всяка общност има лоши елементи и аспекти. С толкова голяма общност като ентусиастите на Android, лошите елементи може да изглеждат като огромна част, когато са само малка част (значителна, но все още незначителна в относително изражение). Без да го подслаждаме обаче, голяма част от реакцията на общността към разработването на Xposed за Nougat беше изключително детински, невнимателен или безотговорен.

Първият основен проблем беше снизходителното отношение, показано от мнозина относно „смъртта на Xposed“, защото отнема твърде много време, за да бъде пуснат за Nougat. Това е въпреки rovo89 актуализациииуверения, и въпреки почти точния сценарий, който се случва с Lollipop, когато беше представена първоначалната версия на ART. Добре е да спрете да използвате Xposed, но това не е да обиждате нечии способности или да атакувате други за това, че имат различна философия или не гарантират, че вашите мигащи нужди са посрещнати незабавно. Това важи в още по-голяма степен за изцяло безплатен проект, където разработчикът е изразил своята методология на разработка и причините зад нея.

Друг проблем с реакцията на общността беше неразбирането на естеството на работата на abforce, като мнозина го приветстваха като новия Xposed или го рекламираха като порт за Nougat. Основен проблем с това е, че „разработчиците“ бързат да предложат флаш версии, без да разбират (или да се интересуват) от недостатъците, тъй като няма отказ от отговорност изобщо се предлага в някои теми, като някои дори стигат дотам, че приписват abforce, а не rovo89 (който стои зад по-голямата част от работата по Xposed) и други сътрудници.

Като последна точка, смятаме, че трябва да повдигнем отново философията за развитие на rovo89. С много гласови потребители, които твърдят, че най-новите промени са с отворен код, би било от полза. Въпреки че това звучи добре на теория, е такане е толкова лесно на практика особено ако вземем предвид обяснението на rovo89:

[...] Вярвам, че простото изтласкване на текущото състояние няма да помогне на проекта. Може би ще видим "някои" издания много бързо от хора, които компилират кода, виждаме, че изглежда така работят добре и го публикуват като „тяхно пристанище“, въпреки проблемите и нещата, които трябва да направят, за които те няма да знаят на. Така че ме наречете егоист, но не бих искал да видя такова полузавършено издание.[Източник]

Което всъщност се оказа доста добра прогноза за текущата ситуация, с няколко кандидатстващи „разработчици“. промените на abforce и предлагане на флашируем ZIP файл с минимални или никакви предупреждения, непълни кредити, като всичко това изисква дарения.


Надяваме се, че тези обяснения са изяснили някои от вашите съмнения и са се справили с възможните погрешни схващания, които може да сте имали. Xposed беше невероятен проект, който достигна до огромна част от нашата общност на ентусиасти и флашхолици, а Xposed за Nougat трябва да бъде още един гигантски етап, пълен с възможности. С модули като GravityBox вече предлагайки Nougat поддръжка, завършеният проект на rovo89 ще се върне към множество опции.


Вълнувате ли се от Xposed на вашия Nougat ROM? Уведомете ни в коментарите!