Google bi mogao ukloniti pristup nedokumentiranim/skrivenim API-jima u Androidu P

click fraud protection

Prema skupu obaveza u AOSP-u, Google bi mogao početi ograničavati pristup nedokumentiranim ili skrivenim API-jima u Androidu P. Mnoge aplikacije poznatih robnih marki koriste skrivene API-je za povećanje funkcionalnosti, tako da učinak može biti široko rasprostranjen.

Ažuriranje 28.2.18: Google je danas objavio post na blogu koji potvrđuje promjene. Više detalja na kraju članka.

Dok neki entuzijasti za Android jesu nagađajući po kojem će desertu biti nazvana sljedeća verzija Androida, postoje neki zanimljivi događaji iza kulisa. Uočili smo a nekoliko vrijednih pažnje nadolazećih značajki u Androidu P, ali novije otkriće u Android Open Source Projectu (AOSP) pokazalo se mnogo zanimljivijim. Prema ovim nedavnim obvezama, aplikacijama može biti ograničen pristup API-jima koji nisu dokumentirani u Android SDK-u (kao što su API-ji označeni javadoc atributom @hide).


Zašto je ovo važno

Android Software Development Kit (SDK) pruža programerima API biblioteke i alate koji su im potrebni za testiranje i izradu novih Android aplikacija. Sa svakim novim izdanjem Androida dolazi cijeli niz novih API-ja koji su programerima dostupni putem Android SDK-a. Koji su API-ji dostupni aplikaciji ovise o tome koju verziju compileSDK-a postavlja razvojni programer. Zato Googleov

novi zahtjevi Trgovine Play su toliko značajni—primorat će aplikacije da se ažuriraju i migriraju na korištenje novijih API-ja.

Google domaćini stranice dokumentacije za svaku klasu i sve njene metode koje su dostupne na svakoj razini API-ja. Ovo je skup dokumentiranih API-ja koji su dostupni u službenom Android SDK-u. Popis klasa možete lako pregledavati pomoću Android aplikacije kao što je nedavno objavljena Android SDK Search aplikacija Android Engineera Jake Wharton.

SDK pretraživanjeProgramer: Jake Wharton

Cijena: besplatno.

4.1.

preuzimanje datoteka

Međutim, Google nije dokumentirao sve API-je koji su dostupni u svakom izdanju Androida niti su dostupni u službenom Android SDK-u. Često postoje korisni API-ji koji su nedokumentovan, ali su svejedno vrlo korisni. Ne preporučuje se da programeri grade svoje aplikacije koristeći nedokumentirane ili skrivene API-je, ali mnogi to čine jer jednostavno nema alternative ako žele ponuditi određenu značajku. Programeri koji koriste skrivene ili nedokumentirane API-je također se mogu staviti u konkurentsku prednost, budući da mogu ponuditi značajke koje imaju njihovi konkurenti—koji se drže API-ja koje nudi Android SDK—ne može.

Iako ne mogu dati popis aplikacija koje koriste nedokumentirane API-je (programeri vjerojatno ne dijele koje koriste jer bi time dali prednost svojim konkurentima), popis je vjerojatno bolji velika. Stoga bih zaključio da bi zabrana pristupa skrivenim API-jima bila značajna. Mark Murphy, osnivač Commonsware, slaže se:

Slažem se s procjenom da će skupna zabrana pristupa @hide-annotated stavkama biti velika stvar, ako do toga dođe. Nadajmo se da nekoliko aplikacija pristupa ovim stavkama kao dijelu ključne funkcije. Međutim, sumnjam da ih mnoge aplikacije poznatih robnih marki koriste povremeno, izravno ili putem knjižnice.


Što se događa u Androidu P?

