Android 9 Pie esitteli piilotetut API-rajoitukset, ja nyt Android 11 koventaa näitä rajoituksia poistaakseen metaheijastuksen ohituksen.
Niille teistä, jotka eivät tiedä, Google esitteli Android 9 Pie -käyttöjärjestelmään melko ärsyttävän muutoksen, joka koskee innostuneita kehittäjiä, jotka haluavat ylittää Androidin mahdollisuuksien rajoja. Puhun tietysti piilotetun API: n mustan listan lisäämisestä. Sovelluksen vakauden edistämiseksi Google esti pääsyn useimpiin piilotettuihin sovellusliittymiin – sovellusliittymiin, jotka ovat olemassa Android-kehyksessä, mutta joita ei dokumentoida Android SDK: ssa. Näitä sovellusliittymiä voitiin käyttää heijastuksen kautta Android 9 Pie -versioon asti, ja tällä hetkellä niitä voidaan edelleen käyttää metareflection-kiertotavan avulla.
Jos et tiedä mistä puhun, sinun pitäisi luultavasti lue kirjoittamani artikkeli muutama kuukausi sitten tästä aiheesta. Se selittää kaiken, mitä sinun tarvitsee tietää metaheijastuksesta ja sen toiminnasta. Valitettavasti näyttää siltä, että Google huomasi tämän kiertotavan (hups). Uudessa AOSP-sitoumuksessa Google on ottanut käyttöön koodin Androidin piilotetun API-tarkistuksen "kovettamiseksi". Tämä tarkoittaa käytännössä sitä, että metaheijastus ei enää toimi.
Tämä ei tietenkään vaikuta kaikkiin sovelluksiin. Alkuperäisen sovellusliittymän mustan listan tapaan tämä vaikuttaa vain sovelluksiin, jotka on kohdistettu Android 11:een (API-taso 30) tai uudempaan. Voit edelleen kohdistaa API-tasolle 29 tai sitä alempaan ja käyttää metaheijastusta. Play Kaupan kanssa asteittain nousevat tavoite-SDK: n vähimmäisvaatimuksetTämä ei kuitenkaan ole pätevä ratkaisu pitkään.
Tällä hetkellä en tiedä kiertotapoja API 30:een kohdistetuille sovelluksille. Android 11 on kuitenkin kaukana, joten on hyvä mahdollisuus, että joku löytää tavan palauttaa käyttöoikeus. Sillä välin, jos käytät piilotettuja sovellusliittymiä, saatat haluta pyytää niiden julkistamista Android 11:ssä. Jos olet hyvä analysoimaan C++:aa ja Javaa ja haluat "korjata" tämän pienen mustan listan tilanteen, katso asiaa koskeva sitoumus.