Android 9 Pie introducerade dolda API-begränsningar, och nu kommer Android 11 att skärpa dessa begränsningar för att ta bort metareflektionsbypass.
För de av er som inte är insatta introducerade Google en ganska irriterande förändring i Android 9 Pie som berör entusiastutvecklare som vill tänja på gränserna för vad som är möjligt i Android. Jag talar naturligtvis om tillägget av den dolda API-svartlistan. Med avsikten att främja applikationsstabilitet blockerade Google åtkomst till de flesta dolda API: er – API: er som finns i Android-ramverket men är odokumenterade i Android SDK. Dessa API: er kunde nås via reflektion fram till Android 9 Pie, och för närvarande kan de fortfarande nås med hjälp av metareflektionslösningen.
Om du inte har någon aning om vad jag pratar om så borde du nog läs artikeln jag skrev för några månader sedan i detta ämne. Den kommer att förklara allt du behöver veta om metareflektion och hur det fungerar. Tyvärr ser det ut som att Google har lagt märke till den här lösningen (hoops). I ett nytt åtagande till AOSP har Google introducerat kod för att "härda" Androids dolda API-kontroller. Detta betyder i princip att metareflektion inte längre kommer att fungera.
Naturligtvis kommer detta inte att påverka alla appar. Precis som med den ursprungliga API-svarta listan kommer endast appar som är inriktade på Android 11 (API-nivå 30) eller senare att påverkas. Du kan fortfarande rikta in dig på API-nivå 29 eller lägre och använda metareflektion. Med Play Butiks successivt ökande minimikrav för SDK-mål, men detta kommer inte att vara en giltig lösning på länge.
För närvarande känner jag inte till några lösningar för appar som är inriktade på API 30. Android 11 är dock långt borta, så det finns en god chans att någon kommer att hitta ett sätt att återställa åtkomsten. Under tiden, om du använder dolda API: er kanske du vill lämna in en begäran om att de ska offentliggöras i Android 11. Om du är bra på att analysera C++ och Java, och du vill ta ett grepp om att "fixa" den här lilla svarta listan, ta en titt på det relevanta åtagandet.