Επεξήγηση του Xposed Framework for Nougat & abforce Submodule

Σε αυτό το άρθρο διερευνούμε τις διαφορές μεταξύ της επερχόμενης κυκλοφορίας Xposed για Nougat του rovo89 και της τρέχουσας εφαρμογής που είναι διαθέσιμη για το Nougat.

Το πλαίσιο Xposed ήταν -- και εξακολουθεί να είναι -- ένας σημαντικός τρόπος για να προσαρμόσετε τη συσκευή σας Android, συμβατό σχεδόν με όλες τις συσκευές, επιτρέποντάς σας να εγκαταστήσετε εύκολα λειτουργικές μονάδες για να τροποποιήσετε σχεδόν οποιαδήποτε λεπτομέρεια.

Θέλετε να αποκτήσετε όλες τις δυνατότητες που προσφέρει μια προσαρμοσμένη ROM χωρίς να χρειάζεται να κάνετε flash;GravityBox ήXTouchwiz θα το κάνει αυτό. Θέλετε να τροποποιήσετε ορισμένες ρυθμίσεις ανά εφαρμογή, όπως αλλαγή του DPI μιας συγκεκριμένης εφαρμογής;Ρυθμίσεις εφαρμογής σε έχει καλύψει. Μακάρι οι προγραμματιστές μιας εφαρμογής να σκεφτούν να προσθέσουν μια συγκεκριμένη λειτουργία, όπως σας επιτρέπει η Googleεξατομικεύστε τα Hangouts ή το Facebook που σας το επιτρέπεικατεβάστε τις αναρτήσεις στο Instagram που σας αρέσουν? Λοιπόν, δεν χρειάζεται γιατί το Xposed δίνει στους προγραμματιστές τη δύναμη να τροποποιούν σχεδόν οτιδήποτε θέλετε, είτε πρόκειται για ένα χαρακτηριστικό σε όλο το σύστημα που θα απαιτούσε μια προσαρμοσμένη ROM, είτε ένα tweak για ένα συγκεκριμένο εφαρμογή.

Το πλαίσιο Xposed έρχεται με ένα σημαντικό πλεονέκτημα για τους προγραμματιστές, το οποίο είναι η ευκολία ανάπτυξης (σε σύγκριση με το ότι χρειάζεται να μεταγλωττίσετε το AOSP για τροποποιήσεις ROM ή να χρειαστεί να επεξεργαστείτε τον κώδικα Smali). Προσφέρει επίσης ένα τεράστιο πλεονέκτημα για τους χρήστες: ευκολία, καθώς δεν τους αναγκάζει πλέον να βρουν και να αναβοσβήσουν τη ROM που παρέχει κάθε δυνατότητα που αναζητούν (αντίθετα, μπορούν να αναμειγνύουν και να ταιριάζουν ανεξάρτητες μονάδες) πάνω από το στόχο ισορροπίας σταθερότητας και εκτέλεση. Κάνει επίσης μικροαλλαγές εφαρμογών πολύ πιο εύκολο καθώς δεν χρειάζεται να ασχοληθείτε με διαφορετικές υπογραφές, κάτι που θα απαιτούσε από τους χρήστες να απεγκαταστήσουν το πρωτότυπο έκδοση ή μεταπήδηση μέσω συγκεκριμένων κρίκων όταν η εφαρμογή ελέγχει την υπογραφή της (κάτι που αντιμετωπίζουν οι τροποποιημένοι πελάτες YouTube, για παράδειγμα).

