Η Google ενδέχεται να καταργήσει την πρόσβαση σε μη τεκμηριωμένα/κρυφά API στο Android P

click fraud protection

Σύμφωνα με ένα σύνολο δεσμεύσεων στο AOSP, η Google μπορεί να αρχίσει να περιορίζει την πρόσβαση σε μη τεκμηριωμένα ή κρυφά API στο Android P. Πολλές εφαρμογές επωνυμίας χρησιμοποιούν κρυφά API για να αυξήσουν τη λειτουργικότητα, επομένως το εφέ μπορεί να είναι ευρέως διαδεδομένο.

Ενημέρωση 28/2/18: Η Google δημοσίευσε σήμερα μια ανάρτηση ιστολογίου επιβεβαιώνοντας τις αλλαγές. Περισσότερες λεπτομέρειες στο τέλος του άρθρου.

Ενώ ορισμένοι λάτρεις του Android είναι εικασίες Τι επιδόρπιο θα πάρει το όνομα της επόμενης έκδοσης του Android, υπάρχουν μερικές ενδιαφέρουσες εξελίξεις που συμβαίνουν στα παρασκήνια. Έχουμε εντοπίσει ένα λίγα αξιοσημείωτα επερχόμενες δυνατότητες στο Android P, αλλά μια πιο πρόσφατη ανακάλυψη στο Android Open Source Project (AOSP) έχει αποδειχθεί πολύ πιο ενδιαφέρουσα. Σύμφωνα με αυτές τις πρόσφατες δεσμεύσεις, ενδέχεται να περιοριστεί η πρόσβαση των εφαρμογών σε API που δεν είναι τεκμηριωμένα στο Android SDK (όπως τα API που επισημαίνονται με το χαρακτηριστικό του javadoc @hide).


Γιατί αυτό έχει σημασία

Το Android Software Development Kit (SDK) παρέχει στους προγραμματιστές βιβλιοθήκες API και εργαλεία που χρειάζονται για να δοκιμάσουν και να δημιουργήσουν νέες εφαρμογές Android. Με κάθε νέα έκδοση του Android έρχεται μια ολόκληρη σειρά από νέα API που είναι διαθέσιμα στους προγραμματιστές μέσω του Android SDK. Τα API που είναι διαθέσιμα σε μια εφαρμογή εξαρτώνται από το ποια compileSDKVersion ορίζει ο προγραμματιστής. Γι' αυτό της Google νέες απαιτήσεις του Play Store είναι τόσο σημαντικές—θα αναγκάσει τις εφαρμογές να ενημερώσουν και να μετεγκατασταθούν στη χρήση νεότερων API.

οικοδεσπότες Google σελίδες τεκμηρίωσης για κάθε κλάση και όλες τις μεθόδους της που είναι διαθέσιμες σε κάθε επίπεδο API. Αυτά είναι το σύνολο των τεκμηριωμένων API που είναι διαθέσιμα στο επίσημο Android SDK. Μπορείτε να περιηγηθείτε στη λίστα των τάξεων εύκολα χρησιμοποιώντας μια εφαρμογή Android, όπως η εφαρμογή αναζήτησης Android SDK που κυκλοφόρησε πρόσφατα από το Android Engineer Τζέικ Γουόρτον.

Αναζήτηση SDKΠρογραμματιστής: Τζέικ Γουόρτον

Τιμή: Δωρεάν.

4.1.

Κατεβάστε

Ωστόσο, δεν είναι όλα τα API που είναι διαθέσιμα σε κάθε έκδοση Android τεκμηριωμένα από την Google ή διαθέσιμα στο επίσημο Android SDK. Υπάρχουν συχνά χρήσιμα API που είναι χωρίς έγγραφα, αλλά παρόλα αυτά είναι πολύ χρήσιμα. Δεν συνιστάται στους προγραμματιστές να δημιουργούν τις εφαρμογές τους χρησιμοποιώντας μη τεκμηριωμένα ή κρυφά API, αλλά πολλοί το κάνουν επειδή απλά δεν υπάρχει εναλλακτική λύση εάν θέλουν να προσφέρουν μια συγκεκριμένη δυνατότητα. Οι προγραμματιστές που χρησιμοποιούν κρυφά ή μη τεκμηριωμένα API μπορούν επίσης να έχουν ανταγωνιστικό πλεονέκτημα, δεδομένου ότι μπορούν να προσφέρουν δυνατότητες που έχουν οι ανταγωνιστές τους—οι οποίοι εμμένουν στα API που προσφέρει το Android SDK—δεν μπορεί.

