Android 9 Pie a introduit des restrictions cachées sur l'API, et désormais, Android 11 va renforcer ces restrictions pour supprimer le contournement de la méta-réflexion.
Pour ceux d'entre vous qui ne le savent pas, Google a introduit un changement plutôt ennuyeux dans Android 9 Pie qui concerne les développeurs passionnés qui cherchent à repousser les limites de ce qui est possible dans Android. Je parle bien sûr de l’ajout de la liste noire des API cachées. Dans le but de promouvoir la stabilité des applications, Google a bloqué l'accès à la plupart des API cachées - des API qui existent dans le framework Android mais qui ne sont pas documentées dans le SDK Android. Ces API étaient accessibles via la réflexion jusqu'à Android 9 Pie et, actuellement, elles sont toujours accessibles à l'aide de la solution de contournement de méta-réflexion.
Si vous ne savez pas de quoi je parle, vous devriez probablement lis l'article que j'ai écrit il y a quelques mois à ce sujet. Il vous expliquera tout ce que vous devez savoir sur la méta-réflexion et son fonctionnement. Malheureusement, il semble que Google ait remarqué cette solution de contournement (oups). Dans un nouvel engagement envers l'AOSP, Google a introduit du code pour « renforcer » les contrôles cachés de l'API d'Android. Cela signifie essentiellement que la méta-réflexion ne fonctionnera plus.
Bien entendu, cela n’affectera pas toutes les applications. Tout comme pour la liste noire des API d'origine, seules les applications ciblant Android 11 (niveau API 30) ou version ultérieure seront concernées. Vous pouvez toujours cibler le niveau d'API 29 ou inférieur et utiliser la méta-réflexion. Avec le Play Store augmentation progressive des exigences minimales du SDK cible, cependant, ce ne sera pas une solution de contournement valable longtemps.
Pour le moment, je ne connais aucune solution de contournement pour les applications ciblant l'API 30. Cependant, Android 11 est encore loin, il y a donc de fortes chances que quelqu'un trouve un moyen de restaurer l'accès. En attendant, si vous utilisez des API masquées, vous souhaiterez peut-être déposer une demande pour qu'ils soient rendus publics sous Android 11. Si vous êtes doué pour analyser C++ et Java et que vous souhaitez tenter de « réparer » cette petite situation de liste noire, jetez un oeil au commit correspondant.