Android 11 zpřísní skrytá omezení API a odstraní metareflexi

Android 9 Pie zavedl skrytá omezení API a nyní Android 11 tato omezení zpřísní, aby odstranil obcházení meta-odrazu.

Pro ty z vás, kteří to neznáte, Google představil poměrně nepříjemnou změnu v Androidu 9 Pie, která se týká nadšených vývojářů, kteří chtějí posunout hranice toho, co je v Androidu možné. Mluvím samozřejmě o přidání skryté černé listiny API. S úmyslem podpořit stabilitu aplikací Google zablokoval přístup k většině skrytých API – API, která existují v rámci Androidu, ale nejsou zdokumentována v Android SDK. K těmto rozhraním API bylo možné přistupovat prostřednictvím reflexe až do Androidu 9 Pie a v současné době k nim lze stále přistupovat pomocí řešení meta reflexe.

Pokud nevíte, o čem mluvím, pravděpodobně byste měli přečtěte si článek, který jsem napsal před několika měsíci na toto téma. Vysvětlí vše, co potřebujete vědět o metareflexi a jak to funguje. Bohužel to vypadá, že si Google tohoto řešení všiml (hops). V novém závazku k AOSP společnost Google představila kód pro „zpevnění“ skrytých kontrol API systému Android. To v podstatě znamená, že metareflexe již nebude fungovat.

To samozřejmě neovlivní všechny aplikace. Stejně jako u původní černé listiny rozhraní API budou ovlivněny pouze aplikace zacílené na Android 11 (úroveň API 30) nebo novější. Stále můžete cílit na úroveň API 29 nebo nižší a používat meta reflexe. S Obchodem Play postupně se zvyšující minimální cílové požadavky na SDK, i když to nebude platné řešení na dlouho.

V tuto chvíli nevím o žádném řešení pro aplikace cílené na API 30. Android 11 je ale daleko, takže je velká šance, že někdo najde způsob, jak obnovit přístup. Pokud mezitím používáte skrytá rozhraní API, možná budete chtít podat žádost o jejich zveřejnění v systému Android 11. Pokud jste dobří v analýze C++ a Javy a chcete se pustit do „opravy“ této situace na malé černé listině, podívejte se na příslušný commit.