Παρόλο που δεν μπορώ να παράσχω μια λίστα εφαρμογών που χρησιμοποιούν μη τεκμηριωμένα API (οι προγραμματιστές πιθανώς δεν μοιράζονται ποιες χρησιμοποιούν γιατί θα ωφελούσε τους ανταγωνιστές τους), η λίστα είναι μάλλον μάλλον μεγάλο. Επομένως, θα συμπέρανα ότι η απαγόρευση πρόσβασης σε κρυφά API θα ήταν σημαντική. Mark Murphy, ιδρυτής του Commonsware, συμφωνεί:

Συμφωνώ με την εκτίμηση ότι η μαζική απαγόρευση πρόσβασης σε στοιχεία με σχολιασμό @hide θα είναι μεγάλη υπόθεση, εάν αυτό συμβεί. Ας ελπίσουμε ότι λίγες εφαρμογές έχουν πρόσβαση σε αυτά τα στοιχεία ως μέρος της βασικής λειτουργικότητας. Ωστόσο, υποπτεύομαι ότι πολλές εφαρμογές επωνυμίας τις χρησιμοποιούν περιστασιακά, απευθείας ή μέσω μιας βιβλιοθήκης.


Τι συμβαίνει στο Android P;

Αυτές οι επερχόμενες αλλαγές σημειώθηκαν για πρώτη φορά από τον XDA Senior Recognized Developer rovo89, ο προγραμματιστής του Xposed Framework. Μου επεσήμανε δύο δεσμεύσεις, τη μία οι οποίες υπήρξε συγχωνεύτηκαν, το οποίο εισάγει ένα νέο εργαλείο κατασκευής που ονομάζεται "hiddenapi". Αυτό το εργαλείο τροποποιεί τις σημαίες πρόσβασης όλων των μελών κλάσης μέσα σε ένα αρχείο DEX if οι υπογραφές τους εμφανίζονται σε μια γκρίζα λίστα εισόδου ή μια μαύρη λίστα και, αν ναι, οι επισημασμένες μέθοδοι θα αντιμετωπίζονται ως εσωτερικά API με περιορισμένα πρόσβαση. Η άλλη δέσμευση περιγράφει πώς λειτουργεί η μαύρη λίστα API. εμποδίζει την πρόσβαση σε κατηγορία μπότας μεθόδους και πεδία που επισημαίνονται με το προαναφερθέν «hiddenapi» στα οποία οι προγραμματιστές μπορούν να έχουν πρόσβαση μέσω στατικής σύνδεσης, ανάκλασης και JNI.

Σύμφωνα με το rovo89, το τελικό αποτέλεσμα αυτών των δύο αλλαγών στο Android P είναι το εξής:

Εάν αυτές οι δεσμεύσεις συγχωνευθούν, θα σημαίνει ότι οι εφαρμογές δεν μπορούν πλέον να χρησιμοποιούν/έχουν πρόσβαση σε κρυφά API, δηλαδή κλάσεις, μέθοδοι και πεδία που σχολιάζονται με @hide στο AOSP και επομένως δεν αποτελούν μέρος του επίσημο SDK. Αυτό δεν θα ήταν πρόβλημα για τις μονάδες Xposed, καθώς θα μπορούσα εύκολα να επαναφέρω αυτές τις δεσμεύσεις ή να επιτρέψω στις μονάδες να πρόσβαση σε αυτά τα API. Ωστόσο, υπάρχουν πολλές εφαρμογές που εκμεταλλεύονται τα κρυφά API και αυτά θα αποτύχουν μελλοντικός.

Πράγματι, περαιτέρω δεσμεύσεις δείχνουν ότι αυτό μπορεί να είναι αυτό που σχεδιάζει η Google. Αυτό διαπράττω αναφέρει τα εξής:

