„Google“ gali pašalinti prieigą prie nedokumentuotų / paslėptų API „Android P

click fraud protection

Pagal AOSP įsipareigojimų rinkinį „Google“ gali pradėti riboti prieigą prie nedokumentuotų arba paslėptų API „Android P“. Daugelis vardinių prekių ženklų programų naudoja paslėptas API, kad padidintų funkcijas, todėl poveikis gali būti plačiai paplitęs.

Atnaujinta 2018-02-28: „Google“ šiandien paskelbė tinklaraščio įrašą, patvirtinantį pakeitimus. Daugiau informacijos straipsnio pabaigoje.

Nors kai kurie „Android“ entuziastai spėliodamas kokiu desertu bus pavadinta kita Android versija, užkulisiuose vyksta įdomių įvykių. Mes pastebėjome a keletas vertų dėmesio būsimos „Android P“ funkcijos, tačiau naujesnis „Android Open Source Project“ (AOSP) atradimas pasirodė daug įdomesnis. Remiantis šiais naujausiais įsipareigojimais, programoms gali būti apribota prieiga prie API, kurios nėra dokumentuotos Android SDK (pvz., API, pažymėtos javadoc atributu @hide).


Kodėl tai svarbu

Android programinės įrangos kūrimo rinkinys (SDK) suteikia kūrėjams API bibliotekas ir įrankius, kurių reikia norint išbandyti ir kurti naujas Android programas. Su kiekvienu nauju Android leidimu atsiranda daugybė naujų API, kurias kūrėjai gali pasiekti per Android SDK. Kokios API pasiekiamos programai, priklauso nuo to, kokią kompiliavimo SDKVversiją kūrėjas nustato. Štai kodėl Google

nauji „Play“ parduotuvės reikalavimai yra tokie reikšmingi – tai privers programas atnaujinti ir pereiti prie naujesnių API.

Google priegloba dokumentacijos puslapiai kiekvienai klasei ir visiems jos metodams, kurie yra prieinami kiekviename API lygyje. Tai dokumentais pagrįstų API rinkinys, pasiekiamas oficialiame „Android“ SDK. Galite lengvai naršyti klasių sąrašą naudodami „Android“ programą, pvz., neseniai išleistą „Android“ inžinieriaus „Android SDK Search“ programą. Jake'as Whartonas.

SDK paieškaProgramuotojas: Jake'as Whartonas

Kaina: Nemokama.

4.1.

parsisiųsti

Tačiau ne visos API, kurios yra prieinamos kiekviename „Android“ leidime, yra dokumentuotos „Google“ arba prieinamos oficialiame „Android“ SDK. Dažnai yra naudingų API be dokumentų, bet vis dėlto yra labai naudingi. Nerekomenduojama kūrėjams kurti savo programų naudojant nedokumentuotas arba paslėptas API, tačiau daugelis tai daro, nes tiesiog nėra kitos išeities, jei nori pasiūlyti tam tikrą funkciją. Kūrėjai, naudojantys paslėptas arba nedokumentuotas API, taip pat gali įgyti konkurencinį pranašumą, nes jie gali pasiūlyti funkcijas, kurias siūlo jų konkurentai, kurie laikosi „Android“ siūlomų API SDK – negali.

Nors negaliu pateikti programų, kuriose naudojamos nedokumentuotos API, sąrašo (turbūt kūrėjai nesidalija kuriuos jie naudoja, nes tai padėtų jų konkurentams pakelti koją), sąrašas tikriausiai veikiau didelis. Taigi daryčiau išvadą, kad uždrausti prieigą prie paslėptų API būtų reikšminga. Markas Murphy, įkūrėjas Commonsware, sutinka:

Sutinku su vertinimu, kad masinis prieigos prie @hide anotuotų elementų uždraudimas bus didelis dalykas, jei taip atsitiks. Tikimės, kad nedaugelis programų pasiekia šiuos elementus kaip pagrindinių funkcijų dalį. Tačiau įtariu, kad daugelis vardinių prekių ženklų programų jas naudoja kartais, tiesiogiai arba per biblioteką.


Kas vyksta „Android P“?

