Wyjaśnienie podmodułu Xposed Framework dla Nougat i abforce

W tym artykule badamy różnice między nadchodzącą wersją Xposed for Nougat firmy rovo89 a obecną implementacją dostępną dla Nougat.

Framework Xposed był – i nadal jest – głównym sposobem na dostosowanie urządzenia z Androidem, jest kompatybilny z prawie wszystkimi urządzeniami, umożliwiając łatwą instalację modułów w celu dostosowania praktycznie dowolnych szczegółów.

Chcesz uzyskać wszystkie funkcje oferowane przez niestandardową pamięć ROM bez konieczności jej flashowania?GravityBox LubXTouchwiz zrobi to. Chcesz dostosować określone ustawienia dla poszczególnych aplikacji, na przykład zmienić DPI określonej aplikacji?Ustawienia aplikacji czy jesteś objęty. Szkoda, że ​​twórcy aplikacji nie pomyśleli o dodaniu określonej funkcji, takiej jak Googlepersonalizuj Hangouts lub Facebook, który Ci na to pozwalapobierz posty na Instagramie, które lubisz? Cóż, nie musisz, ponieważ Xposed daje programistom możliwość modyfikowania praktycznie wszystkiego, co chcą chcesz, czy to funkcja ogólnosystemowa, która wymagałaby niestandardowej pamięci ROM, czy też modyfikacja dla konkretnego aplikacja.

Framework Xposed ma ogromną zaletę dla programistów, jaką jest łatwość programowania (w porównaniu z koniecznością kompilowania AOSP pod kątem poprawek w ROMie lub koniecznością edytowania kodu Smali). Daje to również ogromną korzyść użytkownikom: wygoda, ponieważ nie zmusza ich już do znajdowania i flashowania ROM-u, który zapewnia każdą funkcję, której szukają (zamiast tego mogą mieszać i dopasowywać niezależne moduły) oprócz docelowej równowagi stabilności i wydajność. To także sprawia poprawianie aplikacji znacznie łatwiejsze, ponieważ nie ma potrzeby zajmowania się różnymi podpisami, co w rezultacie wymagałoby od użytkowników odinstalowania oryginału wersji lub przeskakiwać przez pewne przeszkody, gdy aplikacja sprawdza swój podpis (coś, z czym radzą sobie zmodyfikowani klienci YouTube, np instancja).

Jedyny problem? Ze względu na swój charakter i ilość wolnego czasu programista Xposed (nasz własny Senior Recognized Developer,rovo89) często pozostaje w tyle za wersjami Androida.Aktualizacja do obsługi Lollipopa zajęła około czterech miesięcy, a dotarcie do Nougat zajmuje około roku. To nie jest tak złe, jak mogłoby się wydawać, jeśli się nad tym zastanowić ilu użytkowników Androida faktycznie korzysta z Nougat (około 13,5%, choć należy pamiętać, że entuzjaści Androida, docelowi odbiorcy Xposed, również częściej korzystają z Nougat). Jednak nadal może być dość denerwujący brak możliwości korzystania z ulubionych modułów Xposed i jednoczesnego posiadania najnowszej i najlepszej wersji Androida.

Mając dostępny kod źródłowy frameworka Xposed (przynajmniej dla stabilnych, wydanych wersji), developerwzmocnij postanowił ubrudzić sobie ręce i sprawdzić, czy uda mu się przenieść niektóre modyfikacje rovo89 do Nougata. Decydując się na inne i prostsze podejście, abforce zasadniczo dostosował tę część Xposed, która faktycznie robi magię po zainstalowaniu i umożliwia włączenie jej podczas kompilacji własnej pamięci ROM (następnie pojawiły się inne obejścia). To podejście jest prawdopodobnie bardzo różne ponieważ ignoruje jedną z podstawowych zalet Xposed, która jest łatwo dostępna dla każdego. Jednakże każdy postęp jest mile widziany, a praca wielu kierowników zajmujących się danym zadaniem może być korzystna i zapewniać nowy wgląd. Naszym zdaniem głównym problemem jest dezinformacja na temat tego rozwoju (rozpowszechniana przez innych „programistów” i niektóre blogi), a także niektóre reakcje społeczności. Mamy nadzieję, że ten artykuł rozjaśni cały obraz.


