Android 11 wird versteckte API-Einschränkungen verschärfen und Meta-Reflexion entfernen

Mit Android 9 Pie wurden versteckte API-Einschränkungen eingeführt, und jetzt wird Android 11 diese Einschränkungen verschärfen, um die Umgehung der Metareflexion zu entfernen.

Für diejenigen unter Ihnen, die es nicht wissen: Google hat in Android 9 Pie eine ziemlich ärgerliche Änderung eingeführt, die begeisterte Entwickler betrifft, die die Grenzen dessen, was in Android möglich ist, erweitern möchten. Ich spreche natürlich von der Hinzufügung der versteckten API-Blacklist. Mit der Absicht, die Anwendungsstabilität zu verbessern, hat Google den Zugriff auf die meisten versteckten APIs blockiert – APIs, die im Android-Framework vorhanden, aber im Android SDK nicht dokumentiert sind. Auf diese APIs konnte bis Android 9 Pie über Reflection zugegriffen werden, und derzeit ist der Zugriff immer noch über die Meta-Reflection-Problemumgehung möglich.

Wenn Sie keine Ahnung haben, wovon ich spreche, sollten Sie es wahrscheinlich tun Lesen Sie den Artikel, den ich geschrieben habe vor ein paar Monaten zu diesem Thema. Es erklärt alles, was Sie über Metareflexion und ihre Funktionsweise wissen müssen. Leider sieht es so aus, als hätte Google diesen Workaround zur Kenntnis genommen (ups). In einem neuen Commit für AOSP hat Google Code eingeführt, um die versteckten API-Prüfungen von Android zu „härten“. Dies bedeutet im Grunde, dass die Metareflexion nicht mehr funktioniert.

Dies betrifft natürlich nicht alle Apps. Genau wie bei der ursprünglichen API-Blacklist sind nur Apps betroffen, die auf Android 11 (API-Level 30) oder höher ausgerichtet sind. Sie können weiterhin auf API-Level 29 oder niedriger abzielen und Meta-Reflektion verwenden. Mit den Play Stores schrittweise Erhöhung der Mindestziel-SDK-AnforderungenDies wird jedoch nicht lange eine gültige Problemumgehung sein.

Derzeit sind mir keine Problemumgehungen für Apps bekannt, die auf API 30 abzielen. Android 11 ist jedoch noch in weiter Ferne, daher besteht eine gute Chance, dass jemand einen Weg findet, den Zugriff wiederherzustellen. Wenn Sie in der Zwischenzeit versteckte APIs verwenden, möchten Sie dies möglicherweise tun einen Antrag auf Veröffentlichung stellen in Android 11. Wenn Sie C++ und Java gut analysieren können und versuchen möchten, diese kleine Blacklist-Situation zu „beheben“, Schauen Sie sich das entsprechende Commit an.