Podle sady závazků v AOSP může Google začít omezovat přístup k nezdokumentovaným nebo skrytým rozhraním API v systému Android P. Mnoho aplikací značek používá k rozšíření funkčnosti skrytá rozhraní API, takže účinek může být rozšířený.
Aktualizace 28.2.18: Google dnes zveřejnil blogový příspěvek potvrzující změny. Více podrobností na konci článku.
Zatímco někteří nadšenci pro Android ano spekulování po jakém dezertu se bude příští verze Androidu jmenovat, v zákulisí se odehrává několik zajímavých událostí. Zaznamenali jsme a málo stojí za povšimnutí nadcházející funkce v Androidu P, ale mnohem zajímavější se ukázal nedávný objev v projektu Android Open Source Project (AOSP). Podle těchto nedávných potvrzení může být aplikacím omezen přístup k rozhraním API, která nejsou zdokumentována v sadě Android SDK (jako jsou rozhraní API označená atributem javadoc @hide).
Proč na tom záleží
Android Software Development Kit (SDK) poskytuje vývojářům knihovny a nástroje API, které potřebují k testování a vytváření nových aplikací pro Android. S každou novou verzí systému Android přichází celá řada nových rozhraní API, která jsou vývojářům k dispozici prostřednictvím sady Android SDK. Jaká rozhraní API jsou pro aplikaci k dispozici, závisí na tom, jakou verzi kompilaceSDKV vývojář nastaví. To je důvod, proč Google
nové požadavky na Obchod Play jsou tak významné – donutí aplikace aktualizovat a migrovat na novější rozhraní API.Hostitelé Google stránky dokumentace pro každou třídu a všechny její metody, které jsou dostupné v každé úrovni API. Toto je sada zdokumentovaných rozhraní API, která jsou k dispozici v oficiální sadě Android SDK. Seznam tříd můžete snadno procházet pomocí aplikace pro Android, jako je nedávno vydaná aplikace Android SDK Search od Android Engineer Jake Wharton.
Cena: Zdarma.
4.1.
Ne všechna rozhraní API, která jsou k dispozici v každém vydání systému Android, jsou však zdokumentována společností Google nebo jsou k dispozici v oficiální sadě Android SDK. Často existují užitečná API nezdokumentované, ale přesto jsou velmi užitečné. Nedoporučuje se, aby vývojáři vytvářeli své aplikace pomocí nedokumentovaných nebo skrytých rozhraní API, ale mnozí tak činí, protože prostě neexistuje žádná alternativa, pokud chtějí nabídnout určitou funkci. Vývojáři, kteří používají skrytá nebo nedokumentovaná rozhraní API, se mohou také dostat do konkurenční výhody, protože mohou nabídnout funkce, které jejich konkurenti – kteří se drží rozhraní API nabízených Androidem SDK – nelze.
I když nemohu poskytnout seznam aplikací, které využívají nezdokumentovaná rozhraní API (vývojáři pravděpodobně nesdílejí které z nich používají, protože by to jejich konkurentům pomohlo), seznam je pravděpodobně spíše velký. Došel bych tedy k závěru, že zákaz přístupu ke skrytým API by byl významný. Mark Murphy, zakladatel Commonsware, souhlasí:
Souhlasím s hodnocením, že hromadný zákaz přístupu k položkám anotovaným @hide bude velký problém, pokud k tomu dojde. Doufejme, že jen málo aplikací přistupuje k těmto položkám jako součást klíčové funkce. Mám však podezření, že mnoho aplikací značek je příležitostně používá, přímo nebo prostřednictvím knihovny.
Co se děje v Androidu P?
Tyto nadcházející změny jako první zaznamenal XDA Senior Recognized Developer rovo89, vývojář Xposed Framework. Upozornil mě na dva závazky, jeden z který byl sloučeny, která představuje nový nástroj pro vytváření s názvem 'hiddenapi.' Tento nástroj upravuje přístupové příznaky všech členů třídy v souboru DEX if jejich podpisy se objeví na vstupní šedé nebo černé listině, a pokud ano, budou označené metody považovány za interní API s omezeným přístup. Další potvrzení popisuje, jak funguje blacklist API; brání v přístupu zaváděcí třída metody a pole označené výše uvedeným „hiddenapi“, ke kterým mohou vývojáři přistupovat prostřednictvím statického propojení, reflexe a JNI.
Podle rovo89 je konečný výsledek těchto dvou změn v Androidu P následující:
Pokud se tyto commity sloučí, znamenalo by to, že aplikace již nebudou moci používat/přistupovat ke skrytým rozhraním API, tzn třídy, metody a pole, které jsou v AOSP anotovány @hide, a proto nejsou součástí oficiální SDK. To by nebyl problém pro moduly Xposed, protože bych mohl snadno vrátit tyto commity nebo povolit modulům přístup k těmto rozhraním API. Existuje však mnoho aplikací, které využívají výhod skrytých rozhraní API, a ty by v něm selhaly budoucnost.
Další závazky skutečně ukazují, že to může být to, co Google plánuje. Tento spáchat uvádí následující:
I když tento konkrétní commit nebyl začleněn, protože byl opuštěn ve prospěch 3 menších commitů, zpráva o odevzdání popisuje účel těchto změn. Další sada zavazuje ukazují, že Google navrhne alternativy vývojářům, kteří chtějí používat neveřejná rozhraní API:
K určitým skrytým rozhraním API však často neexistují žádné alternativy. My v XDA zde můžeme mluvit ze zkušenosti jako bohužel tato změna může znamenat konec některých inovativních aplikací nebo může vyžadovat, aby některé aplikace s velkým jménem snížily jejich počet funkčnost. Tato nadcházející změna se zdá být podobná té nedávné zásah proti službám usnadnění (to bylo naštěstí pozastaveno jak Google vyhodnotil inovativní použití). Zatímco většina aplikací, které využívají nedokumentovaná rozhraní API, tak činí z neškodných důvodů, mohou existovat některé aplikace, které je zneužily k nekalým účelům.
Z tohoto důvodu může Google zablokovat přístup ke všem skrytým rozhraním API v systému Android P, aby ochránil uživatele před několika málo uživateli, kteří je zneužívají. Je těžké říci, jak velký dopad to může mít na uživatele, ale pokud jste vývojář zvažujete, že se podíváte na AOSP, abyste našli inovativní použití skrytého API, pak možná budete chtít přehodnotit.
Aktualizace: Google potvrzuje
V blogový příspěvek Společnost Google tyto změny zveřejnila dnes, 28. února. Google uvádí rizika selhání pro uživatele a následně nutí vývojáře zavádět nouzové opravy uvádí, že společnost se postupně posouvá směrem k odrazování vývojářů od přístupu bez sady SDK rozhraní. Počínaje Androidem P se omezení rozšíří na jazyková rozhraní Java sady SDK.
Společnost uvádí, že „některé metody a pole mimo sadu SDK budou omezeny“, ačkoli neupřesnila, které z nich budou omezeny. Zpočátku se omezení zaměří na rozhraní, která se používají zřídka, a společnost to na chvíli povolí vývojářům, aby nadále používali metody a pole mimo sadu SDK, kde je přechod na metodu SDK technicky podmíněn náročný. Postupem času se však omezení rozšíří, takže vývojáři aplikací používajících metody jiné než SDK by měli v rámci přípravy na Android P přejít co nejdříve. Pokud jde o metody bez alternativy SDK, Google žádá vývojáře, aby zveřejnili své sledování chyb s více informacemi.
Příští náhled pro vývojáře, který podle všeho brzy dorazí, umožní vývojářům otestovat stávající aplikace na černé listině nebo na šedé listině před konečným vydáním.