Το μόνο πρόβλημα? Λόγω της φύσης του και του ελεύθερου χρόνου του προγραμματιστή του Xposed (ο δικός μας Ανώτερος Αναγνωρισμένος Προγραμματιστής,rovo89) έχει, συχνά υστερεί σε σχέση με τις εκδόσεις Android.Χρειάστηκαν περίπου τέσσερις μήνες για να ενημερωθεί για την υποστήριξη του Lollipop, και χρειάζεται περίπου ένας χρόνος για να έρθει στο Nougat. Αυτό δεν είναι τόσο κακό όσο μπορεί να φαίνεται αν το σκεφτείτε πόσοι χρήστες Android είναι πραγματικά στο Nougat (περίπου 13,5%, αν και έχετε κατά νου ότι οι λάτρεις του Android, το κοινό-στόχο του Xposed, είναι επίσης πιο πιθανό να είναι στο Nougat). Ωστόσο, μπορεί να είναι ακόμα αρκετά ενοχλητικό να μην μπορείτε να χρησιμοποιήσετε τα αγαπημένα σας Xposed modules και να έχετε την τελευταία και καλύτερη έκδοση Android ταυτόχρονα.

Με τον πηγαίο κώδικα του πλαισίου Xposed να είναι διαθέσιμος (τουλάχιστον για σταθερές, κυκλοφορημένες εκδόσεις), προγραμματιστήςαναγκάζω αποφάσισε να λερώσει τα χέρια του και να δει αν θα μπορούσε να μεταφέρει κάποιες από τις τροποποιήσεις του rovo89 στο Nougat. Επιλέγοντας μια διαφορετική και απλούστερη προσέγγιση, η abforce προσάρμοσε ουσιαστικά το μέρος του Xposed που στην πραγματικότητα κάνει το magic μόλις εγκατασταθεί και κατέστησε δυνατή τη συμπερίληψή του κατά τη μεταγλώττιση της δικής σας ROM (μετά από αυτό, εμφανίστηκαν άλλες λύσεις). Αυτή η προσέγγιση είναι αναμφισβήτητα πολύ διαφορετική καθώς αγνοεί ένα από τα βασικά πλεονεκτήματα του Xposed, το οποίο είναι να είναι διαθέσιμο σε όλους με ευκολία. Ωστόσο, κάθε πρόοδος είναι ευπρόσδεκτη και πολλά κεφάλια που αντιμετωπίζουν μια εργασία μπορεί να είναι επωφελής και να προσφέρουν νέα εικόνα. Το κύριο ζήτημα, όπως το βλέπουμε, είναι η παραπληροφόρηση γύρω από αυτή την εξέλιξη (που διαδίδεται από κάποιους άλλους «προγραμματιστές» και κάποια blogs), καθώς και κάποιες από τις αντιδράσεις της κοινότητας. Ας ελπίσουμε ότι αυτό το άρθρο θα κάνει την όλη εικόνα πιο ξεκάθαρη.


Πρώτα απ 'όλα, για να κατανοήσουμε τη δουλειά που πήγε -- και εξακολουθεί να πηγαίνει -- στο επίσημο πλαίσιο Xposed καθώς και στην έκδοση του abforce, πρέπει να δούμε πώς λειτουργεί το πλαίσιο. Ενώ το ίδιο το πλαίσιο είναι μόνο μέρος του έργου, συνήθως εννοούμε και το πλαίσιο και τον εγκαταστάτη καθώς το πλαίσιο χάνει πολλά από τα πλεονεκτήματά του χωρίς το καθολικό πρόγραμμα εγκατάστασης, για το οποίο καταβάλλεται επίσης πολλή δουλειά.

