Nieoficjalny framework Xposed dla Androida 7.1 Nougat

Dostępny jest teraz flashowany zamek błyskawiczny, który przenosi Xposed Framework na ROMy Androida 7.1 Nougat. Zamek działa na OnePlus 3T i wielu innych telefonach!

Po wielu miesiącach oczekiwania w końcu otrzymaliśmy obsługę Xposed Framework dla ROM-ów Nougat (aczkolwiek nieoficjalnie). Dzięki utalentowanym programistom z naszych własnych forów XDA możesz teraz zainstalować Xposed Framework na ROMie Android Nougat za pomocą flashowanego zipa.

Do tej pory przyszłość Xposed na Nougacie wydawała się nieco niepewna. Rovo89 – twórca Xposed Framework – nieco ponad tydzień temu udostępnił aktualizację dotyczącą obsługi systemu Android Nougat. Rovo89 zasadniczo stwierdził, że jest jeszcze wiele do zrobienia, aby Xposed działał poprawnie na Nougacie, i że musimy po prostu uzbroić się w cierpliwość.

Na szczęście wygląda na to, że znaleźliśmy tymczasowe rozwiązanie dla tych z nas, którzy z niecierpliwością czekali na rozwiązanie tymczasowe. Zespół PurifyOS przejął moduł ART tego dewelopera wzmocnij

pracował nad (i o którym pisano wcześniej dzisiaj) i dostosowano go tak, aby można go było zainstalować na innych niestandardowych ROMach za pomocą flashowanego zipu (zamiast konieczności implementowania go podczas kompilacji ROM).

Obecnie dostępne są trzy wersje dla różnych platform, w tym Xposed SDK25 ARM64, Xposed SDK25 RAMIĘi Xposed SDK25 X86. Zespół PurifyOS przetestował nową wersję Xposed z OnePlus 3T z systemem OxygenOS opartym na systemie Android 7.1, ale powinna działać inne telefony z systemem Android Nougat, a użytkownicy już zgłaszają, że udało im się pomyślnie zainstalować go na różnych ROMach i urządzenia. Na przykład kilku użytkowników OnePlus 5 zgłosiło, że to działa (nic dziwnego, biorąc pod uwagę, że działa na OnePlus 3T w porządku), ale użytkownik korzystający z pamięci ROM opartej na AOSP dla Samsunga Galaxy S6 również poinformował, że u niego to zadziałało.

Będą pewne dziwactwa do rozwikłania i nie każdemu udało się jak dotąd sprawić, by to zadziałało, a niektórzy użytkownicy doświadczają wymuszonych zamknięć i innych osobliwości. Jednak nawet w takim przypadku możesz spróbować, jeśli czekasz na pojawienie się Xposed na Nougat od czasu wydania poprzedniej wersji systemu operacyjnego Android. Nie wszystkie istniejące moduły Xposed Framework będą działać od razu, ale według doniesień niektóre naprawdę popularne, takie jak Amplify, działają.

Pamiętaj, aby regularnie tworzyć kopie zapasowe i uważnie przeczytać wątek przed wyruszeniem w podróż, jeśli nie masz pewności, czy Twoje urządzenie lub pamięć ROM jest obsługiwana. Na koniec pamiętaj o skorzystaniu z funkcji „szukaj” przed pozostawieniem zduplikowanego pytania. Android O może być tuż za rogiem, ale jak to się mówi: "lepiej późno niż wcale." Poza tym wielu użytkowników nie będzie widzieć Androida O na swoich urządzeniach przez dłuższy czas, więc Xposed powinno być dla Ciebie niezłą gratką, dzięki której nie poczujesz się pozostawiony w tyle.


Aktualizacja: odpowiedź Rovo89

Oryginał opracowany na platformie Xposed Framework, starszy uznany programista XDA rovo89, odpowiedział na Githubie, przedstawiając swoje przemyślenia na temat tych ostatnich wydarzeń.

Z mojego doświadczenia mogę powiedzieć, że opanowanie podstaw rzeczywiście nie jest takie trudne, ale dopracowanie szczegółów zajmuje cholernie dużo czasu. To trochę jak zasada 80-20, z tą różnicą, że bardziej przypomina 95-5.

