Android 12 jaunie fona lietotņu ierobežojumi varētu būt lielas galvassāpes pieredzējušiem lietotājiem

Android 12 jaunie fona lietotņu ierobežojumi varētu būt lielas galvassāpes pieredzējušiem lietotājiem, kuri izmanto tādas lietotnes kā Termux un varbūt pat Tasker.

Android 12 ir ieviesis daudz izmaiņu, lai gan ne visas no tām patiešām ir paredzētas lietotājiem. Tādas funkcijas kā masīvais Materiāls, kuru pārveidojat, acīmredzami ir iespiestas jūsu sejā un ir grūti nepamanīt, taču kaut kas līdzīgs Digitālā automašīnas atslēga atbalstu varētu būt vieglāk palaist garām. Tomēr viena izmaiņa, kas varētu būt pat pilnīgi nedokumentēta, radīs postījumus tādās lietotnēs kā Termux, un tā ir diezgan agresīva fona procesu iznīcinātāja ieviešana.

Kontekstam Termux ir Linux termināļa emulators, ko varat iegūt operētājsistēmā Android, un Termux pakotņu pārvaldībā sistēma ir ļoti līdzīga Debian Advanced Package Tool (APT), jo jūs varat meklēt, instalēt un atinstalēt, izmantojot komandu apt. Termux instalē tikai dažas pamata pakotnes, lai samazinātu APK izmēru Play veikalā, bet ļauj instalējiet visas papildu pakotnes

ko tu vēlies. Cilvēki bieži izmanto Termux, lai vecākus viedtālruņus pārvērstu par mini serveriem, vai izmantos to citu programmu palaišanai, kas parasti nav paredzētas viedtālruņiem. Izplatīts lietojums ir pat sākotnējā youtube-dl iestatīšana, jo jūs varat izpildīt Python skriptus, izmantojot Termux savā viedtālrunī.

Tomēr operētājsistēmā Android 12 tas tika atklāts ka mehānisms, lai uzraudzītu dakšveida bērnu procesus, kurus sāk lietotnes, un iznīcina tos, ja tie patērē pārāk daudz CPU, ja lietotne darbojas fonā (izmantojot Mišals Rahmans) tika ieviests. Tas arī ierobežo to pakārtoto procesu skaitu, kurus vecāku procesi var radīt līdz 32, kas ievērojami ierobežo darbību skaitu, ko lietotne var veikt fonā. Šis 32 bērnu procesu ierobežojums faktiski attiecas uz visu sistēmu, ne tikai uz katru lietotni, kas nozīmē, ka arī citas lietotnes ar pakārtotajiem procesiem veicinās šo ierobežojumu. Es pārbaudīju Google Pixel 6 Pro un varu apstiprināt, ka PhantomProcessKiller pastāv un, iespējams, var radīt postījumus Termux.

Android 12 Phantom Process Killer iznīcina fona procesus

Android 12 ieviesa dažus ierobežojumus fona procesiem; pirmais ir tas, ka lietotņu pakārtotie procesi, kas fonā patērē pārāk daudz centrālo procesoru, tiks iznīcināti, ja fonā darbosies arī vecāku process. Otrais ieviestais ierobežojums ir to pakārtoto procesu skaita ierobežojums, kuri var būt aktīvi jebkurā laikā. No izdarīt vēsturi, šķiet, ka Google mēģināja ierobežot negodīgus fona procesus.

Lietojumprogrammas varētu izmantot Runtime.exec(), lai radītu bērnu procesu, un sistēmai nebūs ne jausmas par tā dzīves ciklu. Tagad izsekojiet šiem procesiem, kad vien mēs tos atrodam — pašlaik CPU statistikas izlases laikā tos var pamanīt. Ja tas patērē pārāk daudz CPU, kamēr tā vecāklietotnes process arī darbojas fonā, nogaliniet to. Pēc noklusējuma mēs pieļaujam līdz 32 šādiem procesiem; process ar sliktāko oom adj rezultātu viņu vecākiem tiks nogalināts, ja viņu būs pārāk daudz."

Protams, Android viedtālruņi jau ir bēdīgi slaveni ar fona lietotņu nogalināšanu. Gandrīz visi lielākie oriģinālo iekārtu ražotāji ar to iesaistās kaut kādā veidā, formā vai formā, un tādi uzņēmumi kā OnePlus, Samsung un Xiaomi tiek uzskatīti par vienu no sliktākajiem. Lai gan AOSP ir daži fona lietotņu ierobežojumi, ražotājiem ir raksturīgi izveidot savus ierobežojumus papildus AOSP. Tomēr tie ir diezgan stingri ierobežojumi pieredzējušiem lietotājiem un veicina uzvedību, pret kuru enerģētiskie lietotāji jau ilgu laiku ir bijuši pretrunā. Varbūt tas ilgtermiņā palielinās akumulatora darbības laiku, taču šķiet, ka arī to nav iespējams atspējot.

Android 12 Phantom Process Killer aktivizēšana

Kā teikts saistībā, ir atļauti 32 šādi procesi, un es to pārbaudīju savā Google Pixel 6 Pro ar šādu komandu.

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

