Ανεπίσημο Xposed Framework για Android 7.1 Nougat

click fraud protection

Είναι πλέον διαθέσιμο ένα zip με δυνατότητα flash που φέρνει το Xposed Framework σε ROM Android 7.1 Nougat. Το zip λειτουργεί στο OnePlus 3T καθώς και σε πολλά άλλα τηλέφωνα!

Μετά από μήνες και μήνες αναμονής, επιτέλους έχουμε υποστήριξη Xposed Framework για Nougat ROM (αν και ανεπίσημα). Χάρη σε μερικούς ταλαντούχους προγραμματιστές στα δικά μας φόρουμ XDA, μπορείτε τώρα να εγκαταστήσετε το Xposed Framework σε μια Android Nougat ROM μέσω ενός zip με δυνατότητα flash.

Μέχρι τώρα, το μέλλον για το Xposed στο Nougat φαινόταν λίγο τρεμάμενο. Rovo89 - ο προγραμματιστής πίσω από το Xposed Framework - παρείχε μια ενημέρωση για την υποστήριξη για το Android Nougat πριν από λίγο περισσότερο από μια εβδομάδα. Ο Rovo89 ουσιαστικά δήλωσε ότι υπήρχε ακόμη πολλή δουλειά που έπρεπε να γίνει για να λειτουργήσει σωστά το Xposed στο Nougat και ότι θα έπρεπε απλώς να κάνουμε υπομονή.

Ευτυχώς, φαίνεται ότι έχουμε πάρει μια προσωρινή λύση για όσους από εμάς περιμέναμε με αγωνία ένα μέτρο διακοπής. Η ομάδα PurifyOS άρπαξε τη μονάδα ART αυτού του προγραμματιστή

αναγκάζω είχε εργαστεί σε (και που δημοσιεύτηκε νωρίτερα σήμερα), και το προσάρμοσε ώστε να μπορεί να εγκατασταθεί σε άλλες προσαρμοσμένες ROM μέσω ενός zip με δυνατότητα flash (αντί να χρειάζεται να εφαρμοστεί κατά τη μεταγλώττιση της ROM).

Αυτήν τη στιγμή υπάρχουν τρεις διαθέσιμες εκδόσεις για διαφορετικές πλατφόρμες, συμπεριλαμβανομένου του Xposed SDK25 ARM64, Xposed SDK25 ΜΠΡΑΤΣΟκαι Xposed SDK25 Χ86. Η ομάδα PurifyOS έχει δοκιμάσει αυτήν τη νέα έκδοση του Xposed με ένα OnePlus 3T που τρέχει το OxygenOS βασισμένο στο Android 7.1, αλλά θα πρέπει να λειτουργεί σε άλλα τηλέφωνα με Android Nougat και οι χρήστες αναφέρουν ήδη ότι μπόρεσαν να το εγκαταστήσουν με επιτυχία σε διαφορετικές ROM και συσκευές. Για παράδειγμα, μερικοί χρήστες στο OnePlus 5 έχουν αναφέρει ότι λειτουργεί (δεν αποτελεί έκπληξη, δεδομένου ότι τρέχει στο OnePlus 3T μια χαρά), αλλά ένας χρήστης που εκτελεί μια ROM βασισμένη σε AOSP για το Samsung Galaxy S6 ανέφερε επίσης ότι λειτούργησε γι 'αυτούς.

Θα υπάρχουν ιδιορρυθμίες για να καταλάβουμε και δεν έχουν καταφέρει όλοι να το κάνουν να λειτουργήσει μέχρι στιγμής, με ορισμένους χρήστες να αντιμετωπίζουν αναγκαστικά κλείσιμο και άλλες παραξενιές. Ωστόσο, ακόμα κι αν συμβαίνει αυτό, μπορείτε ακόμα να το δοκιμάσετε αν περιμένατε την άφιξη του Xposed στο Nougat από τότε που κυκλοφόρησε η προηγούμενη έκδοση του λειτουργικού συστήματος Android. Δεν λειτουργούν όλες οι υπάρχουσες μονάδες Xposed Framework αμέσως, αλλά ορισμένες πολύ δημοφιλείς, όπως το Amplify, αναφέρεται ότι λειτουργούν.

