Oficjalny framework Xposed dla Androida Nougat jest już dostępny

Po długim oczekiwaniu twórca Xposed Framework oficjalnie ogłosił, że projekt obsługuje teraz system Android Nougat. Zainstaluj teraz moduły Xposed!

W miarę dojrzewania ekosystemu Androida na przestrzeni lat coraz mniej użytkowników znajduje powody, dla których powinni zrootować swoje urządzenie. Istnieje rosnąca tendencja, że ​​użytkownicy decydują się pozostać na fabrycznym oprogramowaniu, albo dlatego, że uznają je za zadowalające, albo nie chcą grać w grę gra w kotka i myszkę z interfejsem API SafetyNet firmy Google. Jeśli jednak na początku 2016 roku zapytasz użytkownika, dlaczego zrootował swój telefon, być może głównym powodem była chęć zainstaluj Xposed Framework. To było ponad rok od wersji Androida 7.0 Nougat został wydany po raz pierwszy, ale długie oczekiwanie wreszcie się skończyło: oficjalny Xposed Framework dla Androida Nougat jest wreszcie dostępny.

Przez cały ostatni rok XDA Senior Recognized Developer rovo89, główny twórca Xposed Framework, zapewnił kilkaaktualizacje o postępie Xposed Framework dla Androida Nougat. Dla niektórych

czekanie było znośne głównie ze względu na ogromną liczbę dodatkowych funkcji, jakie oferuje Xposed Framework Android Marshmallow. Ale wielu innych zaczęło żyć bez Xposed na swoich urządzeniach.

Widzieliśmy przebłysk odnowionego entuzjazmu w projekcie, gdy deweloper abforce wydał plik Podmoduł ART dla AOSP 7.1.2, ale jak wskazuje nasz własny GermainZ lepiej było poczekać na oficjalny Xposed Framework release, ponieważ implementacja abforce wymagała integracji frameworka z niestandardowymi pamięciami ROM. Ponadto, ta nieoficjalna implementacja była niekompletna, co doprowadziło do niespójnego lub błędnego działania niektórych Xposed Moduły.

Chociaż abforce wykonał świetną robotę, sprawiając, że jego nieoficjalny Xposed działał na Androidzie 7.1 Nougat, jego implementacja była sprzeczna wizja rovo89 dla Xposed — że powinno to być stabilne rozwiązanie zapewniające niezawodną i łatwą w użyciu umowę dla użytkowników i programistów zarówno. Mamy przez to na myśli nie tylko to, że moduły powinny działać bez problemów dla użytkowników, ale także sposób, w jaki moduły są ustawione up powinien być spójny wśród użytkowników, aby programiści wiedzieli, czy za aplikację odpowiada moduł Xposed, czy nie rozbić się.

Nie musimy się już martwić takimi problemami jak rovo89 (po pomocy XDA Recognized Developer chcę) jest teraz gotowy do wydania oficjalnej aktualizacji Xposed Framework i instalatora kompatybilność z Androidem 7.0/7.1 Nougat. Oznacza to, że nie będziesz musiał instalować niestandardowej pamięci ROM ani bawić się flashowaniem niestabilnych wersji ciesz się Xposed — po prostu zrootuj swój telefon i zainstaluj najnowszą aplikację Xposed Instalator (link poniżej) i the Instalator Xposed wykona magię instalacji Xposed za Ciebie.

Instalator Xposed przeglądający repozytorium modułów

Niektórym może się to wydawać nieco spóźnione, zwłaszcza że pojawiła się ta wersja ponad miesiąc po wydaniu Androida 8.0 Oreo. Należy pamiętać, że bardzo niewiele urządzeń będzie miało dostęp do stabilnej wersji Androida Oreo przez wiele nadchodzących miesięcy. Android Oreo jest tylko na 0.2% wszystkich urządzeń z Androidem (w porównaniu do ~18% w Nougat) według najnowszych statystyk Google, ale wielu naszych użytkowników to ludzie, którzy uwielbiają instalować niestandardowe ROMy, aby być na bieżąco.

Dystrybucja wersji Androida od października 2017 r. Źródło: Google