Αν και αυτή η συγκεκριμένη δέσμευση δεν συγχωνεύτηκε καθώς εγκαταλείφθηκε υπέρ 3 μικρότερων δεσμεύσεων, το μήνυμα δέσμευσης περιγράφει τον σκοπό αυτών των αλλαγών. Ένα άλλο σετ από δεσμεύεται δείχνουν ότι η Google θα προτείνει εναλλακτικές λύσεις σε προγραμματιστές που επιδιώκουν να χρησιμοποιήσουν μη δημόσια API:

Ωστόσο, συχνά δεν υπάρχουν εναλλακτικές λύσεις για ορισμένα κρυφά API. Εμείς στο XDA μπορούμε να μιλήσουμε από εμπειρία εδώ ως δυστυχώς, αυτή η αλλαγή μπορεί να σημάνει το τέλος ορισμένων καινοτόμων εφαρμογών ή μπορεί να απαιτήσει από ορισμένες επώνυμες εφαρμογές να μειώσουν τις λειτουργικότητα. Αυτή η επερχόμενη αλλαγή φαίνεται παρόμοια σε πνεύμα με την πρόσφατη καταστολή των υπηρεσιών προσβασιμότητας (αυτό ήταν ευτυχώς σταμάτησε καθώς η Google αξιολόγησε τις καινοτόμες χρήσεις). Ενώ οι περισσότερες εφαρμογές που χρησιμοποιούν μη τεκμηριωμένα API το κάνουν για ευνοϊκούς λόγους, μπορεί να υπάρχουν ορισμένες εφαρμογές που τις έχουν κάνει κατάχρηση για κακόβουλους σκοπούς.

Εξαιτίας αυτού, η Google ενδέχεται να κλειδώνει την πρόσβαση σε όλα τα κρυφά API στο Android P, προκειμένου να προστατεύσει τους χρήστες από τους λίγους που τα κάνουν κατάχρηση. Είναι δύσκολο να πούμε πόσο μεγάλο αντίκτυπο μπορεί να έχει αυτό στους χρήστες, αλλά αν είστε προγραμματιστής εξετάζοντας το ενδεχόμενο να ψάξετε μέσω του AOSP για να βρείτε μια καινοτόμο χρήση ενός κρυφού API, τότε μπορεί να το θέλετε αναθεωρώ.


Ενημέρωση: Επιβεβαιώνει η Google

Σε ένα ανάρτηση που δημοσιεύτηκε σήμερα, 28 Φεβρουαρίου, η Google επιβεβαίωσε αυτές τις αλλαγές. Επικαλούμενη κινδύνους σύγκρουσης για τους χρήστες και αναγκάζοντας στη συνέχεια τους προγραμματιστές να αναπτύξουν επείγουσες επιδιορθώσεις, η Google δηλώνει ότι η εταιρεία στρέφεται σταδιακά προς την αποθάρρυνση των προγραμματιστών από την πρόσβαση εκτός SDK διεπαφές. Ξεκινώντας με το Android P, οι περιορισμοί θα επεκταθούν για να καλύψουν τις διεπαφές γλώσσας Java του SDK.

Η εταιρεία δηλώνει ότι "ορισμένες μέθοδοι και πεδία που δεν είναι SDK θα περιοριστούν", αν και δεν διευκρίνισε ποιες θα περιοριστούν. Αρχικά ο περιορισμός θα επικεντρωθεί σε διεπαφές που χρησιμοποιούνται σπάνια και για λίγο η εταιρεία θα το επιτρέψει προγραμματιστές να συνεχίσουν να χρησιμοποιούν μεθόδους και πεδία που δεν είναι SDK όπου η μετάβαση σε μια μέθοδο SDK είναι τεχνικά προκλητική. Ωστόσο, τελικά οι περιορισμοί θα διευρυνθούν, επομένως οι προγραμματιστές εφαρμογών που χρησιμοποιούν μεθόδους που δεν είναι SDK θα πρέπει να μεταβούν το συντομότερο δυνατό στο πλαίσιο προετοιμασίας για το Android P. Όσον αφορά τις μεθόδους χωρίς εναλλακτική λύση SDK, η Google ζητά από τους προγραμματιστές να δημοσιεύσουν στο δικό τους ανιχνευτής σφαλμάτων με περισσότερες πληροφορίες.

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