Nauji „Android 12“ fono programų apribojimai gali sukelti didelį galvos skausmą patyrusiems vartotojams, kurie naudoja tokias programas kaip „Terux“ ir galbūt net „Tasker“.
Android 12 įvedė daug pakeitimų, nors ne visi jie yra tikrai pritaikyti vartotojui. Tokios ypatybės kaip didžiulė medžiaga, kurią perprojektuojate, akivaizdžiai įstumtos į veidą ir jų sunku nepastebėti, bet kažkas panašaus Skaitmeninis automobilio raktas paramos gali būti lengviau praleisti. Tačiau vienas pakeitimas, kuris netgi gali būti visiškai nepatvirtintas, sugadins tokias programas kaip Termux, ir tai yra gana agresyvaus foninio proceso žudiko įvedimas.
Kalbant apie kontekstą, „Terux“ yra „Linux“ terminalo emuliatorius, kurį galite gauti „Android“, ir „Terux“ paketų valdymas sistema yra labai panaši į Debian's Advanced Package Tool (APT), nes galite ieškoti, įdiegti ir pašalinti naudodami komandą apt. Termux įdiegia tik kelis pagrindinius paketus, kad sumažintų APK dydį „Play“ parduotuvėje, tačiau leidžia įdiegti papildomus paketus
kad tu trokšti. Žmonės dažnai naudojasi „Termux“, kad senesnius išmaniuosius telefonus paverstų mini serveriais arba naudotųsi kitoms programoms, kurios paprastai nėra skirtos išmaniesiems telefonams. Įprastas naudojimas yra netgi vietinis „youtube-dl“ nustatymas, nes galite vykdyti „Python“ scenarijus naudodami „Terux“ savo išmaniajame telefone.Tačiau „Android 12“ tai buvo atrasta kad mechanizmas, skirtas stebėti šakotus vaikų procesus, kuriuos pradeda programos, ir žudo juos, jei jie sunaudoja per daug procesoriaus, jei programa veikia fone (per Mišaalas Rahmanas) buvo pristatytas. Tai taip pat apriboja antrinių procesų, kuriuos gali sukelti pirminiai procesai, skaičių iki 32, o tai labai apriboja operacijų, kurias programa gali atlikti fone, skaičių. Šis 32 antrinių procesų apribojimas iš tikrųjų taikomas visai sistemai, o ne tik kiekvienai programai, o tai reiškia, kad prie šio apribojimo prisidės ir kitos programos su antriniais procesais. Išbandžiau „Google Pixel 6 Pro“ ir galiu patvirtinti, kad PhantomProcessKiller egzistuoja ir gali pakenkti Termux.
„Android 12“ „Phantom Process Killer“ naikina foninius procesus
„Android 12“ įvedė keletą foninių procesų apribojimų; pirmoji – antriniai programų, kurios fone naudoja per daug procesoriaus, procesai bus nužudyti, jei pirminis procesas taip pat bus fone. Antrasis įvestas apribojimas yra antrinių procesų, kurie gali būti aktyvūs bet kuriuo metu, skaičiaus apribojimas. Nuo įpareigoti istoriją, atrodo, kad „Google“ bandė apriboti nesąžiningus foninius procesus.
„Programos gali naudoti Runtime.exec(), kad sukurtų antrinį procesą, o sistema neturės supratimo apie jo gyvavimo ciklą. Dabar stebėkite tuos procesus, kai tik juos randame – šiuo metu procesoriaus statistikos atrankos metu jie gali būti pastebėti. Jei jis naudoja per daug procesoriaus, o pagrindinės programos procesas taip pat veikia fone, užmuškite jį. Pagal numatytuosius nustatymus leidžiame iki 32 tokių procesų; Procesas su blogiausiu jų tėvų oom adj balu bus nužudytas, jei jų bus per daug.
Žinoma, „Android“ išmanieji telefonai jau garsėja foninių programų žudymu. Beveik visi pagrindiniai originalios įrangos gamintojai tam tikru būdu, forma ar forma tuo užsiima, o įmonės kaip „OnePlus“, „Samsung“ ir „Xiaomi“ laikomi vienais prasčiausių. Nors AOSP turi tam tikrų foninių programų apribojimų, gamintojams įprasta kurti savo apribojimus, papildančius AOSP. Tačiau tai yra gana griežti apribojimai patyrusiems vartotojams ir skatina elgseną, kuriai vartotojai jau seniai nepritaria. Galbūt ilgainiui tai padidins baterijos veikimo laiką, tačiau atrodo, kad taip pat nėra būdo jo išjungti.
„Android 12 Phantom Process Killer“ suaktyvinimas
Kaip sakoma įsipareigojime, leidžiami 32 tokie procesai, ir aš tai patikrinau savo „Google Pixel 6 Pro“ su šia komanda.
adb shell "/system/bin/dumpsys activity settings"
Šios komandos išvestyje yra konstanta, vadinama „max_phantom_processes“, kurios reikšmė yra 32. Šiame kontekste „fantominį procesą“ „Android“ sistema vertina kaip antrinį procesą, veikiantį fone. Jei turite „Android 12“ įrenginį, galite naudoti „Termux“, kad sukurtumėte daugiau nei 32 antrinius procesus kur nors saugykloje sukurdami bash scenarijų, kuriame būtų nurodytas kodas, ir jį vykdydami (kreditai į agnostikas-apollo „GitHub“, kūrėjas, susijęs su Termux):
for i in $(seq 40); do
sha256sum /dev/zero &
done
Norėdami jį vykdyti, Termux eikite į aplanką, kuriame išsaugojote scenarijų, ir įveskite:
shfilename.sh
Jei jūsų telefonas pradeda vėluoti, vadinasi, jis veikia. Aukščiau pateiktas kodas sukuria 40 sha256sum operacijų fone (žymima ampersandu), atsižvelgiant į /dev/zero failą kaip įvestį. sha256sum pateiks bet kokio failo SHA-256 maišą, pateiktą kaip įvestį. Priežastis /dev/zero naudojamas yra tai, kad tai yra begalinio ilgio failas, kuriame yra nulinės reikšmės tol, kol jis skaitomas, o tai reiškia, kad „sha256sum“ operacija niekada nepasieks failo pabaigos, o tai yra geras testas nepalankiausiomis sąlygomis, siekiant užtikrinti nuolatinį foną operacijos.
Po kelių sekundžių iki minutės gali pasirodyti:
„9 signalas“ yra signalas, siunčiamas procesui, verčiantis jį išsijungti, o šį signalą siunčia „Linux“ planuoklis. Priežastis, dėl kurios pasirodo pranešimas, yra ta, kad bash terminalas techniškai taip pat yra antrinis Termux procesas, o „Android 12“ baigia nužudyti bash terminalą aukščiau pateiktoje demonstracijoje. Logcat išvestyje galite matyti šiuos dalykus:
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
Svarbi eilutė yra ta, kurioje paminėta, kad „bash“ procesas buvo apkarpytas, o paskui mirė, todėl „Terux“ nustoja veikti. Nors nesu tikras, kas yra „nightwatch.txt“, paviršutiniška „Google“ paieška rodo, kad ji susijusi su „Facebook“ ir „Facebook Messenger“ – dviem programėlėmis, kurias esu įdiegęs. Išbandžiau tai išjungęs adaptyvųjį akumuliatorių ir įsitikinau, kad „Terux“ taip pat nebuvo optimizuotas akumuliatorius.
Kai baigsite testavimą, tikėtina, kad kai kurios sha256sum operacijos bus tęsiamos fono nejudantis (o paspaudus Enter bus uždarytas Termux), todėl iš naujo atidarykite Termux ir įveskite sekantis:
killall sha256sum
Nors toks apribojimas yra prasmingas kai kurioms programoms, nukentės programos, kurias patyrę vartotojai gali būti labiau linkę naudoti (pvz., Termux). Tai taip pat gali turėti įtakos kitoms programoms, kurias taip pat naudoja patyrę vartotojai, pvz., Tasker. Tai yra apribojimas, kurio kol kas neįmanoma įveikti ir, be visų kitų gamintojų taikomų patentuotų apribojimų, foninėms programoms taikomi dar daugiau apribojimų. Vykstančioje „GitHub“ problemos gijoje agnostic-apollo paminėjo toliau nurodytus dalykus, susijusius su „logcat“, kuri jiems buvo išsiųsta el. paštu:
„Visi 32 sekami logcat PhantomProcessRecord priklauso com.wsandroid.suite, o termux bash buvo vienas iš procesų, kurie buvo nužudyti. Taigi, kaip minėta aukščiau, 32 procesų limitas taikomas visoms programoms kartu.
Įdomu tai, kad atlikau tuos pačius testus su „Xiaomi 11T Pro“, kuriame veikia „Android 11“, ir patvirtinau, kad toks elgesys neegzistuoja. tame konkrečiame tos konfigūracijos įrenginyje, nors „Xiaomi“ įrenginiai garsėja fonine programa apribojimai. Kaip bebūtų keista, tai viena griežčiausių foninių programų valdymo strategijų, įdiegtų bet kuriame „Android“ išmaniajame telefone, nes jokiu būdu negalima jos apeiti. Net „Xiaomi“ ir „OnePlus“ įrenginiuose jį galima išjungti dauguma iš jo, o kai kuriems žmonėms pakanka išjungti visus akumuliatoriaus optimizavimus tuose įrenginiuose, kad jie būtų laimingi. Priešingai, fantominio proceso žudiko net negalima išjungti.
Jei pasikliaujate „Termux“ daugeliu operacijų įrenginyje, kurios yra intensyvios atliekant daugybę foninių procesų, galbūt verta kol kas atidėti atnaujinimą, kol gausite daugiau informacijos. Jei nesate patyręs vartotojas, greičiausiai dėl to tikrai nereikėtų jaudintis.