Šīs komandas izvadē ir konstante ar nosaukumu "max_phantom_processes" ar vērtību 32. Šajā kontekstā Android sistēma uzskata, ka "fantoma process" ir bērna process, kas darbojas fonā. Ja jums ir Android 12 ierīce, varat izmantot Termux, lai radītu vairāk nekā 32 bērnu procesus izveidojot bash skriptu kaut kur savā krātuvē, kurā ir šāds kods, un izpildot to (kredīti uz agnostiķis-apollo vietnē GitHub, izstrādātājs, kas saistīts ar Termux):

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

Lai to izpildītu, programmā Termux dodieties uz mapi, kurā saglabājāt skriptu, un ierakstiet:

shfilename.sh

Ja tālrunis sāk kavēties, tas nozīmē, ka tas darbojas. Iepriekš minētais kods fonā rada 40 sha256sum darbības (apzīmētas ar &), ņemot vērā /dev/zero failu kā ievadi. sha256sum piešķirs SHA-256 jaucējkodu jebkuram failam, kas tiek norādīts kā ievade. Iemesls /dev/zero Tiek izmantots, ka tas ir bezgalīga garuma fails, kas satur nulles vērtības tik ilgi, kamēr tas tiek lasīts, kas nozīmē, ka sha256sum darbība nekad nesasniegs faila beigas, kas kalpo kā labs stresa tests, lai nodrošinātu nepārtrauktu fonu operācijas.

Pēc dažām sekundēm līdz minūtei var parādīties:

"9. signāls" ir signāls, kas nosūtīts procesam, liekot tam izslēgties, un šo signālu nosūta Linux plānotājs. Iemesls, kādēļ tiek parādīts ziņojums, ir tāds, ka bash terminālis tehniski ir arī Termux pakārtots process, un operētājsistēma Android 12 nogalina bash termināli iepriekš minētajā demonstrācijā. Logcat izvadē var redzēt sekojošo:

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

Svarīga rinda ir tā, kurā minēts, ka "bash" process tika apgriezts un pēc tam nomira, un tāpēc Termux pārstāj darboties. Lai gan es neesmu pārliecināts, kas ir "nightwatch.txt", šķiet, ka pavirša Google meklēšana liecina, ka tas ir saistīts ar Facebook un Facebook Messenger — divām lietotnēm, kuras esmu instalējis. Es to pārbaudīju ar izslēgtu adaptīvo akumulatoru un pārliecinājos, ka arī Termux netiek veikta akumulatora optimizācija.

Kad būsiet pabeidzis testēšanu, iespējams, dažas sha256sum darbības turpināsies nekustīgs fons (un nospiežot Enter, Termux tiks aizvērts), tāpēc atkārtoti atveriet Termux un ierakstiet sekojošs:

killall sha256sum

Lai gan šāds ierobežojums dažām lietotnēm ir jēgpilns, cietīs lietotnes, kuras lietotāji varētu vairāk izmantot (piemēram, Termux). Tas var ietekmēt arī citas lietotnes, kuras izmanto arī lietotāji, piemēram, Tasker. Tas ir ierobežojums, kuru, šķiet, vēl nav iespējams pārvarēt, un papildus visiem citiem ražotāju noteiktajiem patentētajiem ierobežojumiem tiek ieviesti vēl vairāk ierobežojumu fona lietotnēm. Pašreizējā GitHub problēmas pavedienā agnostic-apollo pieminēja tālāk norādīto informāciju par logcat, kas viņam tika nosūtīts pa e-pastu:

"Visi 32 izsekotie logcat PhantomProcessRecord pieder com.wsandroid.suite, un termux bash bija viens no procesiem, kas tika nogalināti. Tātad, kā minēts iepriekš, 32 procesu ierobežojums attiecas uz visām lietotnēm kopā.

Interesanti, ka es veicu tos pašus testus Xiaomi 11T Pro, kurā darbojas operētājsistēma Android 11, un apstiprināju, ka šāda rīcība neeksistē. šajā konkrētajā ierīcē šajā konfigurācijā, lai gan Xiaomi ierīces ir bēdīgi slavenas ar fona lietotni ierobežojumiem. Dīvainā kārtā šī ir viena no stingrākajām fona lietojumprogrammu pārvaldības politikām, kas ieviesta jebkurā Android viedtālrunī, jo to nevar apiet. Pat Xiaomi ierīcēs un OnePlus ierīcēs to var atspējot lielākā daļa no tā, un dažiem cilvēkiem pietiek ar visu akumulatora optimizācijas atspējošanu šajās ierīcēs, lai viņi būtu laimīgi. Turpretim fantoma procesa slepkavu pat nevar atspējot.

Ja paļaujaties uz Termux daudzām ierīcē veiktām darbībām, kas ir intensīvas ar daudziem fona procesiem, iespējams, ir vērts pagaidām atlikt jaunināšanu, līdz būs pieejama vairāk informācijas. Ja neesat enerģisks lietotājs, visticamāk, par to jums nav jāuztraucas.