Po pierwsze, aby zrozumieć pracę włożoną – i nadal wykonywaną – w oficjalny framework Xposed, a także w wersję abforce, musimy przyjrzeć się, jak ten framework działa. Chociaż sam framework jest tylko część projektu, zwykle mamy na myśli zarówno framework, jak i instalator ponieważ framework traci wiele ze swoich zalet bez uniwersalnego instalatora, w który również włożono dużo pracy.

Siła Xposed wynika z prostej koncepcji: każdą metodę można „zahaczyć” (metody są małe części tworzące dowolny program), aby kod modułu Xposed został wykonany przed, po lub zamiast To. Weźmy prosty przykład: załóżmy, że Instagram używa metody o nazwie „showMenuOptions” po kliknięciu przycisku menu i ta metoda obsługuje wyświetlanie przycisków „Zgłoś” i „Udostępnij”. Tworząc moduł Xposed, możesz zmodyfikować tę metodę, aby na przykład dodać dodatkowy przycisk umożliwiający pobranie obrazu zamiast go udostępniać. Modyfikacje mogą obejmować proste poprawki (np. Lista zmian Sklepu Play) aż po remonty kapitalne (np GravityBox, którego celem jest zapewnienie wszystkich funkcji niestandardowej pamięci ROM)!

To sprawia, że ​​Xposed jest potężny, ale to tylko część równania. Pozostałe elementy to wszechstronność – czyli faktyczna możliwość korzystania z Xposed na prawie każdym urządzeniu (z obsługiwaną wersją Androida) i łatwość obsługi. Wszystko, co użytkownicy muszą zrobić, to pobrać instalator, który wykona swoje magiczne czynności i dynamicznie łata system, aby zintegrować Xposed. Aby zastosować moduł, wystarczy go zainstalować, włączyć i uruchomić ponownie. Nie wymaga to żadnych kłopotów, nie ma potrzeby flashowania niestandardowej pamięci ROM (zwłaszcza gdy niestandardowe ROMy nie zawsze są realnym wyborem), nie ma potrzeby odinstalowywania pakietu APK, aby zainstalować inny podpisany z innym podpisem. Wszystko czego potrzebujesz to root (możesz mieć niestandardową pamięć ROM i to ma sens w większości przypadków; ale chociaż Xposed może zapewnić większość funkcji, jakie może zapewnić niestandardowa pamięć ROM, wykracza to również poza to).

Za tą prostotą kryje się jednak dużo pracy:

  1. Dla twórców modułów dostarczony interfejs API musi być stabilny i gwarantowany do działania. Framework Xposed nie może losowo zawieść w przypadku niektórych kombinacji pamięci ROM i/lub haków (z wyjątkiem wyjątkowych przypadków). Innymi słowy, jeśli użytkownik ma problem, problem ten powinien albo być jego winą (bo nie poprawne zainstalowanie/włączenie czegoś) lub wina twórcy modułu (za błędy w pliku moduł). Powinno być jednak niemal pewne, że sam framework działa zgodnie z oczekiwaniami i nie jest źródłem błędów, które wywołałyby frustrację użytkowników i dezorientację programistów.
  2. Dla użytkowników framework musi być łatwy do zainstalowania na ich urządzeniu i pamięci ROM, niezależnie od tego, czy mają Samsunga z najnowszą wersją TouchWiz, czy Nexusa z zainstalowanym LineageOS. Instalator Xposed obsługuje to wszystko za kulisami. Aby przetestować instalator i framework na różnych urządzeniach i kombinacjach ROM-ów, trzeba w to włożyć wiele pracy. Wykrywane są błędy, często spowodowane różnymi wdrożeniami przez producentów OEM, i należy je naprawić, aby zapewnić niezawodność wszystkim użytkownikom.
  3. Duże wersje Androida mogą czasami powodować poważne zmiany, co wymaga ponownego przemyślenia części architektury frameworka, aby dostosować się do tych zmian. Czasami w nowszych wersjach pojawiają się także dodatkowe możliwości, co wymaga dodatkowego czasu na uzyskanie lepszego produktu. Na przykład, kiedy po raz pierwszy wprowadzono ART, Xposed wyłączył pewne optymalizacje, aby przechwytywanie mogło działać poprawnie. W przypadku Nougata,kompilator just-in-time (JIT). daje szansęzachowaj te optymalizacje.

