Oficjalna platforma Xposed dla Androida Nougat jest już dostępna - Pobierz teraz swoje ulubione moduły!

W miarę dojrzewania ekosystemu Androida z biegiem lat coraz mniej użytkowników znajduje powody, dla których powinni zrootować swoje urządzenie. Rosnąca tendencja użytkowników decyduje się pozostać na standardowym oprogramowaniu, ponieważ albo uważają, że doświadczenie jest zadowalające, albo nie chcą grać w kotka i myszkę z interfejsem API SafetyNet Google. Ale jeśli zapytałeś użytkownika na początku 2016 r., Dlaczego zrootował swoje telefony, być może podał jeden z głównych powodów, dla których mógł zainstalować Xposed Framework. Minął ponad rok, odkąd Android 7.0 Nougat został wydany po raz pierwszy, ale długo już minęło: oficjalne Xposed Framework dla Androida Nougat jest już dostępne.

W ciągu ostatniego roku Senior Recognized Developer rovo89, główny programista Xposed Framework, przedstawił kilka aktualizacji na temat postępów Xposed Framework dla Androida Nougat. Dla niektórych oczekiwanie było tolerowane głównie ze względu na dużą liczbę dodatkowych funkcji, które Xposed Framework oferuje w systemie Android Marshmallow. Ale wielu innych przeszło do życia bez Xposed na swoich urządzeniach.

Widzieliśmy przebłysk nowego podekscytowania w projekcie, gdy programista wymusił wydanie podmodułu ART dla AOSP 7.1.2, ale jak nasz własny GermainZ zwraca uwagę, że lepiej było czekać na oficjalne wydanie Xposed Framework, ponieważ wdrożenie siły wymagało, aby środowisko było zintegrowane z niestandardowymi pamięciami ROM. Co więcej, ta nieoficjalna implementacja była niepełna, co prowadziło do niespójnego lub błędnego zachowania w przypadku niektórych modułów Xposed.

Chociaż abforce wykonał świetną robotę, starając się, aby jego nieoficjalny Xposed działał na Androidzie 7.1 Nougat, jego implementacja była sprzeczna z wizją rovo89 dotyczącą Xposed - że powinno to być stabilne rozwiązanie zapewniające niezawodną i łatwą w użyciu umowę dla użytkowników i programistów. Rozumiemy przez to, że moduły powinny nie tylko działać bezproblemowo dla użytkowników, ale sposób ich konfiguracji powinien być spójny między użytkownikami, aby programiści wiedzieli, czy winny jest moduł Xposed.

Nie musimy się już martwić takimi problemami, jak rovo89 (po pomocy Recognized Developer wanam) jest teraz gotowy do wydania oficjalnej aktualizacji Xposed Framework i instalatora - zapewniając zgodność z Androidem 7.0 / 7.1 Nougat . Oznacza to, że nie będziesz musiał instalować niestandardowej pamięci ROM ani bawić się w flashowanie niestabilnych wersji, aby cieszyć się Xposed - po prostu zrootuj swój telefon i zainstaluj najnowszą aplikację Xposed Installer (link poniżej), a Xposed Installer wykona magię instalacji Xposed dla ciebie

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

W niektórych umysłach może się to wydawać nieco spóźnione, zwłaszcza że ta wersja pojawi się ponad miesiąc po wydaniu Androida 8.0 Oreo. Pamiętaj, że bardzo niewiele urządzeń będzie miało dostęp do stabilnej wersji Androida Oreo przez wiele miesięcy. Według najnowszych statystyk Google Android Oreo znajduje się tylko na 0, 2% wszystkich urządzeń z Androidem (w porównaniu z ~ 18% na Nougat), ale wielu naszych użytkowników lubi instalowanie niestandardowych ROM-ów, aby pozostać na czele.

Dystrybucja wersji Androida na październik 2017 r. Źródło: Google

Chociaż nawet jeśli zainstalujesz nieoficjalny port Androida 8.0 dostępny na niezliczonej liczbie urządzeń na naszych forach, wiele z tych portów nie ma codziennego statusu sterownika. Więc jeśli nie chcesz wydać setek dolarów na zupełnie nowy Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact lub nadchodzące urządzenie, takie jak Huawei Mate 10, to prawdopodobnie będziesz w stanie wycisnąć kilka miesięcy użytkowania poza Xposed Framework na Androida Nougat.

Jeśli to brzmi jak ty, przejdź do oficjalnego wątku na forum dla Xposed Instalatora i suwaków frameworka, aby uruchomić go na urządzeniu z Androidem Nougat.

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

Xposed Instalator dla Nougat 7.0 (SDK24) Pobieranie

Xposed Instalator dla Nougat 7.1 (SDK25) Pobieranie

Dla wielu nowszych użytkowników, którzy nie są tak dobrze zaznajomieni z tym, do czego może być używany Xposed Framework, jak on działa, wyjaśnimy krótko Xposed Framework poniżej, dlaczego powinieneś być podekscytowany i dlaczego rozwój tego zajął tak długo, jak długo .


Po co instalować Xposed Framework?