Chociaż nawet jeśli zainstalujesz plik nieoficjalny port Androida 8.0 dostępne na niezliczonej liczbie urządzeń na naszych forach, wiele z tych portów nie ma codziennego statusu sterowników. Chyba że chcesz wydać setki dolarów na zupełnie nowy Google Pixel 2/2 XL, Sony Xperia XZ1/XZ1 Compactlub nadchodzące urządzenie, takie jak Huawei Mate10, prawdopodobnie będziesz w stanie wycisnąć kilka miesięcy użytkowania z Xposed Framework na Androidzie Nougat.

Jeśli to brzmi podobnie, przejdź do oficjalnego wątku na forum, aby zapoznać się z instalatorem Xposed i plikami zip, aby uruchomić go na urządzeniu z systemem Android Nougat.

Pobierz instalator Xposed v3.1.2 (załącznik)

Instalator Xposed dla Nougat 7.0 (SDK24) Pobierz

Instalator Xposed dla Nougat 7.1 (SDK25) Pobierz

Dla wielu nowych użytkowników, którzy nie są zaznajomieni z tym, do czego można używać Xposed Framework i jak to działa, mamy poniżej krótko wyjaśnię Xposed Framework, dlaczego powinieneś być podekscytowany i dlaczego prace nad nim trwały tak długo zrobił.


Po co instalować Xposed Framework?

Chcesz uzyskać niestandardowe funkcje pamięci ROM bez flashowania niestandardowej pamięci ROM? Matka wszystkich modułów Xposed do ulepszania twojej pamięci ROM, znana jako GravityBox, czy jesteś już objęty? Chcesz dostosować ustawienia wyświetlania dla poszczególnych aplikacji? Próbować Ustawienia aplikacji. Co powiesz na dostosowanie niektórych aplikacji, takich jak Spotkania? Lub modyfikując Instagram, aby było to możliwe pobierz dowolne posty, które lubisz?

Xposed daje programistom możliwość modyfikować prawie wszystko, co chcą— przeważnie przeznaczone do indywidualnych zastosowań, ale można modyfikować nawet funkcje ogólnosystemowe. Wymienione przez nas przykłady to tylko wierzchołek góry lodowej. Liczba dodatkowych funkcji, które możesz dodać lub aplikacji, które możesz modyfikować, jest niesamowita — wystarczy przeszukać oficjalne repozytorium modułów Xposed zobaczyć na własne oczy. Pamiętaj, że niektóre moduły mogą wymagać aktualizacji w celu uzyskania nowej wersji i obsługi Nougat, więc pamiętaj o sprawdzeniu ich przed zainstalowaniem ich w pamięci ROM Nougat!

Jak działają moduły Xposed?

Istotą tego jest to, że Xposed Framework umożliwia modułom „podczepić się” do metod Java dowolnej aplikacji— niezależnie od tego, czy jest to aplikacja instalowana przez użytkownika, czy aplikacja systemowa. Xposed pozwala modułom wykonywać własne metody przed, w trakcie lub zamiast oryginalne metody aplikacji docelowej.

Wyobraźmy sobie na przykład metodę stosowaną w aplikacji Gmail, która wysyła powiadomienia o nowych e-mailach. Domyślnie metoda tworzy nowe powiadomienie z przyciskami do archiwizacji/usunięcia lub odpowiedzi na wiadomość e-mail. Można podłączyć moduł Xposed do tej metody i dodać nowy przycisk, np. „oznacz jako przeczytane”. (Tak, jest już moduł do tego.)

Powyższe jest nadmiernym uproszczeniem efektu końcowego tego, co Xposed Framework umożliwia swoim modułom. Sam framework jest niezwykle złożony i sprawia, że ​​działa niemal uniwersalnie na zrootowanych urządzeniach – bez konieczności posiadania niestandardowej pamięci ROM – dlatego ukończenie Xposed dla Androida Nougat zajęło tak dużo czasu.

Dlaczego prace nad Xposed trwają tak długo?

