Android 12 uued taustarakenduste piirangud võivad energiakasutajatele suure peavalu valmistada

Android 12 uued taustarakenduste piirangud võivad olla suureks peavaluks energiakasutajatele, kes kasutavad selliseid rakendusi nagu Termux ja võib-olla isegi Tasker.

Android 12 on sisse viinud palju muudatusi, kuigi mitte kõik neist pole tegelikult kasutajale mõeldud. Sellised funktsioonid nagu massiivne ümberkujundatud materjal on ilmselgelt näkku surutud ja neid on raske märkamata jätta, kuid midagi sellist Digitaalne autovõti tugi võib olla lihtsam ilma jääda. Kuid üks muudatus, mis võib olla isegi täiesti dokumenteerimata, hävitab selliseid rakendusi nagu Termux ja see on üsna agressiivse taustaprotsessi tapja kasutuselevõtt.

Konteksti jaoks on Termux Linuxi terminali emulaator, mille saate Androidis ja Termuxi paketihalduses süsteem sarnaneb Debiani täiustatud paketitööriistaga (APT), kuna saate otsida, installida ja desinstallida käsk asjakohane. Termux installib karbist välja vaid mõned põhipaketid, et vähendada APK suurust Play poes, kuid võimaldab teil installige kõik lisapaketid

mida sa soovid. Inimesed kasutavad sageli Termuxit vanemate nutitelefonide miniserveriteks muutmiseks või muude programmide käitamiseks, mis tavaliselt pole nutitelefonidele suunatud. Levinud kasutusala on isegi youtube-dl seadistamine, kuna saate Pythoni skripte oma nutitelefonis Termuxiga käivitada.

Android 12 puhul see avastati et mehhanism, mis jälgib rakenduste käivitatud kahveldatud lapsprotsesse ja tapab need, kui nad tarbivad liiga palju protsessorit, kui rakendus on taustal (läbi Mishaal Rahman) tutvustati. Samuti piirab see alamprotsesside arvu, mida vanemprotsessid võivad tekitada, 32-ni, mis piirab oluliselt toimingute arvu, mida rakendus saab taustal teha. See 32 alamprotsessi limiit kehtib tegelikult kogu süsteemis, mitte ainult rakenduse kohta, mis tähendab, et ka teised alamprotsessidega rakendused aitavad sellele piirangule kaasa. Testisin Google Pixel 6 Proga ja võin kinnitada, et PhantomProcessKiller on olemas ja võib Termuxis kaost tekitada.

Android 12 Phantom Process Killer tapab taustaprotsessid

Android 12 kehtestas taustaprotsessidele paar piirangut; esimene on see, et taustal liiga palju protsessorit tarbivate rakenduste alamprotsessid surevad, kui taustal on ka vanemprotsess. Teine kehtestatud piirang on alamprotsesside arvu piirang, mis võivad igal ajahetkel olla aktiivsed. Alates ajalugu siduma, näib, et Google üritas petturlikke taustaprotsesse piirata.

"Rakendused võivad alamprotsessi loomiseks kasutada faili Runtime.exec () ja raamistikul pole selle elutsüklist aimugi. Nüüd jälgige neid protsesse alati, kui me need leiame – praegu võib protsessori statistika proovide võtmise ajal neid märgata. Kui see tarbib liiga palju protsessorit, samal ajal kui selle põhirakenduse protsess on samuti taustal, tapke see. Vaikimisi lubame kuni 32 sellist protsessi; nende vanemate halvima oom-adj-skooriga protsess tapetakse, kui neid on liiga palju."

Muidugi on Android-nutitelefonid juba taustal rakenduste tapmise poolest kurikuulsad. Peaaegu kõik suuremad originaalseadmete tootjad tegelevad sellega mingil viisil, kuju või vormiga ning ettevõtted nagu OnePlusi, Samsungi ja Xiaomi peetakse halvimateks. Kuigi AOSP-l on mõned taustarakenduste piirangud, on tüüpiline, et tootjad loovad AOSP-le oma piirangud. Need on aga energiakasutajatele üsna ranged piirangud ja soodustavad käitumist, mille vastu on energiakasutajad pikka aega häälekalt vastu olnud. Võib-olla pikendab see pikemas perspektiivis aku kasutusaega, kuid näib, et ka seda ei saa kuidagi keelata.

Android 12 Phantom Process Killeri käivitamine

Nagu kohustus ütleb, on lubatud 32 sellist protsessi ja ma kontrollisin seda oma Google Pixel 6 Pro-s järgmise käsuga.

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

