Google var noņemt piekļuvi nedokumentētiem/slēptiem API operētājsistēmā Android P

Saskaņā ar AOSP saistību kopumu Google var sākt ierobežot piekļuvi nedokumentētiem vai slēptiem API operētājsistēmā Android P. Daudzas zīmola lietotnes izmanto slēptās API, lai palielinātu funkcionalitāti, tāpēc efekts var būt plaši izplatīts.

Atjauninājums 28.02.18: Google šodien ir publicējis emuāra ziņu, apstiprinot izmaiņas. Sīkāka informācija raksta beigās.

Kaut arī daži Android entuziasti ir spekulējot kāda deserta vārdā tiks nosaukta nākamā Android versija, aizkulisēs notiek daži interesanti notikumi. Mēs esam pamanījuši a daži ievērības cienīgi gaidāmās Android P funkcijas, taču jaunāks atklājums Android atvērtā pirmkoda projektā (AOSP) ir izrādījies daudz interesantāks. Saskaņā ar šīm nesenajām saistībām lietojumprogrammām var tikt ierobežota piekļuve API, kas nav dokumentētas Android SDK (piemēram, API, kas apzīmētas ar javadoc atribūtu @hide).


Kāpēc tas ir svarīgi

Android programmatūras izstrādes komplekts (SDK) nodrošina izstrādātājiem API bibliotēkas un rīkus, kas tiem nepieciešami jaunu Android lietojumprogrammu testēšanai un izveidei. Ar katru jauno Android laidienu nāk vesela virkne jaunu API, kas izstrādātājiem ir pieejamas, izmantojot Android SDK. Tas, kādi API ir pieejami lietojumprogrammai, ir atkarīgi no izstrādātāja iestatītās kompilēšanas SDKVversion. Tāpēc Google

jaunās Play veikala prasības ir tik nozīmīgas — tas liks lietojumprogrammām atjaunināt un migrēt uz jaunāku API.

Google mitinātāji dokumentācijas lapas katrai klasei un visām tās metodēm, kas ir pieejamas katrā API līmenī. Šīs ir dokumentēto API kopas, kas ir pieejamas oficiālajā Android SDK. Varat ērti pārlūkot nodarbību sarakstu, izmantojot Android lietotni, piemēram, Android Engineer nesen izlaisto Android SDK meklēšanas lietotni. Džeiks Vārtons.

SDK meklēšanaIzstrādātājs: Džeiks Vārtons

Cena: bezmaksas.

4.1.

Lejupielādēt

Tomēr ne visas API, kas ir pieejamas katrā Android laidienā, ir dokumentējis Google vai tās ir pieejamas oficiālajā Android SDK. Bieži vien ir noderīgas API nedokumentēts, taču tie tomēr ir ļoti noderīgi. Izstrādātājiem nav ieteicams veidot savas lietotnes, izmantojot nedokumentētas vai slēptas API, taču daudzi to dara, jo vienkārši nav alternatīvas, ja viņi vēlas piedāvāt noteiktu funkciju. Izstrādātāji, kas izmanto slēptas vai nedokumentētas API, var arī iegūt konkurences priekšrocības, jo viņi var piedāvāt funkcijas, ko piedāvā viņu konkurenti, kuri pieturas pie Android piedāvātajām API SDK — nevar.

Lai gan es nevaru sniegt sarakstu ar lietotnēm, kurās tiek izmantotas nedokumentētas API (izstrādātāji, iespējams, nekopīgo kuras viņi izmanto, jo tas palīdzētu viņu konkurentiem), saraksts, iespējams, ir drīzāk liels. Tādējādi es secinu, ka piekļuves aizliegšana slēptajām API būtu nozīmīga. Marks Mērfijs, dibinātājs Commonsware, piekrīt:

Es piekrītu novērtējumam, ka lielapjoma piekļuves aizliegšana @hide anotētiem vienumiem būs liela problēma, ja tas notiks. Cerams, ka dažas lietotnes piekļūst šiem vienumiem kā daļu no galvenās funkcionalitātes. Tomēr man ir aizdomas, ka daudzas zīmola lietotnes tās izmanto reizēm, tieši vai izmantojot bibliotēku.


Kas notiek operētājsistēmā Android P?

