Android 11 посилить приховані обмеження API та видалить метавідображення

Android 9 Pie представив приховані обмеження API, а тепер Android 11 посилить ці обмеження, щоб усунути обхід метавідображення.

Для тих із вас, хто не в курсі, Google представив досить неприємну зміну в Android 9 Pie, яка стосується розробників-ентузіастів, які прагнуть розширити межі того, що можливо в Android. Я, звичайно, говорю про додавання прихованого чорного списку API. З наміром підвищити стабільність додатків Google заблокував доступ до більшості прихованих API – API, які існують у системі Android, але не задокументовані в Android SDK. Доступ до цих API можна було отримати через відображення до Android 9 Pie, і зараз до них можна отримати доступ за допомогою обхідного шляху метавідображення.

Якщо ви не маєте уявлення про що я говорю, ви, ймовірно, повинні прочитайте статтю, яку я написав кілька місяців тому на цю тему. Тут пояснюється все, що вам потрібно знати про метарефлексію та як вона працює. На жаль, схоже, що Google звернув увагу на цей обхідний шлях (на жаль). У новій версії AOSP Google представив код для «зміцнення» прихованих перевірок API Android. Це фактично означає, що метавідображення більше не працюватиме.

Звичайно, це вплине не на всі програми. Так само, як і у випадку з оригінальним чорним списком API, це вплине лише на додатки, націлені на Android 11 (рівень API 30) або новішої версії. Ви все ще можете орієнтуватися на рівень API 29 або нижче та використовувати метавідображення. З Play Store поступово зростаючи мінімальні цільові вимоги SDK, однак це не буде дійсним обхідним шляхом надовго.

Наразі я не знаю жодних обхідних шляхів для програм, націлених на API 30. Однак до Android 11 ще далеко, тож є хороший шанс, що хтось знайде спосіб відновити доступ. Тим часом, якщо ви використовуєте приховані API, ви можете це зробити подати запит на їх оприлюднення в Android 11. Якщо ви добре аналізуєте C++ і Java і хочете спробувати «виправити» цю маленьку ситуацію з чорним списком, перегляньте відповідний комміт.