Selle käsu väljundis on konstant nimega "max_phantom_processes" väärtusega 32. Selles kontekstis hindab Androidi süsteem "fantoomprotsessiks" taustal töötavat alamprotsessi. Kui teil on Android 12 seade, saate Termuxiga luua rohkem kui 32 alamprotsessi bash-skripti loomine kuskil oma salvestusruumis, mis sisaldab järgmist koodi, ja selle käivitamine (krediiti agnostik-apollo Termuxiga seotud arendaja GitHubis):

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

Selle käivitamiseks navigeerige Termuxis kausta, kuhu skripti salvestasite, ja tippige järgmine tekst:

shfilename.sh

Kui teie telefon hakkab hilinema, tähendab see, et see töötab. Ülaltoodud kood tekitab taustal 40 sha256sum operatsiooni (tähistatud ampersandiga), võttes /dev/zero fail sisendiks. sha256sum annab igale sisendiks antud failile SHA-256 räsi. Põhjus /dev/zero kasutatakse on lõpmatu pikkusega fail, mis sisaldab nullväärtusi seni, kuni seda loetakse, mis tähendab, et sha256sum operatsioon ei jõua kunagi faili lõppu, toimides hea stressitestina pideva tausta tagamiseks operatsioonid.

Mõne sekundi kuni minuti pärast võidakse kuvada järgmine teave:

"9. signaal" on protsessile saadetud signaal, mis sunnib selle välja lülituma, ja selle signaali saadab Linuxi planeerija. Põhjus, miks teade ilmub, on see, et bash-terminal on tehniliselt ka Termuxi alamprotsess ja Android 12 tapab ülaltoodud demonstratsioonis bash-terminali. Logcati väljundis näete järgmist:

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

Oluline rida on see, mis mainib, et "bash" protsessi kärbiti ja siis suri ning seetõttu lõpetab Termux töötamise. Kuigi ma pole kindel, mis on "nightwatch.txt", näib pealiskaudne Google'i otsing viitavat sellele, et see on seotud Facebooki ja Facebook Messengeriga, kahe rakendusega, mille olen installinud. Testisin seda adaptiivse aku väljalülitusega ja veendusin, et ka Termuxile ei rakendatud aku optimeerimist.

Kui olete testimise lõpetanud, jätkuvad tõenäoliselt mõned sha256sum toimingud rakenduses taust on paigal (ja sisestusklahvi vajutamine sunnib Termuxi sulgema), nii et avage Termux uuesti ja tippige järgnev:

killall sha256sum

Kuigi selline piirang on mõne rakenduse puhul mõistlik, kannatavad rakendused, mida võimsamad kasutajad võivad rohkem kasutada (nt Termux). See võib avaldada mõju ka teistele rakendustele, mida ka energiakasutajad kasutavad, näiteks Tasker. See on piirang, mida ei paista veel võimalik ületada, ja kehtestab taustarakendustele veelgi rohkem piiranguid lisaks kõigile muudele tootjate kehtestatud omandipiirangutele. Käimasolevas GitHubi probleemilõimes mainib agnostic-apollo neile meili teel saadetud logcati kohta järgmist:

"Kõik 32 jälgitavat logikassi PhantomProcessRecord kuuluvad saidile com.wsandroid.suite ja termuxi bash oli üks protsessidest, mis tapeti. Nagu ülalpool mainitud, kehtib 32 protsessi piirang kõigile rakendustele kombineeritult.

Lõbusal kombel tegin samad testid Xiaomi 11T Pro-ga, kus töötab Android 11, ja kinnitasin, et sellist käitumist ei eksisteeri selles konkreetses seadmes selles konfiguratsioonis, kuigi Xiaomi seadmed on taustarakenduse poolest kurikuulsad piiranguid. See on kummalisel kombel üks rangemaid taustarakenduste halduseeskirju, mis on kasutusele võetud mis tahes Android-nutitelefonis, kuna sellest ei saa kuidagi mööda. Isegi Xiaomi seadmetes ja OnePlusi seadmetes on see võimalik keelata enamus ja mõne inimese jaoks piisab nende seadmete aku optimeerimise keelamisest, et nad oleksid õnnelikud. Seevastu fantoomprotsessi tapjat ei saa isegi keelata.

Kui kasutate Termuxit paljudes seadmes tehtavates toimingutes, mis on paljude taustaprotsessidega intensiivsed, tasub võib-olla uuendamine praegu edasi lükata, kuni saate rohkem teavet. Kui te ei ole aktiivne kasutaja, siis tõenäoliselt ei pea te selle pärast muretsema.