Φροντίστε να δημιουργείτε τακτικά αντίγραφα ασφαλείας και να διαβάζετε προσεκτικά το νήμα πριν ξεκινήσετε, εάν δεν είστε σίγουροι για το αν υποστηρίζεται η συσκευή ή η ROM σας. Τέλος, φροντίστε να χρησιμοποιήσετε τη συνάρτηση "αναζήτηση" πριν αφήσετε μια διπλή ερώτηση. Το Android O μπορεί να είναι προ των πυλών, αλλά όπως λέει και η παροιμία, "κάλλιο αργά παρά ποτέ." Επιπλέον, πολλοί χρήστες δεν πρόκειται να βλέπουν το Android O στις συσκευές τους για αρκετό καιρό, επομένως το Xposed θα πρέπει να είναι μια ωραία απόλαυση, ώστε να μην αισθάνεστε ότι μένουν πίσω.


Ενημέρωση: Rovo89's Response

Το πρωτότυπο αναπτύχθηκε πίσω από το Xposed Framework, XDA Senior Recognized Developer rovo89, έχει απαντήσει στο Github με τις σκέψεις του για αυτές τις πρόσφατες εξελίξεις.

Από την εμπειρία μου, μπορώ να σας πω ότι δεν είναι όντως τόσο δύσκολο να γίνουν τα βασικά, αλλά χρειάζεται πολύς χρόνος για τις λεπτομέρειες. Είναι σαν τον κανόνα 80-20, με τη διαφορά ότι είναι περισσότερο σαν 95-5 περίπου.

Η προσέγγιση αγκίστρωσης που έχω σχεδιάσει για τις προηγούμενες εκδόσεις είναι μάλλον σταθερή και μπορεί να εφαρμοστεί και για νεότερες εκδόσεις. Υποθέτω ότι χρειαζόσασταν τις περισσότερες φορές για να ελέγξετε όλα τα μέρη όπου IsProxyMethod() και IsDirect() καλείται και αποφασίζει εάν θα πρέπει να εξετάσουν τον τροποποιητή της νέας μεθόδου ή όχι (δηλαδή χρησιμοποιήστε την παράμετρο true ή όχι). Εάν δεν το κάνατε αυτό, μπορεί να χάσατε ορισμένα μέρη όπου έχουν εισαγάγει πρόσφατα τέτοιες κλήσεις. Το ίδιο και για μεθόδους όπως InstallStubsForMethod(), η οποία πρέπει να λειτουργεί με την αρχική αρχική μέθοδο, ακόμη και όταν καλούνται για μια αγκιστρωμένη μέθοδο. Θα πρέπει να ελέγξετε για περισσότερα μέρη όπου αυτό θα μπορούσε να είναι σχετικό. Αυτό εξακολουθεί να είναι εντός του εύρους των ημερών, αλλά αν παραλείψετε να το κάνετε, μπορεί να δείτε σκοτεινά σφάλματα ή κακή συμπεριφορά που είναι πολύ δύσκολο να εντοπιστούν.

Επιπλέον, ακολουθήσατε μια προσέγγιση όπου τα hook θα λειτουργούσαν σωστά μόνο για ROM που έχουν μεταγλωττιστεί εξ ολοκλήρου από την αρχή. Σε stock ROM και ακόμη και στις περισσότερες προσαρμοσμένες ROM (που δεν περιλάμβαναν τη θύρα σας κατά την κατασκευή) καθώς και για οποιεσδήποτε εφαρμογές μπορεί να έχει μεταγλωττίσει η συσκευή στο παρελθόν. Επομένως, θα πρέπει να ξεκινήσετε ξανά από την αρχή με μια σκουπισμένη συσκευή με ειδική ROM. Εάν όχι, τότε οι βελτιστοποιήσεις (π.χ. inlining) ενδέχεται να εμποδίσουν την κλήση μιας μεθόδου και, ως εκ τούτου, τα hook δεν θα λειτουργούσαν. Το χειρότερο σε αυτό είναι ότι η ακριβής συμπεριφορά θα εξαρτηθεί από τη ROM ή ακόμα και τον τρόπο με τον οποίο ο χρήστης χρησιμοποιεί τη συσκευή (τώρα που οι εφαρμογές μεταγλωττίζονται με βάση τα προφίλ). Οι μονάδες θα αποτυγχάνουν τυχαία και οι προγραμματιστές της ενότητας θα αναρωτιούνται τι έκαναν λάθος (απάντηση: τίποτα). Εάν δεν πληρούνται όλες οι προϋποθέσεις, είναι ένα αρκετά αναξιόπιστο API. Φανταστείτε ότι η Google δημοσίευσε μια ενημέρωση όπου το OnClickListener του κουμπιού δεν καλούνταν μερικές φορές, εκτός κι αν κάνατε μεταγλώττιση της ROM σας από την αρχή... Για μένα προσωπικά, αυτός είναι ένας μεγάλος περιορισμός.