Magia stojąca za Xposed — która pozwala modułom łączyć się z metodami innych aplikacji — wymaga głębokiej wiedzy o tym, jak Zygote i Środowisko wykonawcze Androida (Dzieła sztuki. Wymogi te już wykluczają możliwość udziału w projekcie dużej liczby osób, ale problem pogłębia fakt, że rovo89 jest głównym współtwórcą Xposed przez ostatnie 5 lat.

Dlatego też wezwania do otwartego pozyskiwania modyfikacji wprowadzonych w Xposed od czasu ostatniej publicznej wersji Xposed zostały odrzucone. To jego pomysł i on najlepiej potrafi to zrozumieć i zmodyfikować, co pozwala na dodanie większej siły roboczej do projektu na tak późnym etapie może po prostu jeszcze bardziej opóźnić projekt.

Dodatkowo, jeśli rovo89 stale aktualizował swoje źródło, on był zmartwiony że ktoś wziąłby niedokończony kod, aby zbudować półdziałający framework Xposed bez dołączonego uniwersalnego instalatora Xposed. (Dokładnie to samo miało miejsce w przypadku implementacji abforce, a wynikający z tego bałagan w różnych metodach instalacji uzasadniał wahanie rovo89.)

Dlatego najlepszą rzeczą, jaką mogliśmy zrobić, było dać rovo89 czas na pracę nad jego ulubionym projektem. Xposed nie jest jego pracą na pełen etat, ani nawet na pół etatu. To po prostu hobby, które od 5 lat uprawia na rzecz społeczności. Projekt tak złożony jak Xposed wymaga czasu na pracę, a następnie przetestowanie — czasu, którego często nie miał ze względu na inne obowiązki. Postęp był zostało dokonane w ciągu ostatniego roku, tak jak udokumentował rovo89 w kilku swoich publicznych aktualizacjach tej kwestii, aż w końcu zarówno sam Xposed Framework, jak i instalator Xposed są gotowe do wydania.

Co zrobiło rovo89, aby Xposed działał w Nougacie?

Nowe wersje Androida czasami wprowadzają zmiany w sposobie działania ART, co może wymagać przeróbki części Xposed. W systemie Android 7.0 Nougat wprowadzono kompilator Just-in-Time dla ART, który na przykład pomaga poprawić wydajność aplikacji w czasie wykonywania. Ale nieoficjalny framework Xposed autorstwa abforce po prostu wyłącza wiele optymalizacji ART, dzięki czemu przechwytywanie metod może działać poprawnie.

Optymalizacje ART w Androidzie Nougat. Źródło: Google

Natomiast implementacja rovo89 zachowuje wszystkie optymalizacje ART w Androidzie Nougat przez ponowną kompilację obiektu wywołującego metodę przy użyciu JIT i nadal mając haki metody na swoim miejscu. Oznacza to, że możesz cieszyć się zaletami modułu Xposed bez poświęcania wydajności poprzez wymuszanie wyłączania optymalizacji ART.

Aby uzyskać więcej informacji na temat tego, co zrobił rovo89, aby w końcu osiągnąć niezawodną metodę przechwytywania w Xposed dla Androida Nougat, zalecamy przeczytanie poniższego oświadczenia, które nam dostarczył.

Pełne oświadczenie rovo89

Sercem Xposed jest oczywiście jego zdolność do przechwytywania metod Java, tj. pozwalania modułom na wykonywanie kodu przed, po lub zamiast tych metod. Prawie każda inna funkcjonalność jest na tym oparta, dlatego niezwykle ważne jest, aby zawsze działała zgodnie z oczekiwaniami. Ogólna koncepcja jest taka sama, odkąd pięć lat temu wynalazłem Xposed, wymaga zmiany punktu wejścia metody. Zaczyna się to nie udać, gdy punkt wejścia nie jest sprawdzany podczas wykonywania - co faktycznie ma miejsce w przypadku niektórych optymalizacji w ART.

Jednym z przykładów jest sytuacja, gdy punkt wejścia jest już znany w czasie kompilacji, osoby wywołujące mogą bezpośrednio przejść do tego adresu bez sprawdzania go. Innym przykładem jest inline. Rozważmy ten przykład:

ART jest na tyle inteligentny, że zauważył, że metoda dwukrotnie() jest bardzo prosta i dlatego osadza logikę bezpośrednio w metodzie doSomething() w następujący sposób:

Nadal możesz podpiąć metodę dwa razy(), ale nie będzie ona już wywoływana z metody doSomething() w czasie wykonywania, podobnie jak wywołanie zwrotne. ART jest jeszcze sprytniejszy: zdaje sobie sprawę, że magia zawsze wynosi 42 i dlatego warunek nigdy nie może zostać spełniony. Zatem cała metoda doSomething() w rzeczywistości nie działa:

W poprzednich wersjach Xposed całkowicie wyłączał te optymalizacje i wymuszał ponowną kompilację wszystkiego. Wiązało się to z kilkoma wadami. Po pierwsze, programiści ART wykonują fantastyczną robotę, maksymalizując wydajność swoich rozwiązań optymalizacje, a ich wyłączenie częściowo koniecznie prowadzi do mniejszej wydajności (nigdy nie mierzyłem, ile chociaż). Sama rekompilacja nie zawsze jest łatwa i przysporzyła mi sporo bólu głowy, szczególnie na początku. Wreszcie, rekompilowane pliki zajmują miejsce, oprócz prekompilowanych plików w /system.

Nieoficjalne wersje dla Nougata również wyłączają te optymalizacje, ale nie wymuszają ponownej kompilacji (ponieważ pierwotnie port był przeznaczony do integracji z ROMem). Dlatego też czasami hooki mogą nie zostać wykonane.

Dzięki oficjalnej wersji zachowasz zoptymalizowany kod i nadal będziesz mieć niezawodne haki. Jak to działa? Cóż, Xposed rejestruje wszystkie wykonywane połączenia. Dzieje się tak podczas kompilowania plików APK lub w osobnym przebiegu dla wstępnie zoptymalizowanego kodu. Te dodatkowe dane nie zajmują dużo miejsca, ale pozwalają Xposed dowiedzieć się, gdzie mogła zostać wstawiona dana metoda. Zatem gdy metoda zostanie zaczepiona, wszystkie jej wywołujące zostaną zdeoptymalizowane, tj. ich kod nie będzie już używany. Gwarantuje to, że wywołanie zwrotne haka zostanie na pewno wywołane. A jeśli obiekt wywołujący jest intensywnie używany, zostanie po prostu ponownie skompilowany za pomocą JIT, tym razem ze świadomością, że metoda jest zajęta i dlatego niektóre optymalizacje nie mają zastosowania. Oznacza to, że efekty metod zahaczania zredukowane są do absolutnego minimum. Tak!

Teraz śmiało i wypróbuj. Upewnij się, że korzystasz z Xposed Installer 3.1.2, ponieważ ścieżka konfiguracyjna musiała zostać zmieniona, aby obsługiwać szyfrowanie oparte na plikach.

Czytaj więcej

Wniosek

Mamy nadzieję, że tak samo jak my cieszycie się z premiery Xposed dla Androida 7.X Nougat. Oczekiwanie było długie, ale nieuniknione, biorąc pod uwagę ogromną złożoność Xposed. Jeśli nadal nie wiesz, czym jest Xposed i jak działa, nie martw się. Bardzo niewiele osób (łącznie z nami) faktycznie rozumie, jak to działa. Programiści tacy jak rovo89 dokładają wszelkich starań, aby opakować swoją pracę tak naprawdę nie musisz rozumieć, co dzieje się pod maską.

Czy podoba Ci się Xposed Framework? Rozważ przekazanie darowizny na rzecz rovo89 za niesamowitą pracę, którą wykonuje. Jeśli uważasz, że masz wszystko, czego potrzeba, aby przyczynić się do projektu, sprawdź poniższą stronę GitHub rovo89.

Przekaż darowiznę na rzecz rovo89

Wesprzyj Xposed

Szukasz modułów Xposed? Sprawdź nasze podforum dotyczące modułów Xposed Framework lub pobierz aplikację XDA Labs i przeglądaj naszą kolekcję modułów Xposed.

Forum modułów Xposed

Pobierz laboratoria XDA

Postęp w Androidzie Oreo

Jeśli się zastanawiasz, oto postęp w uzyskiwaniu Xposed dla Androida Oreo:

Zacząłem już prace nad Androidem 8.0. Jest kilka nowe funkcje językowe będę musiał się temu przyjrzeć, ale ogólna koncepcja powinna nadal działać. Obejmuje to całą pracę nad unieważnianiem skompilowanego kodu wszelkich obiektów wywołujących, gdy metoda jest zaczepiona, co zajęło zdecydowanie najwięcej czasu, gdy pracowałem nad Nougatem. Jestem więc pewien, że tym razem będę znacznie szybszy. Androida 8.1nie powinno się zbytnio różnić, więc nie spodziewam się przy tym zbyt wiele dodatkowej pracy.