Нова ограничења апликације у позадини Андроида 12 могу бити велика главобоља за напредне кориснике

Нова ограничења апликација у позадини Андроида 12 могу бити велика главобоља за напредне кориснике који користе апликације као што су Термук, а можда чак и Таскер.

Андроид 12 је унео много промена, иако нису све заиста окренуте корисницима. Карактеристике попут масивног материјала који редизајнирате очигледно су вам гурнуте у лице и тешко их је пропустити, али нешто попут Дигитални кључ од аутомобила подршку је можда лакше пропустити. Међутим, једна промена која би могла бити чак и потпуно недокументована ће изазвати пустош у апликацијама као што је Термук, а то је увођење прилично агресивног убице процеса у позадини.

За контекст, Термук је емулатор Линук терминала који можете добити на Андроиду и Термук-ово управљање пакетима систем је сличан Дебиан-овом алату за напредне пакете (АПТ) по томе што можете претраживати, инсталирати и деинсталирати помоћу команда погодан. Термук инсталира само неколико основних пакета из кутије, да смањи величину АПК-а у Плаи продавници, али вам омогућава да 

инсталирајте све додатне пакете коју желиш. Људи ће често користити Термук да претворе старије паметне телефоне у мини сервере или га користе за покретање других програма који обично нису намењени паметним телефонима. Уобичајена употреба је чак и природно подешавање иоутубе-дл-а, јер можете да извршавате Питхон скрипте користећи Термук на свом паметном телефону.

Међутим, у Андроид-у 12, откривено је да механизам за надгледање рачваних подређених процеса које су покренуле апликације и убија их ако троше превише ЦПУ-а ако је апликација у позадини (преко Мисхаал Рахман) је уведен. Такође ограничава број подређених процеса које родитељски процеси могу покренути на 32, што у великој мери ограничава број операција које апликација може да изврши у позадини. Ово ограничење од 32 подређена процеса је заправо у целом систему, а не само по апликацији, што значи да ће и друге апликације са подређеним процесима допринети том ограничењу. Тестирао сам на Гоогле Пикел 6 Про и могу да потврдим да ПхантомПроцессКиллер постоји и потенцијално може изазвати пустош на Термук-у.

Фантом Процесс Киллер у Андроиду 12 убија позадинске процесе

Андроид 12 је увео неколико ограничења за позадинске процесе; први је да ће подређени процеси апликација које троше превише ЦПУ-а у позадини бити уништени ако је и родитељски процес у позадини. Друго уведено ограничење је ограничење броја подређених процеса који могу бити активни у било ком тренутку. Од починити историју, чини се да је Гоогле покушавао да обузда лажне позадинске процесе.

„Апликације би могле да користе Рунтиме.екец() да покрену подређени процес и оквир неће имати појма о свом животном циклусу. Сада пратите те процесе кад год их пронађемо - тренутно током узорковања статистике процесора могли би се уочити. Ако троши превише ЦПУ-а док је процес родитељске апликације такође у позадини, убијте га. Подразумевано дозвољавамо до 32 таква процеса; процес са најгорим оом адј резултатом њихових родитеља биће убијен ако их има превише."

Наравно, Андроид паметни телефони су већ познати по убијању апликација у позадини. Готово сви главни произвођачи оригиналне опреме се баве тиме на неки начин, облик или форму, и компаније попут ОнеПлус, Самсунг и Ксиаоми сматрају се међу најгорима. Иако АОСП има нека ограничења за апликације у позадини, типично је за произвођаче да граде своја ограничења поврх АОСП-а. Међутим, ово су прилично строга ограничења за напредне кориснике и подстичу понашања против којих су искусни корисници већ дуго времена. Можда ће то дугорочно продужити трајање батерије, али чини се да нема начина да се то онемогући.

Покретање Андроид 12 Пхантом Процесс Киллер

Као што урезивање каже, дозвољена су 32 таква процеса, а ја сам ово проверио на свом Гоогле Пикел 6 Про следећом командом.

adb shell "/system/bin/dumpsys activity settings"

У излазу ове команде, постоји константа која се зове "мак_пхантом_процессес" са вредношћу 32. У овом контексту, Андроид систем оцењује да је „фантомски процес“ подређени процес који ради у позадини. Ако имате Андроид 12 уређај, можете да користите Термук да покренете више од 32 подређена процеса креирање басх скрипте негде у вашем складишту која садржи следећи код и његово извршавање (заслуге за агностик-аполон на ГитХуб-у, програмер укључен у Термук):

for i in $(seq 40); do
sha256sum /dev/zero &
done

Да бисте га извршили, у Термук-у идите до фасцикле у којој сте сачували скрипту и унесите следеће:

shfilename.sh

Ако ваш телефон почне да заостаје, то значи да ради. Горњи код покреће 40 сха256сум операција у позадини (означених амперсандом) узимајући /dev/zero фајл као улаз. сха256сум ће дати СХА-256 хеш било које датотеке која је дата као улаз. Разлог /dev/zero се користи је да је то датотека бесконачне дужине која садржи нулте вредности све док се чита, што значи да сха256сум операција никада неће доћи до краја датотеке, служећи као добар тест стреса како би се осигурала континуирана позадина операције.

