Официалната Xposed Framework за Android Nougat е тук

След дълго чакане, разработчикът на Xposed Framework официално обяви, че проектът вече поддържа Android Nougat. Инсталирайте Xposed модули сега!

Тъй като екосистемата на Android се разви през годините, все по-малко и по-малко потребители намират причини, поради които трябва да руутнат своето устройство. Има нарастваща тенденция на потребители, които избират да останат на стоковия фърмуер, или защото намират изживяването за задоволително, или защото не искат да играят игра на котка и мишка с API на SafetyNet на Google. Но ако попитате потребител в началото на 2016 г. защо руутват телефоните си, може би причината номер едно, която беше дадена, беше да могат инсталирайте Xposed Framework. Било е повече от година след Android 7.0 Nougat беше пуснат за първи път, но дългото чакане най-накрая приключи: официалната Xposed Framework за Android Nougat най-накрая е достъпна.

През изминалата година XDA старши признат разработчик rovo89, водещият разработчик на Xposed Framework, предостави няколкоактуализации

за напредъка на Xposed Framework за Android Nougat. За някои, чакането беше поносимо най-вече поради големия брой допълнителни функции, които предлага Xposed Framework Android Marshmallow. Но много други са преминали към живот без Xposed на своите устройства.

Видяхме проблясък на подновено вълнение в проекта, когато разработчикът abforce пусна an ART подмодул за AOSP 7.1.2, но както посочва нашият собствен GermainZ по-добре беше да изчакате официалната Xposed Framework освобождаване като внедряване на abforce изисква рамката да бъде интегрирана в потребителски ROM. Освен това, това неофициално внедряване беше непълно, което доведе до непоследователно или бъгове поведение с някои Xposed Модули.

Въпреки че abforce свърши страхотна работа, за да накара своя неофициален Xposed да работи на Android 7.1 Nougat, внедряването му беше против визията на rovo89 за Xposed - че трябва да бъде стабилно решение, осигуряващо надежден и лесен за използване договор за потребители и разработчици подобни. Това, което имаме предвид с това е, че не само модулите трябва да работят без проблем за потребителите, но и начинът, по който модулите са зададени up трябва да бъде последователен сред потребителите, така че разработчиците да знаят дали модул Xposed е виновен за дадено приложение катастрофа.

Вече не трябва да се тревожим за такива проблеми като rovo89 (след малко помощ от XDA Recognized Developer wanam) вече е готова да пусне официална актуализация на Xposed Framework и инсталатора – привеждане съвместимост с Android 7.0/7.1 Nougat. Това означава, че няма да се налага да инсталирате персонализиран ROM или да се забърквате с мигащи нестабилни версии, за насладете се на Xposed—просто руутнете телефона си и инсталирайте най-новото приложение Xposed Installer (с връзка по-долу) и на Xposed Installer ще направи магията да инсталира Xposed вместо вас.

Инсталатор на Xposed Преглеждане на хранилището на модули

Това може да изглежда малко късно в някои умове, особено след като идва тази версия повече от месец след пускането на Android 8.0 Oreo. Имайте предвид, че много малко устройства ще имат достъп до стабилна версия на Android Oreo за много месеци напред. Android Oreo е само на 0.2% на всички Android устройства (в сравнение с ~18% за Nougat) според най-новите статистики от Google, но много от нашите потребители са от типа, който обича да инсталира персонализирани ROM, за да остане на ръба на кървящия.

Разпространение на версията на Android от октомври 2017 г. източник: Google

Макар че дори и да инсталирате неофициален порт на Android 8.0 налични на безброй устройства в нашите форуми, много от тези портове не са ежедневен статус на драйвер. Така че освен ако не сте готови да дадете стотици долари за чисто нов Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compact, или предстоящо устройство като Huawei Mate 10, тогава вероятно ще можете да изстискате няколко месеца употреба от Xposed Framework на Android Nougat.

Ако това звучи като вас, преминете към официалната тема на форума за Xposed Installer и ципове на рамката, за да го стартирате и да работи на вашето устройство с Android Nougat.

Изтеглете Xposed Installer v3.1.2 (прикачен файл)

Xposed Installer за Nougat 7.0 (SDK24) Изтегляне

Xposed Installer за Nougat 7.1 (SDK25) Изтегляне

За много по-нови потребители, които не са толкова запознати с това за какво може да се използва Xposed Framework или как работи, ние ще обясни накратко Xposed Framework по-долу, защо трябва да се вълнувате и защо разработката на това отне толкова време, колкото Направих.