Šiuos būsimus pakeitimus pirmasis pastebėjo XDA vyresnysis pripažintas kūrėjas rovo89, kūrėjas Xposed Framework. Jis man nurodė du įsipareigojimus, vieną iš jų kurios buvo susiliejo, kuriame pristatomas naujas kūrimo įrankis, vadinamas „hiddenapi“. Šis įrankis modifikuoja visų klasės narių prieigos žymas DEX faile if jų parašai rodomi įvesties pilkajame sąraše arba juodajame sąraše, o jei taip, pažymėti metodai bus traktuojami kaip vidinės API su apribotomis prieiga. Kitas įsipareigojimas aprašo, kaip veikia API juodasis sąrašas; tai neleidžia prieiti prie įkrovos klasė metodus ir laukus, pažymėtus pirmiau minėta „hiddenapi“, kuriuos kūrėjai gali pasiekti naudodami statinį susiejimą, atspindį ir JNI.

Pasak rovo89, galutinis šių dviejų „Android P“ pakeitimų rezultatas yra toks:

Jei šie įsipareigojimai bus sujungti, tai reikštų, kad programos nebegali naudoti / pasiekti paslėptų API. klasės, metodai ir laukai, kurie AOSP yra pažymėti @hide ir todėl nėra dalis oficialus SDK. Tai nebūtų problema Xposed moduliams, nes galėčiau lengvai grąžinti tuos įsipareigojimus arba leisti moduliams taip pat pasiekti šias API. Tačiau yra daug programų, kurios naudojasi paslėptomis API, ir jos nepavyks ateities.

Iš tiesų, tolesni įsipareigojimai rodo, kad tai gali būti Google. Tai įsipareigoti teigia:

Nors šis konkretus įsipareigojimas nebuvo sujungtas, nes buvo atsisakyta 3 mažesnių įsipareigojimų naudai, įsipareigojimo pranešime aprašomas šių pakeitimų tikslas. Kitas rinkinys įsipareigoja parodyti, kad „Google“ pasiūlys alternatyvų kūrėjams, kurie nori naudoti neviešas API:

Tačiau tam tikroms paslėptoms API dažnai nėra alternatyvų. Mes, XDA, galime kalbėti iš patirties deja, šis pakeitimas gali reikšti kai kurių naujoviškų programų pabaigą arba gali prireikti kai kurių žinomų programų, kad jų funkcionalumą. Šis būsimas pokytis savo dvasia atrodo panašus į pastarojo meto susidoroti su pritaikymo neįgaliesiems paslaugomis (tai buvo laimei pristabdyta kaip „Google“ įvertino naujoviškus naudojimo būdus). Nors dauguma programų, kuriose naudojamos nedokumentuotos API, tai daro dėl nepalankių priežasčių, gali būti, kad kai kurios programos netinkamai jas naudojo nešvankiais tikslais.

Dėl šios priežasties „Google“ gali užblokuoti prieigą prie visų paslėptų API sistemoje „Android P“, kad apsaugotų vartotojus nuo kelių, kurie jomis piktnaudžiauja. Sunku pasakyti, kiek tai gali turėti įtakos vartotojams, bet jei esate kūrėjas Jei norite ieškoti naujoviško paslėptos API naudojimo per AOSP, galbūt norėsite tai padaryti persvarstyti.


Atnaujinimas: „Google“ patvirtina

A tinklaraščio straipsnis paskelbta šiandien, vasario 28 d., „Google“ patvirtino šiuos pakeitimus. Nurodydama naudotojams kylančią avarijų riziką ir vėliau verčiančią kūrėjus įdiegti avarinius pataisymus, „Google“. teigia, kad bendrovė palaipsniui pradėjo atgrasyti kūrėjus nuo prieigos ne SDK sąsajos. Pradedant nuo „Android P“, apribojimai bus išplėsti ir apims SDK „Java“ kalbos sąsajas.

Bendrovė teigia, kad „kai kurie ne SDK metodai ir laukai bus apriboti“, nors jie nepaaiškino, kurie iš jų bus ribojami. Iš pradžių apribojimas bus sutelktas į retai naudojamas sąsajas, o kurį laiką įmonė leis kūrėjams ir toliau naudoti ne SDK metodus ir laukus, kur perėjimas prie SDK metodo yra techniškas iššūkis. Tačiau ilgainiui apribojimai išsiplės, todėl programų kūrėjai, naudojantys ne SDK metodus, turėtų kuo greičiau pereiti, ruošdamiesi naudoti „Android P“. Kalbant apie metodus be SDK alternatyvos, „Google“ prašo kūrėjų paskelbti savo klaidų sekimo priemonė su daugiau informacijos.

Kita kūrėjo peržiūra, kuri tikriausiai pasirodys netrukus, leis kūrėjams išbandyti esamas programas pagal juodąjį arba pilkąjį sąrašą prieš galutinį leidimą.