Η δύναμη του Xposed προέρχεται από μια απλή ιδέα: οποιαδήποτε μέθοδος μπορεί να «αγκιστρωθεί» (οι μέθοδοι είναι οι μικρές μέρη που αποτελούν οποιοδήποτε πρόγραμμα) για να εκτελείται ο κώδικας μιας μονάδας Xposed πριν, μετά ή αντί το. Ας πάρουμε ένα απλό παράδειγμα: ας υποθέσουμε ότι το Instagram χρησιμοποιεί μια μέθοδο που ονομάζεται "showMenuOptions" όταν κάνετε κλικ στο κουμπί μενού και αυτή η μέθοδος χειρίζεται να σας δείχνει τα κουμπιά "Αναφορά" και "Κοινή χρήση". Δημιουργώντας μια λειτουργική μονάδα Xposed, μπορείτε να τροποποιήσετε αυτήν τη μέθοδο για να προσθέσετε ένα επιπλέον κουμπί για λήψη της εικόνας αντί να την κοινοποιήσετε, για παράδειγμα. Οι τροποποιήσεις μπορεί να κυμαίνονται από απλές τροποποιήσεις (π.χ. Play Store Changelog) σε μεγάλες επισκευές (όπως π.χ GravityBox, το οποίο στοχεύει να παρέχει όλα τα χαρακτηριστικά που θα είχε μια προσαρμοσμένη ROM)!

Αυτό κάνει το Xposed ισχυρό, αλλά είναι μόνο μέρος της εξίσωσης. Τα άλλα μέρη είναι η ευελιξία -- ή η δυνατότητα χρήσης του Xposed σε σχεδόν οποιαδήποτε συσκευή εκεί έξω (με υποστηριζόμενη έκδοση Android) και η ευκολία χρήσης. Το μόνο που πρέπει να κάνουν οι χρήστες είναι να πιάσουν το πρόγραμμα εγκατάστασης, το οποίο κάνει τα μαγικά του και διορθώνει το σύστημά τους δυναμικά για να ενσωματώσει το Xposed. Για να εφαρμόσετε μια ενότητα, πρέπει απλώς να την εγκαταστήσετε, να την ενεργοποιήσετε και να επανεκκινήσετε. Δεν απαιτείται φασαρία, δεν χρειάζεται να αναβοσβήσετε μια προσαρμοσμένη ROM (ειδικά όταν οι προσαρμοσμένες ROM δεν είναι πάντα μια βιώσιμη επιλογή), δεν χρειάζεται να απεγκαταστήσετε ένα APK για να εγκαταστήσετε ένα άλλο υπογεγραμμένο με διαφορετική υπογραφή. Το μόνο που χρειάζεστε είναι root (μπορείτε οπωσδήποτε να έχετε μια προσαρμοσμένη ROM και αυτό είναι λογικό πολλές φορές. αλλά ενώ το Xposed μπορεί να παρέχει το μεγαλύτερο μέρος της λειτουργικότητας που μπορεί να προσφέρει μια προσαρμοσμένη ROM, υπερβαίνει επίσης αυτό).

