„Android Studio 3.5“ pristato Apply Changes – populiaraus programų kūrimo įrankio Instant Run funkcijos įpėdinį.
„Android Studio 3.5“ (šiuo metu yra „Canary“ ir „Dev“ kanaluose) dabar turi naują būdą, kaip perkelti kodo pakeitimus į programą ir pamatyti jų poveikį nepaleidžiant programos iš naujo. Pavadintas tiesiog „Taikyti pakeitimus“, jis yra „Momentinio paleidimo“ funkcijos ankstesnėse versijose įpėdinis. Android studija.
Google „Android“ kūrėjų tinklaraštis apie taikyti pakeitimus sakoma taip:
Taikyti pakeitimus leidžia perkelti kodo ir išteklių pakeitimus į veikiančią programą, nepaleidžiant programos iš naujo, o kai kuriais atvejais ir nepaleidžiant dabartinės veiklos. Taikyti pakeitimus pakeičia Instant Run visiškai nauju metodu, skirtu kūrimo optimizavimui. Užuot perrašę APK baitinį kodą kūrimo metu, „Apply Changes“ iš naujo apibrėžia klases, panaudodama 8.0 (26 API lygis) ar naujesnės versijos „Android“ palaikomą vykdymo laiko įrangą.
Be to, „Android Studio“ dabar ragina nuspręsti, ar iš naujo paleisti programą ar veiklą, kai nustato, kad pakeitimai nesuderinami su „Taikyti pakeitimus“. Šis papildomas valdiklis turėtų suteikti jums nuoseklesnę ir labiau nuspėjamą patirtį, palyginti su „Instant Run“ veikimu.
Tinklaraščio įraše toliau išvardyti kai kurie naujos funkcijos apribojimai. Pavyzdžiui, įrenginys, kuriame bandote programą, turi bent jau veikti Android 8.0 Oreo (26 API lygis) ir yra tam tikrų kodo pakeitimų, dėl kurių programą vis tiek reikės paleisti iš naujo. Kaip ir naudojant „Momentinį paleidimą“, „Taikyti pakeitimus“ programa bus paleista iš naujo, jei:
- Klasės, metodo ar lauko pridėjimas arba ištrynimas
- Manifesto keitimas
- Metodo parašų keitimas
- Metodų ar klasių modifikatorių keitimas
- Klasių pervadinimas
- Klasės paveldėjimo keitimas
- Išteklių pridėjimas arba pašalinimas
Skiltyje „Žinomos problemos“ tinklaraščio įraše teigiama, kad „Google“ iš pradžių pirmenybę teikė šios naujos funkcijos stabilumui, o ne našumui, todėl kartais bus paleista parinktis „Taikyti pakeitimus“. lėčiau nei jo pirmtakas „Instant Run“. Be to, x86_x64 emuliatoriaus vaizdai nepalaikomi, o derinimo tikslais yra tik „Android Pie“ (API lygis 28). palaikoma. Visą apribojimų ir žinomų problemų sąrašą galite peržiūrėti toliau pateiktoje šaltinio nuorodoje.
Norėdami išsamiau aprašyti skirtumą tarp „Taikyti pakeitimus“ ir „Momentinis paleidimas“, „Android Studio“ komandos „Google“ darbuotojas pasakė tai Reddit:
Tai daro kažką labai, labai skirtingo. Momentinis paleidimas turėjo labai specifinį poveikį kūrimui, sujungdamas kiekvieną jūsų klasę, kad būtų paruošta jas pakeisti vykdymo metu nauja klasės versija. Be to, APK buvo padalintas į kelis APK, kad būtų galima iš naujo įkelti programą palaipsniui.
Taikyti pakeitimus nieko panašaus nedaro. Jūsų APK yra labai toks pat, nesvarbu, ar naudojate Taikyti pakeitimus, ar ne. Vietoj to jis remiasi naujomis ART VM vykdymo laiko prietaisų galimybėmis, kad dinamiškai perkrautų klases ir pakeistų jas, kai programa veikia. Štai kodėl tam reikalingos daug naujesnės „Android“ versijos.
Tikimasi, kad „Apply Changes“ galiausiai pakeis „Momentinį paleidimą“ beta ir stabiliuose kanaluose, nes „Google“ pagerins savo našumą ir stabilumą.
Šaltinis: Android Developers Blog