Zygote è un processo nel sistema operativo Android che funge da radice di tutti i processi di sistema e delle app con la stessa interfaccia binaria dell'applicazione (ABI).
Sui dispositivi moderni, come Pixel 7 e modelli successivi, è presente un processo Zygote a 64 bit. Inoltre, esiste WebView Zygote per l'ABI principale, che è un Zygote specializzato che contiene librerie e risorse specifiche per i processi che eseguono WebView.
Ecco le attività eseguite da Zygote:
- Il daemon init genera il processo Zygote quando viene inizializzato il sistema operativo Android. In alcuni sistemi a doppia architettura vengono generati due processi Zygote (a 64 bit e 32 bit). Questa pagina riguarda solo i sistemi con una singola architettura. 
- Zygote può generare immediatamente processi chiamati processi di app non specializzati (USAP) o attendere di generare processi in base alle esigenze delle applicazioni. La prima opzione deve essere attivata tramite una proprietà di sistema o un comando Android Debug Bridge. Per saperne di più sulla configurazione di Zygote per generare processi immediatamente, vedi Attivare il pool di processi delle app non specializzati . - Se il pool USAP è attivato sul tuo dispositivo: - Il server di sistema utilizza un socket di dominio Unix per connettersi a un USAP disponibile da un pool. Il server di sistema richiede che USAP sia preconfigurato per l'utilizzo dell'applicazione modificando l'ID (PID), il cgroup e altre informazioni del processo.
- Al termine della preconfigurazione, l'USAP risponde al server di sistema con il PID.
- Quando un'applicazione occupa una di queste USAP, la USAP non fa più parte del pool. Quando il pool raggiunge uno o meno USAP, Zygote lo riempie con nuovi USAP.
 
- Se Zygote genera processi utilizzando la valutazione pigra: - Il server di sistema riceve un comando che indica che un'app ha bisogno di un processo.
- Il server di sistema utilizza un socket di dominio Unix per inviare un comando allo Zygote appropriato.
- Zygote esegue il fork del processo e modifica PID, cgroup e altre informazioni.
- Al termine della procedura, invia il PID a Zygote, che a sua volta lo passa al server di sistema.
 
 
Attiva il pool USAP
Per attivare l'utilizzo del pool USAP, esegui una delle seguenti operazioni:
- Imposta la proprietà di sistema - dalvik.vm.usap_pool_enabledsu- truein- /build/make/target/product/runtime_libart.mk.
- Esegui questo comando: - adb shell am broadcast -a \"com.google.android.gms.phenotype.FLAG_OVERRIDE\" --es package \"com.google.android.platform.runtime_native\" --es user \"\*\" --esa flags \"usap_pool_enabled\" --esa values \"true\" --esa types \"string\" com.google.android.gms
Quando questa funzionalità è abilitata, ogni Zygote mantiene un pool di processi forkati che eseguono le parti indipendenti dall'applicazione del processo di avvio dell'applicazione.
Risolvere i problemi di Zygote
Questa sezione contiene soluzioni ai problemi relativi a Zygote.
Zygote si arresta in modo anomalo
Se il dispositivo non si riavvia correttamente e i log o i report sugli arresti anomali mostrano problemi con Zygote, è probabile che tu abbia apportato una modifica recente che causa l'arresto anomalo di initd o del server di sistema. La correzione del codice dovrebbe risolvere il problema.
SELinux denials o errori di I/O
Zygote è molto attento all'igiene dei descrittori di file tra i limiti dei processi. Quando i descrittori di file sono presenti al momento del fork, ma non in una
consente, utilizziamo una chiamata di sistema dup a /dev/null per impedire che i descrittori di file memorizzati nella cache vengano utilizzati involontariamente per accedere a file appena aperti.
Se stai apportando modifiche al framework che includono il tentativo di caricare risorse in Zygote e ricevi errori SELinux o errori I/O:
- Per i descrittori di file senza nome, includili nel vettore - fds_to_ignorequando viene chiamato- Restat.
- Per i descrittori di file denominati: - Modifica WORKING_DIRECTORY/frameworks/base/core/jni/fd_utils.cpp.
- Aggiungi il percorso alla lista consentita per i file aperti.
 
- Modifica