Συνεχίζει:

Δεν έχει καθόλου νόημα να δημοσιεύουμε ZIP με δυνατότητα flash με αυτό, καθώς η θύρα προορίζεται μόνο για την εκ νέου μεταγλώττιση μιας ROM από την αρχή.

Και όπως φοβόμουν, Δεν υπάρχει ούτε μία προειδοποίηση ότι πρόκειται για μια ημιτελή θύρα που συχνά αποτυγχάνει να εκπληρώσει τη σύμβαση API. 😠 Αυτό είναι κακό για τους προγραμματιστές και τους χρήστες, θα πρέπει τουλάχιστον να γνωρίζουν ότι είναι ελλιπές, ώστε να μπορούν να αποφασίσουν αν θέλουν να το υποστηρίξουν/χρησιμοποιήσουν. Δεν θα τολμούσα ποτέ να κάνω κάτι τέτοιο χωρίς μια μεγάλη προειδοποίηση. Στην πραγματικότητα, καθώς είμαι μάλλον τελειομανής, δεν θα δημοσίευα καθόλου μια ημιτελή έκδοση, η αξιοπιστία είναι πολύ σημαντική για μένα.

Μόλις έλεγξα το αρχείο καταγραφής του Git και είχα έτοιμο το βασικό hooking (όπως σε αυτήν τη θύρα) τον Οκτώβριο. Από τότε, έχω εργαστεί για την άρση των περιορισμών. Για να το κάνω πιο αξιόπιστο σε προ-μεταγλωττισμένες ROM, θα μπορούσα να είχα μεταφέρει και το τμήμα της επαναμεταγλώττισης, ωστόσο αυτό δεν είναι ακόμα ιδανικό. Όπως εξηγήθηκε κάπου παραπάνω, έχουμε τώρα το JIT, το οποίο μας επιτρέπει να διατηρήσουμε όλες τις βελτιστοποιήσεις, ακυρώνοντας (και πιθανώς εκ νέου μεταγλώττιση) μόνο τις μεθόδους που επηρεάζονται άμεσα από το hooking. Αυτό είναι αρκετά δύσκολο, καθώς είναι κάτι περισσότερο από απλή αντιγραφή και επικόλληση. Και μέχρι να μην γίνει αυτό, δεν θα δημοσιεύσω τίποτα. 9 μήνες για αυτό (μέχρι τώρα) είναι πραγματικά πολύς, το ξέρω, αλλά ρε, είναι ο ελεύθερος χρόνος μου και π.χ. λόγω μετακίνησης σε ένα νέο διαμέρισμα, δεν μπορούσα να δουλέψω στο Xposed για αρκετούς μήνες (!) καθόλου, και διαφορετικά είχα πολύ περιορισμένο χρόνο.

Θα πρέπει να ξεκαθαρίσουμε ότι αυτές οι πρόσφατες εξελίξεις δεν είναι οι αληθινοί "Xposed" που όλοι γνωρίζετε και αγαπάτε, αλλά λειτουργικά σας επιτρέπουν να χρησιμοποιείτε ορισμένες μονάδες πλαισίου Xposed αυτή τη στιγμή στο Android Μαντολάτο. Δεν θα σας κατηγορήσουμε που δεν περιμένετε την επίσημη, πιο σταθερή και πιο συμβατή έκδοση του Xposed Framework για Android Nougat, αλλά θέλουμε να καταστήσουμε σαφές ότι αυτή η επανάληψη είναι απλώς ένα μέτρο διακοπής που έχει σκοπό να ικανοποιήσει σωστά τις ανάγκες ορισμένων χρηστών τώρα. Είναι πιθανό να μην αντιμετωπίζεται με τον τρόπο που θα χειριστεί το Xposed στο μέλλον.


Κατεβάστε το Unofficial Xposed Framework για Nougat στα Φόρουμ XDA