Chcesz uzyskać niestandardowe funkcje pamięci ROM bez flashowania niestandardowej pamięci ROM? Matka wszystkich Xposed Modułów do podkręcania ROM, znana jako GravityBox, ma cię w swoim zasięgu. Chcesz dostosować ustawienia wyświetlania dla poszczególnych aplikacji? Wypróbuj Ustawienia aplikacji. Co powiesz na dostosowanie niektórych aplikacji, takich jak Hangouts? Lub modyfikujesz Instagram, abyś mógł pobierać dowolne posty?

Kontrola powiadomień GravityBox

Ustawienia aplikacji

Xposed daje programistom możliwość modyfikowania praktycznie wszystkiego, czego chcą - głównie w odniesieniu do poszczególnych aplikacji, ale nawet funkcje systemowe mogą być modyfikowane. Wymienione przez nas przykłady to tylko wierzchołek góry lodowej. Liczba dodatkowych funkcji, które można dodać lub aplikacji, które można modyfikować, jest niesamowita - wystarczy przeszukać oficjalne repozytorium modułu Xposed, aby przekonać się sam. Pamiętaj, że niektóre moduły mogą wymagać aktualizacji w tej nowej wersji i obsłudze Nougat, więc sprawdź to przed zainstalowaniem ich w pamięci ROM Nougat!

Jak działają moduły Xposed?

Istotą tego jest to, że Xposed Framework pozwala modułom „zaczepić się” w metodach Java dowolnej aplikacji - zarówno zainstalowanej przez użytkownika, jak i aplikacji systemowej. Xposed pozwala modułom wykonywać własne metody przed, w trakcie lub w miejsce oryginalnych metod aplikacji docelowej.

Na przykład wyobraź sobie metodę stosowaną w aplikacji Gmail, która publikuje powiadomienia o nowych wiadomościach e-mail. Domyślnie metoda tworzy nowe powiadomienie z przyciskami do archiwizacji / usuwania lub odpowiedzi na wiadomość e-mail. Moduł Xposed może zostać podłączony do tej metody i dodać nowy przycisk, taki jak „oznacz jako przeczytany” (Tak, jest już moduł tylko do tego).

Powyższe stanowi nadmierne uproszczenie końcowego wyniku tego, na co pozwala Xposed Framework. Sam Framework jest niezwykle złożony i sprawia, że ​​działa prawie uniwersalnie na zrootowanych urządzeniach - bez potrzeby posiadania niestandardowej pamięci ROM - dlatego Xposed dla Androida Nougat zajęło tak dużo czasu.

Dlaczego rozwój Xposed trwa tak długo?

Magia Xposed - która umożliwia modułom podłączenie się do metod innych aplikacji - wymaga głębokiej wiedzy o działaniu Zygote i Android Runtime (ART). Wymagania te już uniemożliwiają udział wielu osób w projekcie, ale problem pogłębia fakt, że rovo89 był głównym uczestnikiem Xposed przez ostatnie 5 lat .

Właśnie dlatego odrzucono wezwania do otwartego pozyskiwania jego modyfikacji dokonanych w Xposed od czasu ostatniej publicznej wersji Xposed. To jego pomysł i najlepiej go rozumie i modyfikuje, więc dodanie większej siły roboczej do projektu na tak późnym etapie może po prostu opóźnić projekt.

Dodatkowo, jeśli rovo89 ciągle aktualizował swoje źródło, obawiał się, że ktoś weźmie niedokończony kod, aby zbudować częściowo działający Xposed Framework bez dołączonego do niego uniwersalnego Instalatora Xposed. (Dokładnie tak samo stało się z implementacją abforce, a wynikający z tego bałagan różnych metod instalacji uzasadniał wahanie rovo89).

Dlatego najlepszą rzeczą, jaką mogliśmy zrobić, było dać rovo89 czas na pracę nad jego projektem dla zwierząt. Xposed nie jest jego pracą, a nawet pracą w niepełnym wymiarze godzin. To po prostu hobby, które robił na rzecz społeczności od 5 lat. Projekt tak złożony jak Xposed wymaga czasu na pracę, a następnie przetestowania - czasu, którego nie często miał z powodu innych obowiązków. W ciągu ostatniego roku poczyniono postępy, tak jak rovo89 udokumentował w kilku swoich publicznych aktualizacjach na ten temat, aż w końcu zarówno Xposed Framework, jak i Xposed Instalator są gotowe do wydania.

Co zrobił rovo89, aby Xposed działał w Nougat?

Nowe wersje Androida czasem wprowadzają zmiany w działaniu ART, co może wymagać przeróbki części Xposed. Android 7.0 Nougat wprowadził kompilator Just-in-Time dla ART, aby na przykład poprawić wydajność środowiska wykonawczego aplikacji. Ale nieoficjalna platforma Xposed poprzez wymuszanie po prostu wyłącza wiele optymalizacji ART, aby podpięcie metody mogło działać poprawnie.

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

W przeciwieństwie do tego, implementacja rovo89 utrzymuje wszystkie optymalizacje ART w Android Nougat poprzez rekompilację metody wywołującej za pomocą JIT i nadal posiadanie metod. Oznacza to, że możesz czerpać korzyści z modułu Xposed bez poświęcania wydajności poprzez silne wyłączenie optymalizacji ART.

