V skladu z naborom zavez v AOSP lahko Google začne omejevati dostop do nedokumentiranih ali skritih API-jev v sistemu Android P. Številne aplikacije blagovnih znamk uporabljajo skrite API-je za izboljšanje funkcionalnosti, zato je lahko učinek zelo razširjen.
Posodobitev 28.2.18: Google je danes objavil objavo v spletnem dnevniku, ki potrjuje spremembe. Več podrobnosti na koncu članka.
Medtem ko so nekateri navdušenci nad Androidom špekulirati po kateri sladici bo poimenovana naslednja različica Androida, se v zakulisju dogaja nekaj zanimivih dogodkov. Opazili smo a nekaj omembe vrednih prihajajočih funkcij v Androidu P, vendar se je novejše odkritje v projektu Android Open Source Project (AOSP) izkazalo za veliko bolj zanimivo. Glede na te nedavne potrditve je lahko aplikacijam omejen dostop do API-jev, ki niso dokumentirani v Android SDK (kot so API-ji, označeni z atributom @hide javadoc-a).
Zakaj je to pomembno
Komplet za razvoj programske opreme Android (SDK) ponuja razvijalcem knjižnice API-jev in orodja, ki jih potrebujejo za testiranje in izdelavo novih aplikacij za Android. Z vsako novo izdajo Androida prihaja cela vrsta novih API-jev, ki so na voljo razvijalcem prek Android SDK. Kateri API-ji so na voljo za aplikacijo, je odvisno od različice compileSDKVersion, ki jo nastavi razvijalec. Zato je Google
nove zahteve Trgovine Play so tako pomembne – aplikacije bodo prisilile v posodobitev in prehod na uporabo novejših API-jev.Google gosti straneh dokumentacije za vsak razred in vse njegove metode, ki so na voljo na vsaki ravni API-ja. To je niz dokumentiranih API-jev, ki so na voljo v uradnem SDK-ju za Android. Po seznamu razredov lahko preprosto brskate z aplikacijo za Android, kot je nedavno izdana aplikacija Android SDK Search, ki jo je izdal Android Engineer Jake Wharton.
Cena: brezplačno.
4.1.
Vendar pa Google ne dokumentira vseh API-jev, ki so na voljo v vsaki izdaji za Android, ali pa niso na voljo v uradnem SDK-ju za Android. Pogosto obstajajo uporabni API-ji nedokumentirano, a so kljub temu zelo uporabni. Ni priporočljivo, da razvijalci gradijo svoje aplikacije z uporabo nedokumentiranih ali skritih API-jev, vendar mnogi to počnejo, ker preprosto ni druge možnosti, če želijo ponuditi določeno funkcijo. Razvijalci, ki uporabljajo skrite ali nedokumentirane API-je, si lahko zagotovijo tudi konkurenčno prednost, saj lahko ponudijo funkcije, ki jih imajo njihovi konkurenti, ki se držijo API-jev, ki jih ponuja Android SDK—ne more.
Čeprav ne morem zagotoviti seznama aplikacij, ki uporabljajo nedokumentirane API-je (razvijalci verjetno ne delijo katere uporabljajo, ker bi s tem dali prednost svojim tekmecem), je seznam verjetno precejšnji velik. Zato bi sklepal, da bi bila prepoved dostopa do skritih API-jev pomembna. Mark Murphy, ustanovitelj Commonsware, se strinja:
Strinjam se z oceno, da bo množična prepoved dostopa do elementov z @hide-annotated velika stvar, če bo do tega prišlo. Upajmo, da le malo aplikacij dostopa do teh elementov kot del ključne funkcije. Vendar sumim, da jih občasno uporablja veliko aplikacij blagovnih znamk, neposredno ali prek knjižnice.
Kaj se dogaja v sistemu Android P?
Te prihajajoče spremembe je prvi opazil višji priznani razvijalec XDA rovo89, razvijalec za Xposed Framework. Opozoril me je na dve obveznosti, eno od ki je bilo združeno, ki predstavlja novo orodje za gradnjo, imenovano 'hiddenapi.' To orodje spremeni zastavice dostopa vseh članov razreda znotraj datoteke DEX, če njihovi podpisi so prikazani na vhodnem sivem ali črnem seznamu, in če je tako, bodo označene metode obravnavane kot interni API-ji z omejenimi dostop. Druga potrditev opisuje, kako deluje črni seznam API-jev; onemogoča dostop do zagonski razred metode in polja, označena z zgoraj omenjenim 'hiddenapi', do katerih lahko razvijalci dostopajo s statičnim povezovanjem, refleksijo in JNI.
Glede na rovo89 je končni rezultat teh dveh sprememb v sistemu Android P naslednji:
Če se te objave združijo, bi to pomenilo, da aplikacije ne morejo več uporabljati/dostopati do skritih API-jev, tj. razrede, metode in polja, ki so v AOSP označena z @hide in zato niso del uradni SDK. To ne bi bila težava za module Xposed, saj bi lahko preprosto razveljavil te objave ali dovolil modulom, da dostop do teh API-jev. Vendar obstaja veliko aplikacij, ki izkoriščajo prednosti skritih API-jev, in te ne bi bile uspešne prihodnost.
Dejansko nadaljnje zaveze kažejo, da je to morda tisto, kar Google načrtuje. to zavezati navaja naslednje:
Čeprav ta posebna potrditev ni bila združena, ker je bila opuščena v korist 3 manjših potrditev, sporočilo o objavi opisuje namen teh sprememb. Še en niz se zaveže kažejo, da bo Google predlagal alternative razvijalcem, ki želijo uporabljati API-je, ki niso javni:
Vendar pa pogosto ni drugih možnosti za nekatere skrite API-je. Mi v XDA lahko govorimo iz izkušenj tukaj kot na žalost bo ta sprememba lahko pomenila konec nekaterih inovativnih aplikacij ali pa bo morda zahtevalo, da nekatere znane aplikacije zmanjšajo funkcionalnost. Ta prihajajoča sprememba se zdi po duhu podobna nedavni zatiranje storitev dostopnosti (to je bilo na srečo zaustavljeno kot je Google ocenil inovativne uporabe). Medtem ko večina aplikacij uporablja nedokumentirane API-je, to počne iz benignih razlogov, morda obstajajo nekatere aplikacije, ki so jih zlorabile v zlobne namene.
Zaradi tega Google morda zaklepa dostop do vseh skritih API-jev v sistemu Android P, da bi uporabnike zaščitil pred tistimi, ki jih zlorabljajo. Težko je reči, kako velik vpliv ima to lahko na uporabnike, a če ste razvijalec razmišljate o tem, da bi iskali AOSP, da bi našli inovativno uporabo skritega API-ja, potem boste morda želeli premisliti.
Posodobitev: Google potrdi
V blog objava objavljeno danes, 28. februarja, je Google potrdil te spremembe. Google navaja tveganja zrušitve za uporabnike in posledično prisili razvijalce, da uvedejo nujne popravke navaja, da se podjetje postopoma preusmerja k odvračanju razvijalcev od dostopa do ne-SDK vmesniki. Začenši z Androidom P se bodo omejitve razširile na jezikovne vmesnike Java SDK-ja.
Družba navaja, da bodo "nekatere metode in polja, ki niso SDK, omejena", čeprav niso pojasnili, katera bodo omejena. Sprva se bo omejitev osredotočala na vmesnike, ki se redko uporabljajo, nekaj časa pa bo podjetje dovoljevalo razvijalcem, da še naprej uporabljajo metode in polja, ki niso SDK, kjer je prehod na metodo SDK tehnično nujen zahtevno. Vendar se bodo sčasoma omejitve razširile, zato bi morali razvijalci aplikacij, ki uporabljajo metode, ki niso SDK, čim prej preiti na sistem Android P. Kar zadeva metode brez alternative SDK, Google od razvijalcev zahteva, da objavijo na svojih sledilnik hroščev z več informacijami.
Naslednji predogled za razvijalce, ki bo domnevno prišel kmalu, bo razvijalcem omogočil, da preizkusijo obstoječe aplikacije na črnem ali sivem seznamu pred končno izdajo.