Android 9 Pie ha introdotto restrizioni API nascoste e ora Android 11 rafforzerà tali restrizioni per rimuovere il bypass della meta-riflessione.
Per quelli di voi che non lo sanno, Google ha introdotto un cambiamento piuttosto fastidioso in Android 9 Pie che riguarda gli sviluppatori appassionati che cercano di oltrepassare i limiti di ciò che è possibile in Android. Sto parlando, ovviamente, dell'aggiunta della lista nera delle API nascoste. Con l'intento di promuovere la stabilità dell'applicazione, Google ha bloccato l'accesso alla maggior parte delle API nascoste, ovvero API esistenti nel framework Android ma non documentate nell'SDK di Android. È possibile accedere a queste API tramite riflessione fino ad Android 9 Pie e attualmente è ancora possibile accedervi utilizzando la soluzione alternativa di meta riflessione.
Se non hai idea di cosa sto parlando, probabilmente dovresti leggi l'articolo che ho scritto qualche mese fa su questo argomento. Spiegherà tutto ciò che devi sapere sulla metariflessione e su come funziona. Sfortunatamente, sembra che Google abbia notato questa soluzione alternativa (whoops). In un nuovo impegno verso AOSP, Google ha introdotto il codice per "rafforzare" i controlli API nascosti di Android. Ciò significa sostanzialmente che la metariflessione non funzionerà più.
Naturalmente, ciò non influirà su tutte le app. Proprio come con la lista nera delle API originale, saranno interessate solo le app destinate ad Android 11 (livello API 30) o versioni successive. Puoi comunque scegliere come target il livello API 29 o inferiore e utilizzare la meta riflessione. Con il Play Store aumentando progressivamente i requisiti minimi dell'SDK target, tuttavia, questa non sarà una soluzione valida a lungo.
Al momento, non sono a conoscenza di soluzioni alternative per le app destinate all'API 30. Android 11 è però ancora molto lontano, quindi ci sono buone probabilità che qualcuno trovi un modo per ripristinare l'accesso. Nel frattempo, se utilizzi API nascoste, potresti volerlo fare presentare una richiesta per renderli pubblici nell'Android 11. Se sei bravo ad analizzare C++ e Java e vuoi provare a "risolvere" questa piccola situazione della lista nera, dai un'occhiata al commit pertinente.