Aby dowiedzieć się więcej o tym, co zrobił rovo89, aby ostatecznie uzyskać niezawodną metodę zaczepiania w Xposed na Androida Nougat, zalecamy przeczytanie poniższego oświadczenia, które nam podał.

Pełne oświadczenie z rovo89

Rdzeniem Xposed jest oczywiście jego zdolność do przechwytywania metod Java, tj. Pozwalania modułom na wykonywanie kodu przed tymi metodami, po nich lub zamiast nich. Opiera się na tym prawie każda inna funkcjonalność, więc 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 powieść, gdy punkt wejścia nie jest sprawdzany podczas wykonywania - co tak naprawdę jest w przypadku niektórych optymalizacji w ART.

Jednym z przykładów jest to, że punkt wejścia jest już znany w czasie kompilacji, wtedy dzwoniący mogą bezpośrednio przejść do tego adresu bez wyszukiwania go. Innym przykładem jest inlining. Rozważ ten przykład:

ART jest wystarczająco inteligentny, aby zauważyć, że metoda dwukrotna () jest bardzo prosta i dlatego osadza logikę bezpośrednio w metodzie doSomething (), jak poniżej:

Nadal możesz podpiąć metodę dwukrotności (), ale nie będzie ona już wywoływana z metody doSomething () w czasie wykonywania, podobnie jak wywołanie zwrotne. ART jest jeszcze bardziej sprytny: zdaje sobie sprawę, że magia to zawsze 42 i dlatego warunek nigdy nie może zostać spełniony. Tak więc cała metoda doSomething () jest właściwie brakiem operacji:

W poprzednich wersjach Xposed całkowicie wyłączał te optymalizacje i wymuszał ponowną kompilację wszystkiego. To przyszło z kilkoma wadami. Po pierwsze, programiści ART wykonują fantastyczną robotę, maksymalizując wydajność dzięki swoim optymalizacjom, a wyłączenie ich częściowo koniecznie prowadzi do mniejszej wydajności (chociaż nigdy nie mierzyłem ile). Zatem sama rekompilacja nie zawsze jest łatwa i spowodowała wiele bólów głowy, szczególnie na początku. Wreszcie ponownie skompilowane pliki zajmują miejsce, oprócz wstępnie skompilowanych plików w systemie / system.

Nieoficjalne wersje Nougata również wyłączają te optymalizacje, ale nie wymuszają ponownej kompilacji (ponieważ port pierwotnie został zintegrowany z pamięcią ROM). Dlatego haki mogą czasami nie być wykonywane.

W oficjalnej wersji możesz zachować zoptymalizowany kod i nadal mieć niezawodne zaczepy. Jak to działa? Cóż, Xposed rejestruje wszystkie wykonane połączenia. Dzieje się tak podczas kompilacji 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 można wprowadzić określoną metodę. Kiedy więc metoda jest zaczepiona, wszystkie jej wywołujące zostaną deoptimizowane, tzn. Ich kod nie będzie już używany. Zapewnia to, że wywołanie zwrotne przechwytywania na pewno zostanie wywołane. A jeśli program wywołujący jest intensywnie używany, zostanie po prostu ponownie skompilowany za pomocą JIT, tym razem ze świadomością, że metoda jest uzależniona i dlatego niektóre optymalizacje nie mają zastosowania. Oznacza to, że efekty metod zaczepiania są zredukowane do absolutnego minimum. Tak!

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

Wniosek

Mamy nadzieję, że jesteś równie podekscytowany co do wydania Xposed na Androida 7.X Nougat. Oczekiwanie było długie, ale nieuniknione ze względu na złożoność Xposed. Jeśli nadal masz wątpliwości co do tego, czym jest Xposed lub jak działa, nie martw się. Bardzo niewiele osób (w tym my) tak naprawdę rozumie, jak to działa. Programiści tacy jak rovo89 starają się pakować swoją pracę, więc 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 to, czego potrzeba, aby wnieść wkład w projekt, sprawdź poniżej stronę GitHub rovo89.

Wpłać na rovo89

Przyczynić się do Xposed

Szukasz modułów Xposed? Sprawdź nasze subforum Xposed Framework Module lub pobierz aplikację Labs i przejrzyj naszą kolekcję Xposed Modules.

Forum Xposed Modules

Pobierz Labs

Android Oreo Progress

Jeśli się zastanawiasz, oto postęp w zdobywaniu Xposed na Androida Oreo:

Rozpocząłem już pracę na Androidzie 8.0. Muszę przyjrzeć się kilku nowym funkcjom językowym, ale ogólna koncepcja powinna nadal działać. Obejmuje to całą pracę związaną z unieważnianiem skompilowanego kodu dowolnych wywołujących, gdy metoda jest podpięta, co zajęło zdecydowanie najwięcej czasu, gdy pracowałem nad Nougat. Jestem więc naprawdę pewien, że tym razem będę znacznie szybszy. Android 8.1 nie powinien być bardzo różny, więc spodziewam się niewiele dodatkowej pracy.