Ove nadolazeće promjene prvi je primijetio XDA Senior Recognized Developer rovo89, programer za Xposed Framework. Ukazao mi je na dva obveza, jedan od koji je bio spojeno, koji predstavlja novi alat za izradu pod nazivom "hiddenapi". Ovaj alat mijenja pristupne oznake svih članova klase unutar DEX datoteke ako njihovi se potpisi pojavljuju na ulaznoj sivoj ili crnoj listi, i ako je tako, označene metode će se tretirati kao interni API-ji s ograničenim pristup. Drugi commit opisuje kako radi crna lista API-ja; onemogućuje pristup klasa dizanja metode i polja označena gore spomenutim 'hiddenapi' kojima programeri mogu pristupiti statičkim povezivanjem, refleksijom i JNI.

Prema rovo89, krajnji rezultat ove dvije promjene u Androidu P je sljedeći:

Ako se ove obveze spoje, to bi značilo da aplikacije više ne mogu koristiti/pristupati skrivenim API-jima, tj. klase, metode i polja koja su označena s @hide u AOSP-u i stoga nisu dio službeni SDK. To ne bi predstavljalo problem za Xposed module jer bih mogao lako vratiti te obveze ili dopustiti modulima da također pristupiti ovim API-jima. Ali postoje mnoge aplikacije koje koriste prednosti skrivenih API-ja, a one ne bi uspjele budućnost.

Doista, daljnje obveze pokazuju da bi ovo moglo biti ono što Google planira. Ovaj počiniti navodi sljedeće:

Premda ovo određeno uvrštavanje nije spojeno jer je napušteno u korist 3 manja uvrštavanja, poruka uvrštavanja opisuje svrhu ovih promjena. Još jedan set obvezuje se pokazati da će Google predložiti alternative programerima koji žele koristiti API-je koji nisu javni:

Međutim, često ne postoje alternative određenim skrivenim API-jima. Mi u XDA možemo govoriti iz iskustva ovdje kao nažalost ova promjena može značiti kraj nekih inovativnih aplikacija ili može zahtijevati da neke poznate aplikacije smanje svoje funkcionalnost. Ova nadolazeća promjena u duhu je slična nedavnoj slamanje usluga pristupačnosti (to je bilo srećom zastao kao što je Google ocjenjivao inovativne upotrebe). Dok većina aplikacija koje koriste nedokumentirane API-je to čine iz dobroćudnih razloga, možda postoje neke aplikacije koje su ih zloupotrijebile u opake svrhe.

Zbog toga Google možda zaključava pristup svim skrivenim API-jima u Androidu P kako bi zaštitio korisnike od nekolicine koji ih zlorabe. Teško je reći koliko bi ovo moglo utjecati na korisnike, ali ako ste programer s obzirom na traženje AOSP-a kako biste pronašli inovativnu upotrebu skrivenog API-ja, možda biste to željeli preispitati se.


Ažuriranje: Google potvrđuje

U post na blogu objavljen danas, 28. veljače, Google je potvrdio ove promjene. Navodeći rizike rušenja za korisnike i naknadno prisiljavajući programere da uvedu hitne popravke, Google navodi da se tvrtka postupno pomaknula prema odvraćanju programera od pristupa ne-SDK-u sučelja. Počevši od Androida P, ograničenja će se proširiti na Java jezična sučelja SDK-a.

Tvrtka navodi da će "neke ne-SDK metode i polja biti ograničeni", iako nisu razradili koji će biti ograničeni. U početku će se ograničenje usredotočiti na sučelja koja se rijetko koriste, a tvrtka će neko vrijeme dopustiti razvojnim programerima da nastave koristiti metode koje nisu SDK i polja gdje je prijelaz na SDK metodu tehnički izazovno. Međutim, s vremenom će se ograničenja proširiti, pa bi programeri aplikacija koji koriste metode koje nisu SDK trebali prijeći što je prije moguće u pripremi za Android P. Što se tiče metoda bez SDK alternative, Google traži od programera da objave na svojim tragač bugova s više informacija.

Sljedeći pregled za razvojne programere, koji će navodno uskoro stići, omogućit će programerima testiranje postojećih aplikacija na crnoj ili sivoj listi prije konačnog izdanja.