Защо да инсталирате Xposed Framework?

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

Xposed дава възможност на разработчиците да променят почти всичко, което искат—предимно насочени към отделни приложения, но дори функциите за цялата система могат да бъдат модифицирани. Примерите, които изброихме, са само върхът на айсберга. Броят на допълнителните функции, които можете да добавите, или приложенията, които можете да модифицирате, е невероятен - просто потърсете в официално хранилище на Xposed Module за да видите сами. Имайте предвид, че може да се наложи някои модули да бъдат актуализирани за тази нова версия и за поддръжка на Nougat, така че не забравяйте да проверите, преди да ги инсталирате на вашия Nougat ROM!

Как работят модулите Xposed?

Същността на това е, че Xposed Framework позволява модули да "закачане" в методите на Java на всяко приложение— било то инсталирано от потребителя или системно приложение. Xposed позволява на модулите да изпълняват свои собствени методи преди, по време или на мястото на оригиналните методи на целевото приложение.

Например, представете си метод, използван в приложението Gmail, който публикува известия за нови имейли. По подразбиране методът създава ново известие с бутони за архивиране/изтриване или отговор на имейла. Модул Xposed може да бъде направен така, че да се свърже с този метод и да добави нов бутон като „маркиране като прочетено“. (Да, има вече има модул точно за това.)

Горното е прекалено опростяване на крайния резултат от това, което Xposed Framework позволява на своите модули да правят. Самата рамка е изключително сложна и я кара да работи почти универсално на руутнати устройства – без нужда от персонализиран ROM – е причината завършването на Xposed за Android Nougat да отне толкова много време.

Защо разработката на Xposed отнема толкова време?

Магията зад Xposed – това, което позволява на модулите да се свързват с методи на други приложения – изисква задълбочени познания за това как Zygote и Android Runtime (ART) работи. Тези изисквания вече изключват възможността голям брой хора да допринесат за проекта, но проблемът се изостря от факта, че rovo89 е основният участник в Xposed през последните 5 години.

Ето защо призивите за отворен код на неговите модификации, направени в Xposed след последното публично издание на Xposed, бяха отхвърлени. Това е негово въображение и той е най-добрият в разбирането и модифицирането му, така че добавянето на повече работна сила към проекта на толкова късен етап може просто да забави проекта допълнително.

Плюс това, ако rovo89 непрекъснато актуализира източника си, той беше притеснен че някой би взел незавършения код, за да изгради полуфункциониращ Xposed Framework без универсалния Xposed Installer, който да го придружава. (Това точно нещо се случи така или иначе с внедряването на abforce и произтичащата бъркотия от различни методи за инсталиране оправда колебанието на rovo89.)

По този начин, най-доброто, което можехме да направим, беше да дадем време на rovo89 да работи върху неговия любим проект. Xposed не е неговата пълна или дори почасова работа. Това е просто хоби, което той прави в полза на общността в продължение на 5 години. Проект, толкова сложен като Xposed, изисква време за работа и след това за тестване – време, което той често не разполагаше поради другите си задължения. Напредък беше направени през изминалата година, точно както rovo89 документира в няколко от своите публични актуализации по въпроса, докато най-накрая самата Xposed Framework и Xposed Installer са готови за пускане.

Какво направи rovo89, за да накара Xposed да работи в Nougat?

Новите версии на Android понякога внасят промени в начина, по който работи ART, което може да наложи части от Xposed да бъдат преработени. Android 7.0 Nougat представи компилатор Just-in-Time за ART, за да помогне например за подобряване на изпълнението на приложенията по време на изпълнение. Но неофициалната Xposed Framework от abforce просто деактивира много ART оптимизации, така че закачането на метода да може да работи правилно.

ART оптимизации в Android Nougat. източник: Google

За разлика от това, изпълнението на rovo89 запазва всички ART оптимизации в Android Nougat чрез прекомпилиране на извикващия метод на метод с помощта на JIT и все още наличието на куките на метода на място. Това означава, че можете да се насладите на предимствата на Xposed модул, без да жертвате производителността, като принудително деактивирате ART оптимизациите.

За повече подробности какво направи rovo89, за да постигне най-накрая надежден метод за закачане в Xposed за Android Nougat, ви препоръчваме да прочетете изявлението по-долу, което той ни предостави.

Пълно изявление от rovo89