Πίσω από αυτή την απλότητα κρύβεται πολλή δουλειά, όμως:

  1. Για τους προγραμματιστές λειτουργικών μονάδων, το παρεχόμενο API πρέπει να είναι σταθερό και εγγυημένο ότι λειτουργεί. Το πλαίσιο Xposed δεν μπορεί να αποτύχει τυχαία με ορισμένους συνδυασμούς ROM ή/και αγκίστρων (εκτός από εξαιρετικές περιπτώσεις). Με άλλα λόγια, εάν ένας χρήστης αντιμετωπίζει πρόβλημα, αυτό το πρόβλημα θα πρέπει είτε να είναι λάθος του χρήστη (για όχι εγκατάσταση/ενεργοποίηση κάτι σωστά) ή σφάλμα του προγραμματιστή της μονάδας (για την ύπαρξη σφαλμάτων στο μονάδα μέτρησης). Αλλά θα πρέπει να είναι σχεδόν βέβαιο ότι το ίδιο το πλαίσιο λειτουργεί όπως προβλέπεται και δεν είναι η πηγή των σφαλμάτων που θα άφηναν τους χρήστες απογοητευμένους και τους προγραμματιστές σε σύγχυση.
  2. Για τους χρήστες, το πλαίσιο πρέπει να είναι εύκολο στην εγκατάσταση στη συσκευή και στη ROM τους, δεν έχει σημασία αν έχουν μια Samsung που εκτελεί την πιο πρόσφατη έκδοση του TouchWiz ή ένα Nexus με εγκατεστημένο LineageOS. Το πρόγραμμα εγκατάστασης Xposed χειρίζεται όλα αυτά στα παρασκήνια. Πρέπει να γίνει πολλή δουλειά σε αυτό για να δοκιμάσετε το πρόγραμμα εγκατάστασης και το πλαίσιο σε μια ποικιλία συσκευών και συνδυασμών ROM. Εντοπίζονται σφάλματα, συχνά λόγω διαφορετικών υλοποιήσεων από τους OEM, και πρέπει να διορθωθούν για να διασφαλιστεί η αξιοπιστία για όλους τους χρήστες.
  3. Οι μεγάλες αναθεωρήσεις Android μπορεί μερικές φορές να επιφέρουν σημαντικές αλλαγές, κάτι που απαιτεί επανεξέταση τμημάτων της αρχιτεκτονικής του πλαισίου για προσαρμογή σε αυτές τις αλλαγές. Μερικές φορές, πρόσθετες ευκαιρίες εμφανίζονται επίσης με νεότερες εκδόσεις, που απαιτούν επιπλέον χρόνο για να έχετε ένα καλύτερο προϊόν. Όταν εισήχθη για πρώτη φορά το ART, για παράδειγμα, το Xposed απενεργοποίησε ορισμένες βελτιστοποιήσεις, έτσι ώστε το hooking να λειτουργεί σωστά. Στην περίπτωση του Nougat, τομεταγλωττιστής just-in-time (JIT). φέρνει μια ευκαιρία ναδιατηρήστε αυτές τις βελτιστοποιήσεις.

Πολλές από τις παραπάνω εργασίες υπεισέρχονται σε μικρές λεπτομέρειες, όπου το μεγαλύτερο μέρος του πλαισίου λειτουργεί όπως προβλέπεται, αλλά το ασυνέπειες και δευτερεύοντα ζητήματα θα το καθιστούσαν τυχερό παιχνίδι για τους χρήστες και εφιάλτη υποστήριξης και ανάπτυξης για την ενότητα προγραμματιστές. Το προϊόν που κυκλοφόρησε, ωστόσο, έχει στόχο να είναι χρησιμοποιήσιμο από όλους και χωρίς εκπλήξεις. Υπάρχουν ορισμένες εξαιρέσεις, φυσικά, καθώς ορισμένες αλλαγές των OEM απαιτούν περισσότερη προσπάθεια προσαρμογής, αλλά σε αυτές είναι δευτερεύουσες και η συντριπτική πλειοψηφία των χρηστών (και προγραμματιστών) απολαμβάνει ένα σταθερό και αξιόπιστο Xposed εμπειρία. Τυχόν εξαιρέσεις που συναντώνται τεκμηριώνονται μεσαφείς αποποιήσεις ευθυνών για να μην εκπλαγεί κανείς.

Έχοντας υπόψη τα παραπάνω, το όραμα του rovo89 για το Xposed είναι να είναι μια σταθερή λύση που παρέχει ένα αξιόπιστο και εύκολο στη χρήση συμβόλαιο για χρήστες και προγραμματιστές. Η φιλοσοφία του, αν και μπορεί να διαφωνείτε μαζί της, είναι απλή και κατανοητή: ένα προϊόν πρέπει να είναι απελευθερώνεται όταν είναι έτοιμο να χρησιμοποιηθεί όπως προβλέπεται, καθώς η απελευθέρωσή του προηγουμένως οδηγεί σε περισσότερα προβλήματα από ό οφέλη.


υπομονάδα Xposed ART της abforce για το Nougat

Είμαστε απρόθυμοι να ονομάσουμε το έργο του abforce "λιμάνι" ή "ανεπίσημο Xposed", καθώς αυτό είναι ανακριβές και παραπλανητικό. Όπως είδαμε, το Xposed έχει δύο βασικά στοιχεία:

  1. Ο πυρήνας του ίδιου του πλαισίου Xposed, που χειρίζεται τη μαγεία των μεθόδων αγκίστρωσης.
  2. Το πρόγραμμα εγκατάστασης Xposed, το οποίο διασφαλίζει ότι το πλαίσιο είναι εύκολο να εγκατασταθεί σωστά σε όλες τις συσκευές.

