Xposed σε ART στο Android 5.0 Lollipop, πρόοδος και προβλήματα

Xposed on ART

Ένα από τα αγαπημένα μου projects στο Android αποτελεί το Xposed Framework, το οποίο επιτρέπει σε χρήστες Rooted συσκευών να αλλάξουν πλήρως την λειτουργία τους, χωρίς όμως να χρειαστεί να πειράξουν αρχεία συστήματος.

Μέχρι και σήμερα το Xposed δεν παίζει σε συσκευές με ART, με τον developer του να ρίχνει φως στις δυσκολίες που αντιμετωπίζει.

Το ART το πρωτογνωρίσαμε ως πειρματικό Runtime στο Android 4.4, ενώ στο Android 5.0 έγινε default (και μοναδικό) καταργώντας την Dalvik-VM. Από την εποχή του Android 4.4 o developer είχε ανακοινώσει ότι είχε καταφέρει σε δοκιμές του να φτιάξει ένα PoC (Proof of Concept) με το Xposed να παίζει σε ART. Πολλοί περίμεναν ότι μέχρι σήμερα θα έχει διαθέσει μία τελική λειτουργική έκδοση. Γιατί όμως δεν το έχει κάνει;

Μία απάντησή του πριν λίγες μέρες σε άλλο developer που έφτιαξε και αυτός ένα σχετικό PoC (κάνοντας ένα Xposed Module να παίζει σε ART) μας φανερώνει το γιατί:

I had tried a similar approach (among many others), but gave up on it for different reasons (e.g. different stack layouts for other platforms, very high complexity and risk for errors). I totally understand what you mean with "lot of problems" and the native crash, I went through this as well. It's kind of frustrating when you got a PoC working, but then come across a different case which totally invalidates your achievements...

Δοκίμασα και εγώ μία παρόμοια προσέγγιση (και πολλές ακόμα), αλλά την παράτησα για πολλούς λόγους (π.χ. διαφορετικά stack layouts για άλλες πλατφόρμες, υψηλή πολυπλοκότητα και κίνδυνος για λάθη). Καταλαβαίνω απολύτως τι εννοείς με το "πολλά προβλήματα" και το κρασάρισμα, τα πέρασα και εγώ. Είναι εκνευριστικό να καταφέρνεις να φτιάξεις ένα "λειτουργικό πρωτότυπο" και μετά να σου τυχαίνει μία διαφορετική περίπτωση που να ακυρώνει εντελώς αυτό που έχεις φτιάξει.

Η παραπάνω απάντηση πιστεύω καθιστά σαφές ότι υπάρχει τεράστια απόσταση μεταξύ του "φτιάχνω ένα λειτουργικό prototype" και του "διαθέτω μία τελική υλοποίηση".

Συν τοις άλλοις είναι σαφές ότι θέλει η υλοποίηση να μην αυξήσει κατακόρυφα την πολυπλοκότητα του project (το οποίο θα κάνει πολύ δυσκολότερη την μετέπειτα διαχείρισή του). Σε άλλα posts του έχει αναφέρει ότι το μη-αναλυτικό documentation σχετικά με την λειτουργία του ART (αλλά και τα λίγα σχόλια της Google στον κώδικα που σχετίζεται με αυτό), του πρόσθεσαν μεγάλο φόρτο εργασίας.

Η λύση στην οποία έχει καταλήξει (μέχρι σήμερα τουλάχιστον) ο developer, είναι να αντικαταστήσει τα libart.so και το libart-compiler.so με "χακαρισμένες" εκδόσεις τους, στις οποίες όμως (μεταξύ άλλων) θα έχει αφαιρέσει κάποιες από τις βελτιστοποιήσεις ταχύτητας που προσφέρει το νέο Runtime.

Ακόμα και έτσι θα είναι ευχάριστο όταν τελικά επιτευχθεί. Αναμένουμε.

Xposed on ART Xposed on ART Xposed on ART

Πηγή / Σχετικό Link

aByte