Wiele z powyższej pracy dotyczy drobnych szczegółów, w których większość frameworku działa zgodnie z przeznaczeniem, ale niespójności i drobne problemy sprawiłyby, że korzystanie z niego byłoby ryzykowne dla użytkowników, a wsparcie i rozwój modułu byłoby koszmarem deweloperzy. Wydany produkt ma jednak być użyteczny dla wszystkich i bez niespodzianek. Są oczywiście pewne wyjątki, ponieważ zmiany wprowadzane przez niektórych producentów OEM wymagają więcej wysiłku, aby się do nich dostosować, ale są to wyjątki są niewielkie i zdecydowana większość użytkowników (i programistów) może cieszyć się stabilnym i niezawodnym Xposed doświadczenie. Wszelkie napotkane wyjątki są dokumentowane za pomocąjasne zastrzeżenia żeby nikt nie był zaskoczony.

Mając powyższe na uwadze, wizją rovo89 dla Xposed jest bycie stabilnym rozwiązaniem zapewniającym niezawodną i łatwą w obsłudze umowę dla użytkowników i programistów. Jego filozofia, choć możesz się z nią nie zgodzić, jest prosta i zrozumiała: produkt taki powinien być zwolniony, gdy jest gotowy do użycia zgodnie z przeznaczeniem, ponieważ zwolnienie go wcześniej prowadzi do większych problemów niż korzyści.


Podmoduł Xposed ART firmy abforce dla Nougata

Niechętnie nazywamy dzieło abforce „portem” lub „nieoficjalnym Xposed”, ponieważ jest to niedokładne i wprowadzające w błąd. Jak widzieliśmy, Xposed składa się z dwóch głównych komponentów:

  1. Rdzeń samego frameworka Xposed, który obsługuje magię metod podpinania.
  2. Instalator Xposed, który zapewnia łatwą instalację frameworka na wszystkich urządzeniach.

To, co zrobił abforce, to przeniesienie kodu Marshmallow rovo89 w pierwszej części (tylko framework Xposed) do Nougata w sposób, który wymagałby zapisywania zmian podczas kompilacji niestandardowej pamięci ROM. Poza tym wiele mniejszych (ale ważnych) części frameworka nie jest w pełni dostosowanych do Nougata. W związku z tym zachowanie może być niespójne i chociaż w większości działa (choć nieDowszyscy), to nie jest wiarygodne. Dla twórców modułów i użytkowników poleganie na niekompletnej i niespójnej implementacji byłoby po prostu wystarczające zapewnić złe doświadczenia wszystkim zaangażowanym stronom, z niektóre moduły w ogóle nie działają lub powodują, że urządzenie nie uruchamia się. Chociaż wielu użytkowników może nie mieć problemu z posiadaniem raczej coś niż nic, punkt widzenia programistów jest nadal całkowicie zrozumiały (zwłaszcza jeśli weźmie się pod uwagę, że zastrzeżenia nie powstrzymują fałszywych pytań do pomocy technicznej i marudzenia).

(Oprócz powyższych dwóch głównych punktów, będziemy również spodziewać się dalszych zmian w ostatecznej, oficjalnej platformie Xposed, aby wykorzystać zmiany wprowadzone w Nougat.)

Należy zauważyć, że abforce wykonał świetną robotę, gdy większość zadowalała się po prostu mówieniem, ale jego praca jest daleka od pełnego doświadczenia Xposed i żaden programista ani blog nie twierdzi inaczej (i na pewno nie abforce; ponownie, mamy tylko szacunek do wszystkich programistów, którzy wkładają w to prawdziwą pracę i wysiłek). Tak naprawdę, jak omówimy za chwilę, niektóre reakcje społeczności (czy to użytkowników, czy „programistów”) są jedyną kwaśną częścią tego łańcucha zmian.