Ядрото на Xposed очевидно е способността му да закача Java методи, т.е. позволява на модулите да изпълняват код преди, след или вместо тези методи. Почти всяка друга функционалност се основава на това, така че е изключително важно винаги да работи според очакванията. Общата концепция е същата, откакто измислих Xposed преди пет години, тя изисква промяна на входната точка на метода. Това започва да се проваля, когато входната точка не е проверена по време на изпълнение - което всъщност е случаят с някои от оптимизациите в ART.

Един пример е, когато входната точка вече е известна по време на компилиране, тогава повикващите могат директно да прескочат до този адрес, без да го търсят. Друг пример е вграждането. Помислете за този пример:

ART е достатъчно умен, за да забележи, че методът two() е много прост и следователно вгражда логиката направо в метода doSomething() по следния начин:

Все още можете да закачите метода Two(), но той вече няма да бъде извикан от doSomething() по време на изпълнение, както и вашето обратно извикване. ART е още по-умен: той осъзнава, че магията винаги е 42 и следователно условието никога не може да бъде изпълнено. Така че целият метод doSomething() всъщност е без операция:

В предишни версии Xposed използваше за пълно деактивиране на тези оптимизации и принудително повторно компилиране на всичко. Това дойде с няколко недостатъка. На първо място, разработчиците на ART вършат фантастична работа за максимизиране на производителността с техните оптимизации и деактивирането им частично непременно води до по-ниска производителност (никога не съм измервал колко все пак). След това самото прекомпилиране не винаги е лесно и ми създаваше много главоболия, особено в началото. И накрая, прекомпилираните файлове заемат място в допълнение към предварително компилираните файлове в /system.

Неофициалните версии за Nougat също деактивират тези оптимизации, но не налагат повторното компилиране (тъй като портът първоначално е направен да бъде интегриран в ROM). Следователно куките може да не се изпълняват понякога.

С официалната версия ще запазите оптимизирания код и ще имате надеждни куки. Как става това? Е, Xposed записва всички обаждания, които са направени. Това се случва, докато APK файловете се компилират, или в отделен пропуск за предварително оптимизиран код. Тези допълнителни данни не заемат много място, но позволяват на Xposed да открие къде може да е бил вграден определен метод. Така че, когато даден метод е закачен, всичките му извикващи се ще бъдат деоптимизирани, т.е. техният код няма да се използва повече. Това гарантира, че обратното извикване на куката определено ще бъде извикано. И ако извикващият се използва много, той просто ще бъде прекомпилиран с JIT, този път със знанието, че методът е закачен и следователно някои от оптимизациите не се прилагат. Това означава, че ефектите от методите за закачане са сведени до минимум. Ура!

Сега давайте напред и го изпробвайте. Уверете се, че използвате Xposed Installer 3.1.2, тъй като конфигурационният път трябваше да бъде променен, за да поддържа File Based Encryption.

Прочетете още

Заключение

Надяваме се, че сте толкова развълнувани, колкото и ние, относно пускането на Xposed за Android 7.X Nougat. Чакането беше дълго, но неизбежно предвид пълната сложност на Xposed. Ако все още сте объркани какво е Xposed или как работи, не се притеснявайте. Много малко хора (включително ние) всъщност разбират как работи. Разработчици като rovo89 правят всичко възможно да опаковат работата си, така че не е нужно наистина да разбирате какво се случва под капака.

Харесвате ли Xposed Framework? Обмислете да дарите на rovo89 за страхотната работа, която върши. Ако смятате, че имате всичко необходимо, за да допринесете за проекта, вижте страницата GitHub на rovo89 по-долу.

Дарете на rovo89

Допринесете за Xposed

Търсите модули Xposed? Разгледайте нашия подфорум за Xposed Framework Module или изтеглете приложението XDA Labs и разгледайте нашата колекция от модули Xposed.

Форум за модули Xposed

Изтеглете XDA Labs

Напредък на Android Oreo

В случай, че се чудите, ето какъв е напредъкът при получаване на Xposed за Android Oreo:

Вече започнах работа с Android 8.0. Има няколко нови езикови функции това ще трябва да разгледам, но общата концепция все пак трябва да работи. Това включва цялата работа по обезсилване на компилиран код на всички извикващи, когато даден метод е закачен, което отне най-много време, когато работех върху Nougat. Така че наистина съм уверен, че този път ще бъда много по-бърз. Android 8.1не трябва да се различава много, така че не очаквам много допълнителна работа за него.