Podejście do przechwytywania, które zaprojektowałem dla poprzednich wydań, jest raczej stabilne i można je zastosować również w nowszych wydaniach. Zakładam, że większość czasu potrzebowałeś na sprawdzenie wszystkich miejsc, gdzie IsProxyMethod() I IsDirect() jest wywoływany i decydują, czy powinni rozważyć nowy modyfikator metody, czy nie (tj. użyć parametru true albo nie). Jeśli tego nie zrobiłeś, być może przeoczyłeś niektóre miejsca, w których niedawno wprowadzono takie połączenia. To samo dotyczy metod takich jak InstallStubsForMethod(), które muszą działać na oryginalnej, oryginalnej metodzie, nawet jeśli są wywoływane w celu uzyskania metody zaczepionej. Musisz sprawdzić więcej miejsc, w których może to być istotne. To wciąż kwestia kilku dni, ale jeśli tego nie zrobisz, możesz zobaczyć niejasne awarie lub nieprawidłowe zachowanie, które bardzo trudno będzie naprawić.

Poza tym przyjąłeś podejście, w którym hooki będą działać poprawnie tylko w przypadku ROM-ów, które są całkowicie skompilowane od zera. Na standardowych ROMach, a nawet na większości niestandardowych ROMach (które nie uwzględniały twojego portu podczas budowania), a także dla wszelkich aplikacji, które urządzenie mogło wcześniej skompilować. Musiałbyś więc zacząć wszystko od nowa z wyczyszczonym urządzeniem ze specjalną pamięcią ROM. Jeśli nie, optymalizacje (np. wstawianie) mogą w ogóle uniemożliwić wywołanie metody, a zatem haki nie będą działać. Najgorsze jest to, że dokładne zachowanie będzie zależeć od pamięci ROM, a nawet od sposobu, w jaki użytkownik korzysta z urządzenia (teraz, gdy aplikacje są kompilowane na podstawie profili). Moduły zawiodłyby losowo, a twórcy modułów zastanawialiby się, co zrobili źle (odpowiedź: nic). Jeśli nie wszystkie wymagania wstępne są spełnione, jest to dość zawodny interfejs API. Wyobraź sobie, że Google opublikował aktualizację, w której OnClickListener przycisku nie był czasami wywoływany, chyba że skompilowałeś ROM od zera... Dla mnie osobiście jest to duże ograniczenie.

Mówi dalej:

Publikowanie z tym flashowalnych plików ZIP nie ma w ogóle sensu, ponieważ port jest przeznaczony tylko do ponownej kompilacji ROMu od zera.

I tak jak się obawiałem, nie ma ani jednego ostrzeżenia, że ​​jest to port niekompletny, który często nie będzie w stanie wywiązać się z umowy API. 😠 To niedobrze dla programistów i użytkowników, powinni przynajmniej wiedzieć, że jest niekompletny, aby móc zdecydować, czy chcą go wspierać/używać. Nigdy nie odważyłbym się zrobić czegoś takiego bez wielkiego, grubego ostrzeżenia. Właściwie, jako że jestem raczej perfekcjonistą, w ogóle nie publikowałbym niekompletnej wersji, niezawodność jest dla mnie bardzo ważna.

Właśnie sprawdziłem mój dziennik Git i miałem gotowe podstawowe zaczepienia (jak w tym porcie) w październiku. Od tego czasu pracowałem nad usunięciem ograniczeń. Aby uczynić go bardziej niezawodnym na wstępnie skompilowanych ROM-ach, mogłem przenieść również część do rekompilacji, jednak nadal nie jest to idealne rozwiązanie. Jak wyjaśniono gdzieś powyżej, mamy teraz JIT, który pozwala nam zachować wszystkie optymalizacje, jedynie unieważniając (i ewentualnie rekompilując) metody, na które bezpośrednio wpływa przechwytywanie. Jest to dość trudne, ponieważ to coś więcej niż tylko kopiowanie i wklejanie. Dopóki tego nie zrobię, nie będę niczego publikować. 9 miesięcy na to (do tej pory) to naprawdę dużo czasu, wiem, ale hej, to mój wolny czas i np. w związku z przeprowadzką do nowe mieszkanie, przez kilka miesięcy (!) w ogóle nie mogłem pracować na Xposed, a poza tym miałem bardzo ograniczony czas.

Powinniśmy jasno powiedzieć, że te ostatnie zmiany nie są prawdziwym „Xposed”, jakie wszyscy znacie uwielbiam, ale funkcjonalnie pozwalają one teraz korzystać z niektórych modułów Xposed Framework na Androidzie Nugat. Nie będziemy Cię winić za to, że nie poczekałeś na oficjalną, stabilniejszą i bardziej kompatybilną wersję Xposed Framework dla Androida Nougat, ale chcemy wyjaśnić, że ta iteracja jest jedynie środkiem tymczasowym mającym na celu zaspokojenie potrzeb niektórych użytkowników Teraz. Prawdopodobnie nie będzie to sposób, w jaki Xposed będzie obsługiwany w przyszłości.


Pobierz nieoficjalny framework Xposed dla Nougata z forów XDA