Przerwijmy pościg i przejdźmy od razu do rzeczy: każda społeczność ma złe elementy i aspekty. Przy tak dużej społeczności, jak entuzjaści Androida, złe elementy mogą wydawać się ogromną częścią, gdy stanowią jedynie niewielką część (znaczną, ale wciąż niewielką w ujęciu względnym). Jednak nie owijając w bawełnę, większość reakcji społeczności na rozwój Xposed dla Nougat była wyjątkowo dziecinna, nierozważna i nieodpowiedzialna.

Pierwszym poważnym problemem było protekcjonalne podejście wielu osób do „śmierci Xposed”, ponieważ wypuszczenie gry na Nougat zajmuje zbyt dużo czasu. Dzieje się tak pomimo rovo89 aktualizacjeIzapewnieniai pomimo niemal dokładnego scenariusza, jaki miał miejsce w przypadku Lollipopa, kiedy wprowadzono pierwszą wersję ART. Zaprzestanie korzystania z Xposed jest w porządku, ale nie ma na celu obrażania niczyich możliwości ani atakowania innych za wyznawanie innej filozofii lub niezapewnienie natychmiastowego zaspokojenia potrzeb w zakresie flashowania. Jest to tym bardziej prawdziwe w przypadku całkowicie darmowego projektu, w którym programista przedstawił swoją metodologię programowania i powody, dla których ją stosuje.

Innym problemem związanym z reakcją społeczności było niezrozumienie natury pracy abforce, przez co wielu okrzyknęło ją nowym Xposed lub reklamowało jako port dla Nougata. Głównym problemem było to, że „programiści” spieszyli się z oferowaniem wersji flashowalnych, nie rozumiejąc (lub nie przejmując się) wadami, ponieważ nie zgłoszono żadnych zastrzeżeń. w ogóle oferowane w niektórych wątkach, a niektóre posuwają się nawet do uznania abforce, a nie rovo89 (który stoi za zdecydowaną większością prac nad Xposed) i innym współautorzy.

Na koniec uważamy, że powinniśmy ponownie poruszyć filozofię rozwoju rovo89. Wielu użytkowników głosowych twierdzi, że posiadanie najnowszych zmian w postaci otwartego oprogramowania byłoby korzystne. Chociaż brzmi to dobrze w teorii, tak jestw praktyce nie jest to takie proste zwłaszcza jeśli weźmiemy pod uwagę wyjaśnienie rovo89:

[...] Uważam, że samo wyparcie obecnego stanu nie pomoże temu projektowi. Być może zobaczylibyśmy „jakieś” wydanie naprawdę szybko przez ludzi, którzy kompilują kod, zobaczylibyśmy, że tak wygląda działa dobrze i publikuje go jako „swój port”, pomimo problemów i rzeczy do zrobienia, o których nie byliby świadomi z. Nazwijcie mnie więc samolubem, ale nie chciałbym oglądać tak niedokończonego wydawnictwa.[Źródło]

Co faktycznie okazało się całkiem dobrą prognozą obecnej sytuacji, do której zgłosiło się kilku „programistów”. abforce i oferowanie flashowalnego ZIP-a z minimalnymi ostrzeżeniami lub bez nich, z niekompletnymi napisami, a wszystko to z prośbą o darowizny.


Mamy nadzieję, że te wyjaśnienia rozwiały niektóre Twoje wątpliwości i rozwiały ewentualne błędne przekonania, które mogłeś mieć. Xposed to niesamowity projekt, który dotarł do ogromnej części naszych entuzjastów i społeczności flashoholików, a Xposed dla Nougat powinien być kolejnym gigantycznym kamieniem milowym pełnym możliwości. Z modułami takimi jak GravityBox oferujący już obsługę Nougata, ukończony projekt rovo89 powróci do wielu opcji.


Czy jesteś podekscytowany Xposed na swoim Nougat ROM? Daj nam znać w komentarzach!