Αυτό που έκανε το abforce ήταν να μεταφέρει τον κώδικα Marshmallow του rovo89 στο πρώτο μέρος (μόνο το πλαίσιο Xposed) στο Nougat, με τρόπο που θα απαιτούσε την προετοιμασία των αλλαγών κατά τη μεταγλώττιση της προσαρμοσμένης ROM. Επιπλέον, πολλά μικρά (αλλά σημαντικά) μέρη του πλαισίου δεν είναι πλήρως προσαρμοσμένα στο Nougat. Ως εκ τούτου, η συμπεριφορά μπορεί να είναι ασυνεπής και ενώ λειτουργεί ως επί το πλείστον (αν και δενΓιαΟλοι), δεν είναι αξιόπιστο. Για τους προγραμματιστές και τους χρήστες της ενότητας, θα ήταν απλώς να βασίζονται σε μια ελλιπή και ασυνεπή υλοποίηση παρέχει μια κακή εμπειρία για όλα τα εμπλεκόμενα μέρη, με ορισμένες μονάδες δεν λειτουργούν καθόλου ή προκαλούν τη μη εκκίνηση της συσκευής. Ενώ πολλοί χρήστες μπορεί να είναι εντάξει με το να έχουν κάτι παρά τίποτα, η άποψη των προγραμματιστών εξακολουθεί να είναι απολύτως κατανοητή (ειδικά αν έχετε κατά νου ότι οι δηλώσεις αποποίησης ευθυνών δεν σταματούν τις ψευδείς ερωτήσεις υποστήριξης και τις γκρίνιες).

(Εκτός από τα παραπάνω δύο σημαντικά σημεία, θα περιμένουμε επίσης περαιτέρω αλλαγές στο τελικό, επίσημο πλαίσιο Xposed για να επωφεληθείτε από τις αλλαγές που εισάγονται στο Nougat.)

Πρέπει να σημειωθεί ότι το abforce έκανε εξαιρετική δουλειά όταν οι περισσότεροι αρκέστηκαν στην απλή συζήτηση, αλλά η δουλειά του απέχει πολύ από την πλήρη εμπειρία του Xposed και κανένας προγραμματιστής ή ιστολόγιο δεν ισχυρίζεται το αντίθετο (και σίγουρα δεν στερείται και πάλι, δεν έχουμε παρά σεβασμό προς όλους τους πραγματικούς προγραμματιστές που καταβάλλουν πραγματική δουλειά και προσπάθεια σε αυτό). Στην πραγματικότητα, όπως θα θίξουμε λίγο, ορισμένες από τις αντιδράσεις της κοινότητας (είτε είναι χρήστες είτε "προγραμματιστές") είναι το μόνο δυσάρεστο μέρος αυτής της αλυσίδας εξελίξεων.


Ας κόψουμε το κυνήγι και ας πάμε κατευθείαν στο θέμα: κάθε κοινότητα έχει κακά στοιχεία και πτυχές. Με τόσο μεγάλη κοινότητα όσο και οι λάτρεις του Android, τα κακά στοιχεία μπορεί να φαίνονται σαν τεράστια μερίδα όταν δεν είναι παρά ένα μικρό μέρος (μεγάλο, αλλά ακόμα μικρό σε σχετικούς όρους). Ωστόσο, χωρίς να το επικαλύψουμε ζάχαρη, η ανταπόκριση της κοινότητας για την ανάπτυξη του Xposed for Nougat ήταν εξαιρετικά παιδαριώδης, αδιάφορη ή ανεύθυνη.

