Android 11 će ojačati skrivena API ograničenja i ukloniti metarefleksiju

click fraud protection

Android 9 Pie uveo je skrivena API ograničenja, a sada će Android 11 pooštriti ta ograničenja kako bi uklonio premosnicu meta-refleksije.

Za one od vas koji ne znaju, Google je predstavio prilično neugodnu promjenu u Androidu 9 Pie koja se tiče programera entuzijasta koji žele pomaknuti granice onoga što je moguće u Androidu. Govorim, naravno, o dodavanju skrivene API crne liste. S namjerom promicanja stabilnosti aplikacije, Google je blokirao pristup većini skrivenih API-ja - API-ja koji postoje u okviru Androida, ali nisu dokumentirani u Android SDK-u. Ovim se API-jima moglo pristupiti putem refleksije do Androida 9 Pie, a trenutačno im se još uvijek može pristupiti korištenjem zaobilaznog rješenja meta refleksije.

Ako nemate pojma o čemu govorim, vjerojatno biste trebali pročitajte članak koji sam napisao prije nekoliko mjeseci na ovu temu. Objasnit će sve što trebate znati o metarefleksiji i kako funkcionira. Nažalost, čini se da je Google primijetio ovo zaobilazno rješenje (ups). U novom predanju AOSP-u, Google je uveo kod za "očvršćavanje" Androidovih skrivenih API provjera. To u osnovi znači da meta refleksija više neće raditi.

Naravno, to neće utjecati na sve aplikacije. Kao i kod izvorne crne liste API-ja, to će utjecati samo na aplikacije koje ciljaju Android 11 (API razina 30) ili novije. I dalje možete ciljati API razinu 29 ili nižu i koristiti meta refleksiju. S Trgovinom Play progresivno povećanje minimalnih zahtjeva za ciljani SDK, međutim, ovo neće dugo biti valjano zaobilazno rješenje.

U ovom trenutku ne znam ni za jedno rješenje za aplikacije koje ciljaju API 30. Android 11 je ipak daleko, tako da postoje dobre šanse da će netko pronaći način da vrati pristup. U međuvremenu, ako koristite skrivene API-je, možda biste trebali podnijeti zahtjev za njihovu objavu u Androidu 11. Ako ste dobri u analizi C++ i Jave, a želite pokušati "popraviti" ovu malu situaciju s crnom listom, pogledajte relevantni commit.