Android 11 zal verborgen API-beperkingen verscherpen en meta-reflectie verwijderen

Android 9 Pie introduceerde verborgen API-beperkingen, en nu zal Android 11 deze beperkingen verscherpen om de meta-reflectie-bypass te verwijderen.

Voor degenen onder u die het niet weten: Google heeft een nogal vervelende verandering in Android 9 Pie geïntroduceerd die enthousiaste ontwikkelaars betreft die de grenzen willen verleggen van wat mogelijk is in Android. Ik heb het natuurlijk over de toevoeging van de verborgen API-blacklist. Met de bedoeling de stabiliteit van applicaties te bevorderen, blokkeerde Google de toegang tot de meeste verborgen API's - API's die bestaan ​​in het Android-framework maar niet gedocumenteerd zijn in de Android SDK. Deze API's waren toegankelijk via reflectie tot Android 9 Pie, en zijn momenteel nog steeds toegankelijk via de oplossing voor meta-reflectie.

Als je geen idee hebt waar ik het over heb, zou je dat waarschijnlijk wel moeten doen lees het artikel dat ik schreef een paar maanden geleden over dit onderwerp. Hierin wordt alles uitgelegd wat u moet weten over metareflectie en hoe het werkt. Helaas lijkt het erop dat Google kennis heeft genomen van deze oplossing (oeps). In een nieuwe toezegging aan AOSP heeft Google code geïntroduceerd om de verborgen API-controles van Android te "verharden". Dit betekent in feite dat meta-reflectie niet langer zal werken.

Dit heeft uiteraard geen invloed op alle apps. Net als bij de oorspronkelijke API-blacklist zullen alleen apps die Android 11 (API-niveau 30) of hoger targeten, getroffen worden. U kunt nog steeds API-niveau 29 of lager targeten en metareflectie gebruiken. Met de Play Store geleidelijk toenemende minimale doel-SDK-vereistenDit zal echter niet lang een geldige oplossing zijn.

Op dit moment ken ik geen oplossingen voor apps die API 30 targeten. Android 11 is echter nog ver weg, dus de kans is groot dat iemand een manier vindt om de toegang te herstellen. Als u in de tussentijd verborgen API's gebruikt, wilt u dit misschien wel doen een verzoek indienen om deze openbaar te maken op Android-11. Als je goed bent in het analyseren van C++ en Java, en je wilt een poging wagen om deze kleine zwarte lijst-situatie te "repareren", kijk eens naar de betreffende commit.