Šīs gaidāmās izmaiņas pirmo reizi atzīmēja XDA vecākais atzītais izstrādātājs rovo89, izstrādātājs Xposed Framework. Viņš man norādīja uz divām saistībām, vienu no tām kuras ir bijis apvienoti, kas ievieš jaunu veidošanas rīku ar nosaukumu "hiddenapi". Šis rīks modificē visu klases dalībnieku piekļuves karogus DEX failā if viņu paraksti parādās ievades pelēkajā sarakstā vai melnajā sarakstā, un, ja tā, atzīmētās metodes tiks uzskatītas par iekšējām API ar ierobežotām piekļuvi. Otra apņemšanās apraksta, kā darbojas API melnais saraksts; tas liedz piekļuvi zābaku klase metodes un lauki, kas apzīmēti ar iepriekšminēto 'slēpto', kuriem izstrādātāji var piekļūt, izmantojot statisku saiti, atspoguļojumu un JNI.

Saskaņā ar rovo89 šo divu Android P izmaiņu gala rezultāts ir šāds:

Ja šīs saistības tiks apvienotas, tas nozīmētu, ka lietotnes vairs nevar izmantot/piekļūst slēptajām API. klases, metodes un lauki, kas AOSP ir anotēti ar @hide un tāpēc nav daļa no oficiālais SDK. Tas nebūtu problēma Xposed moduļiem, jo ​​es varētu viegli atsaukt šīs saistības vai ļaut moduļiem arī piekļūt šīm API. Taču ir daudzas lietotnes, kas izmanto slēptās API priekšrocības, un tās neizdosies nākotnē.

Patiešām, turpmākās saistības liecina, ka tas varētu būt tas, ko Google plāno. Šis apņemties norāda sekojošo:

Lai gan šī konkrētā apņemšanās netika apvienota, jo tā tika atcelta par labu 3 mazākām saistībām, paziņojumā par saistību izpildi ir aprakstīts šo izmaiņu mērķis. Vēl viens komplekts apņemas parādīt, ka Google ieteiks alternatīvas izstrādātājiem, kuri vēlas izmantot nepubliskas API:

Tomēr dažām slēptām API bieži vien nav alternatīvu. Mēs XDA varam runāt no pieredzes šeit kā diemžēl šīs izmaiņas var nozīmēt dažu novatorisku lietotņu beigas, vai arī dažām populārām lietotnēm var būt nepieciešams samazināt to funkcionalitāte. Šīs gaidāmās pārmaiņas pēc būtības šķiet līdzīgas nesenajām represijas pret pieejamības pakalpojumiem (tas bija par laimi apturēta kā Google novērtēja novatoriskus lietojumus). Lai gan lielākā daļa lietotņu, kas izmanto nedokumentētas API, to dara labdabīgu iemeslu dēļ, dažas lietotnes tās ir ļaunprātīgi izmantojušas ļaunprātīgiem mērķiem.

Šī iemesla dēļ Google var bloķēt piekļuvi visām slēptajām API operētājsistēmā Android P, lai aizsargātu lietotājus no dažiem, kas tos ļaunprātīgi izmanto. Ir grūti pateikt, cik lielu ietekmi tas var atstāt uz lietotājiem, taču, ja esat izstrādātājs apsveriet iespēju meklēt AOSP, lai atrastu novatorisku slēptās API lietojumu, iespējams, vēlēsities to darīt pārdomāt.


Atjauninājums: Google apstiprina

Iekšā emuāra ieraksts publicēts šodien, 28. februārī, Google apstiprināja šīs izmaiņas. Atsaucoties uz avāriju risku lietotājiem un pēc tam liekot izstrādātājiem ieviest ārkārtas labojumus, Google norāda, ka uzņēmums pakāpeniski pāriet uz to, lai atturētu izstrādātājus no piekļuves ne-SDK saskarnes. Sākot ar Android P, ierobežojumi tiks paplašināti, lai aptvertu SDK Java valodas saskarnes.

Uzņēmums norāda, ka "dažas metodes un lauki, kas nav SDK, tiks ierobežoti", lai gan viņi neprecizēja, kuras no tām tiks ierobežotas. Sākotnēji ierobežojums būs vērsts uz saskarnēm, kuras tiek reti izmantotas, un kādu laiku uzņēmums to atļaus izstrādātājiem turpināt izmantot metodes, kas nav SDK, un laukus, kur pāreja uz SDK metodi ir tehniski nepieciešama izaicinošs. Tomēr laika gaitā ierobežojumi paplašināsies, tāpēc izstrādātājiem, kas izmanto ne-SDK metodes, vajadzētu pēc iespējas ātrāk pāriet, gatavojoties operētājsistēmai Android P. Attiecībā uz metodēm bez SDK alternatīvas Google pieprasa izstrādātājiem publicēt ziņas savās vietnēs kļūdu izsekotājs ar plašāku informāciju.

Nākamais izstrādātāja priekšskatījums, kas, šķiet, ieradīsies drīz, ļaus izstrādātājiem pārbaudīt esošās lietotnes melnajā vai pelēkajā sarakstā pirms galīgās izlaišanas.