Το πρώτο σημαντικό ζήτημα ήταν η συγκαταβατική στάση που έδειξαν πολλοί σχετικά με τον "θάνατο του Xposed", επειδή αργεί πολύ να κυκλοφορήσει για το Nougat. Αυτό είναι παρά το rovo89 ενημερώσειςκαιδιαβεβαιώσεις, και παρά το ακριβές σενάριο που συνέβαινε με το Lollipop όταν παρουσιάστηκε η αρχική έκδοση του ART. Είναι καλό να σταματήσετε να χρησιμοποιείτε το Xposed, αλλά δεν είναι να προσβάλλετε τις δυνατότητες κανενός ή να επιτεθείτε σε άλλους επειδή έχουν διαφορετική φιλοσοφία ή ότι δεν διασφαλίζετε ότι οι ανάγκες σας που αναβοσβήνουν ικανοποιούνται αμέσως. Αυτό ισχύει ακόμη περισσότερο για ένα εντελώς δωρεάν έργο, όπου ο προγραμματιστής έχει εκφράσει τη μεθοδολογία ανάπτυξής του και τους λόγους πίσω από αυτήν.

Ένα άλλο ζήτημα με την ανταπόκριση της κοινότητας ήταν η παρανόηση της φύσης του έργου του abforce, με πολλούς να το χαιρετίζουν ως το νέο Xposed ή να το διαφημίζουν ως λιμάνι για το Nougat. Ένα σημαντικό πρόβλημα με αυτό ήταν με τους "προγραμματιστές" που σπεύδουν να προσφέρουν εκδόσεις με δυνατότητα flash χωρίς να κατανοούν (ή να ενδιαφέρονται για) τα μειονεκτήματα, καθώς δεν υπήρξαν αποποιήσεις προσφέρεται καθόλου σε ορισμένα νήματα, με μερικά μάλιστα να φτάνουν στο σημείο να πιστώνουν abforce και όχι το rovo89 (ο οποίος βρίσκεται πίσω από τη συντριπτική πλειοψηφία της δουλειάς στο Xposed) και άλλα συνεισφέροντες.

Ως τελευταίο σημείο, πιστεύουμε ότι πρέπει να αναφέρουμε ξανά τη φιλοσοφία ανάπτυξης του rovo89. Με πολλούς φωνητικούς χρήστες να ισχυρίζονται ότι θα ήταν ωφέλιμο να έχουν οι τελευταίες αλλαγές ανοιχτού κώδικα. Αν και αυτό ακούγεται καλό στη θεωρία, είναιδεν είναι τόσο εύκολο στην πράξη ειδικά αν λάβουμε υπόψη την εξήγηση του rovo89:

[...] Πιστεύω ότι και μόνο η απώθηση της τρέχουσας κατάστασης δεν θα βοηθούσε το έργο. Ίσως θα βλέπαμε "κάποια" απελευθέρωση πολύ γρήγορα από άτομα που μεταγλωττίζουν τον κώδικα, δείτε ότι φαίνεται να είναι δουλεύουν καλά και το δημοσιεύουν ως "λιμάνι τους", παρά τα θέματα και τα πράγματα που πρέπει να κάνουν που δεν θα γνώριζαν του. Οπότε πείτε με εγωιστή, αλλά δεν θα ήθελα να δω μια τέτοια μισοτελειωμένη κυκλοφορία.[Πηγή]

Κάτι που στην πραγματικότητα έχει αποδειχθεί μια αρκετά καλή πρόβλεψη της τρέχουσας κατάστασης, με αρκετούς "προγραμματιστές" να κάνουν αίτηση αλλαγές της abforce και προσφορά ZIP με δυνατότητα flash με ελάχιστες ή καθόλου προειδοποιήσεις, ελλιπείς πιστώσεις, όλα αυτά ενώ ζητάτε δωρεές.


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


Είστε ενθουσιασμένοι για το Xposed στη Nougat ROM σας; Ενημερώστε μας στα σχόλια!