Након неколико секунди до једног минута, можда ћете добити следеће:

"сигнал 9" је сигнал који се шаље процесу који га присиљава да се искључи, а овај сигнал шаље Линук планер. Разлог због којег се појављује порука је да је басх терминал технички такође подређени процес Термук-а, а Андроид 12 на крају убија басх терминал у горњој демонстрацији. У логцат излазу можете видети следеће:

11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {623260a 7362:7284:nightwatch.txt/u0a227}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {bf3d88c 24220:24040:nightwatch.txt/u0a237}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {b160bd5 27316:27269:bash/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {bbc1fea 27371:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {9cf12db 27372:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {54bf178 27373:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {fb89051 27374:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {d3450b6 27375:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {2a201b7 27376:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {60aad24 27377:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {124e08d 27378:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.507 1444 1762 I ActivityManager: Killing PhantomProcessRecord {32cc242 27379:27269:sha256sum/u0a340}: Trimming phantom processes
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {b160bd5 27316:27269:bash/u0a340} died
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {9cf12db 27372:27269:sha256sum/u0a340} died
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {414579a 27434:27269:top/u0a340} died
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {32cc242 27379:27269:sha256sum/u0a340} died
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {bbc1fea 27371:27269:sha256sum/u0a340} died
11-02 13:01:52.511 1444 1764 I ActivityManager: Process PhantomProcessRecord {bf3d88c 24220:24040:nightwatch.txt/u0a237} died
11-02 13:01:52.512 1444 1764 I ActivityManager: Process PhantomProcessRecord {60aad24 27377:27269:sha256sum/u0a340} died
11-02 13:01:52.516 1444 1764 I ActivityManager: Process PhantomProcessRecord {623260a 7362:7284:nightwatch.txt/u0a227} died
11-02 13:01:52.516 1444 1764 I ActivityManager: Process PhantomProcessRecord {124e08d 27378:27269:sha256sum/u0a340} died
11-02 13:01:52.517 1444 1764 I ActivityManager: Process PhantomProcessRecord {fb89051 27374:27269:sha256sum/u0a340} died
11-02 13:01:52.519 1444 1764 I ActivityManager: Process PhantomProcessRecord {54bf178 27373:27269:sha256sum/u0a340} died
11-02 13:01:52.532 1444 1764 I ActivityManager: Process PhantomProcessRecord {2a201b7 27376:27269:sha256sum/u0a340} died
11-02 13:01:52.545 1444 1764 I ActivityManager: Process PhantomProcessRecord {d3450b6 27375:27269:sha256sum/u0a340} died

Важна линија је она у којој се помиње да је процес "баш" био скраћен, а затим замро, и да због тога Термук престаје да ради. Иако нисам сигуран шта је „нигхтватцх.ткт“, површна претрага на Гоогле-у сугерише да је то повезано са Фацебоок-ом и Фацебоок Мессенгер-ом, двема апликацијама које сам инсталирао. Тестирао сам ово са искљученом адаптивном батеријом и уверио се да није било оптимизације батерије ни на Термук-у.

Након што завршите са тестирањем, вероватно ће се неке од сха256сум операција наставити у позадина и даље (а притиском на ентер ће се присилно затворити Термук), па поново отворите Термук и откуцајте следећи:

killall sha256sum

Иако такво ограничење има смисла за неке апликације, апликације које су искуснији корисници можда склонији да користе (као што је Термук) ће трпети. Ово такође може имати утицаја на друге апликације које такође користе искусни корисници, као што је Таскер. То је ограничење које још није могуће превазићи и уводи још више ограничења на позадинске апликације поред свих других власничких ограничења која намећу произвођачи. У текућој теми питања ГитХуб, агностиц-аполло помиње следеће у вези са логцат-ом који им је послат е-поштом:

„Сва 32 праћена логцата ПхантомПроцессРецорд припадају цом.всандроид.суите и термук-ов басх је био један од процеса који је убијен. Дакле, као што је горе поменуто, ограничење од 32 процеса је за све апликације заједно"

Забавно, извршио сам исте тестове на Ксиаоми 11Т Про који користи Андроид 11 и потврдио да такво понашање не постоји на том конкретном уређају у тој конфигурацији, иако су Ксиаоми уређаји озлоглашени по позадинској апликацији ограничења. Ово је, зачудо, једна од најстрожих политика управљања апликацијама у позадини уведена на било који Андроид паметни телефон, јер нема начина да се то заобиђе. Чак и на Ксиаоми и ОнеПлус уређајима, могуће је онемогућити већина од тога, а за неке људе је довољно да онемогуће све оптимизације батерије на тим уређајима да буду срећни. Фантомски убица процеса, насупрот томе, не може се чак ни онемогућити.

Ако се ослањате на Термук за многе операције на уређају које су интензивне са многим позадинским процесима, можда би било вредно одложити надоградњу за сада док не буде више информација. Ако нисте искусни корисник, онда то вероватно није нешто о чему заиста треба да бринете.