SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Android Core
Felipe Silveira
felipesilveira.com.br Aula 2
Inicialização
Inicialização
Boot ROM
Boot
Loader
Kernel
Init
Zygote
System Server
Boot ROM
Boot ROM
A. O código de ROM de inicialização irá detectar a partição
de inicialização que contém o bootloader.
B. Uma vez que a partição de inicialização (que contém o
boot) é identificada, o boot ROM irá carregar na memória
RAM o código do bootloader (inteiro ou suas primeiras
instruções, dependendo da arquitetura) e é feito um "salto
de execução" (jump) para a posição de memória onde se
encontra o bootloader.
Bootloader
O bootloader é um programa especial, separado do
kernel do Linux, que é usado para inicializar a memória e
carregar o kernel para a RAM. É análogo a softwares como
o GRUB.
init.s - Inicializa pilhas, coloca zero nos segmentos BSS
e invoca o método _main() em main.c
main.c - Inicializa hardware (relógios, placa, teclado,
console)
Bootloader
Bootloader
A. O primeiro estágio do carregador de inicialização irá
detectar e configurar a memória RAM externa.
B. Uma vez que a RAM externa esteja disponível e o
sistema pronto a executar algo mais complexo o
bootloader irá carregar o "main bootloader" e colocá-lo na
memória RAM externa.
Bootloader
C. O segundo estágio do carregador de inicialização é o
primeiro grande programa que será executado. Este
estágio do bootloader pode conter código para criar
sistemas de arquivos, memória adicional, suporte de rede
e outras coisas. Em um telefone celular, também pode ser
responsável por carregar o código para o "CPU modem" e
pela criação de proteções de memória de baixo nível e
opções de segurança.
Bootloader
D. O próximo passo é encontrar a localização do kernel na
mídia de inicialização (Boot media) e colocá-lo na
memória RAM. Ele também irá colocar alguns parâmetros
de inicialização na memória para serem lidos pelo kernel.
E. Por fim, o bootloader irá executar um salto para o
kernel do Linux e o kernel assume a responsabilidade do
sistema.
Kernel
Kernel
A. Uma vez que as unidades de memory management e
caches foram inicializados, o sistema será capaz de usar
memória virtual e lançar processos no user space.
B. O kernel irá procurar no sistema de arquivos raiz pelo
código do processo init (que se encontra em em
system/core/init) e lançá-lo como um processo no user
space.
Init
Mecan­ismo de ini­cial­iza­ção dos proces­sos bási­cos do
sistema.
A imple­men­tação do init encontra-se nos fontes do
Android em “system/core/init/init.c”.
Tratamento do arquivo de con­fig­u­ração init.rc
Init
No init.rc está con­fig­u­rada grande parte do restante da
ini­cial­iza­ção do sis­tema, incluindo a exe­cução dos
serviços bási­cos do Android, den­tre eles:
con­sole: ini­cia o shell ash.
ser­vice­m­an­ager: ini­cia o binder (respon­sável pela
comu­ni­cação entre os processos).
vold: vol­ume dae­mon — con­trola a mon­tagem de vol­
umes de mídia no sis­tema de arquivos.
Init
adbd: android debug­ger bridge dae­mon — servi­dor
para comu­ni­cação com o cliente adb.
media: ini­cia os servi­dores mul­ti­me­dia (áudio, vídeo,
etc).
boot­sound: toca um som no boot, lendo um arquivo em
/system/media/audio/ui/boot.mp3.
installd: servi­dor de insta­lação de pacotes/aplicações (*.
apk).
Init
O init.rc é escrito na linguagem "Android Init Language",
que é formada pelas estruturas:
Action: Actions representam sequências de comandos,
que são iniciados com a ocorrência de um trigger. A
sintaxe é:
on <trigger>
<command>
<command>
<command>
Init
Service: Services são programas inicializados pelo init e
que podem ou não ser reiniciados quando , por algum
motivo, são finalizados. Sintaxe:
service <name> <pathname> [ <argument> ]*
<option>
<option>
Init
Options e Commands: Os options e commands são
usados na declaração de Services e Actions,
respectivamente.
Init
Init
A. O processo init no Android irá procurar um arquivo
chamado init.rc. Ele é um script que descreve os serviços
do sistema, o sistema de arquivos e outros parâmetros
que precisam ser configurados.
B. O processo init irá então analisar o script de
inicialização e iniciar os processos de serviço do sistema.
Zygote
O zygote é o pai de todos os proces­sos Java. Tudo que
roda em Java é cri­ado por este processo, que instan­cia
uma máquina vir­tual Dalvik para exe­cu­tar um processo
ou serviço Java.
Ele esta imple­men­tado em C++, e seu código-fonte
encontra-se em
frameworks/base/cmds/app_process/app_main.cpp.
Zygote
O Zygote é responsável basicamente por duas operações:
1) Prover uma infraestru­tura para a exe­cução de apli­
cações Java.
2) Ini­ciar o Sys­tem Server, que geren­cia a base dos
serviços do sis­tema opera­cional Android.
Zygote
System Server
O system server é o primeiro componente Java a rodar no
sistema. Ele vai iniciar todos os serviços Android, como o
Telephony Manager e o bluetooth.
Localizado em
frameworks/base/services/java/com/android/server/Syste
mServer.java.
System Server
System Server
Serviços inicializados pelo system server:
●Power Man­ager
●Activ­ity Manager
●Tele­phony Registry
●Pack­age Manager
●Con­text Manager
●Sys­tem Con­text Providers
●Bat­tery Service
●Alarm Man­ager
●Sen­sor Service
●Win­dow Manager
●Blue­tooth Service
●Mount Ser­vice
●...
System Server
Ao final da execução do system server, o Activ­ity Man­
ager ini­cia alguns proces­sos bási­cos, den­tre eles o com.
android.launcher, que é a apli­cação respon­sável pela
inter­face grá­fica padrão do Android.
Após a execução do System Service, a inicialização é
considerada finalizada e e broadcast
ACTION_BOOT_COMPLETED é lançado.

Más contenido relacionado

La actualidad más candente

Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernelSENAC RIO
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engineHudson Brendon
 
Execução de programas
Execução de programasExecução de programas
Execução de programasMattheusAnd07
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSAFabio Telles Rodriguez
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamentoCarlos Melo
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVCBenicio Ávila
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1Daniel
 
Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)portal_Do_estudante
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asteriskVicente Nobre
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasLuiz Arthur
 

La actualidad más candente (20)

Docker
DockerDocker
Docker
 
O que é Docker?
O que é Docker?O que é Docker?
O que é Docker?
 
Processos (Linux)
Processos (Linux)Processos (Linux)
Processos (Linux)
 
Funcionamento kernel
Funcionamento kernelFuncionamento kernel
Funcionamento kernel
 
Conheça as principais diretivas do php.ini
Conheça as principais diretivas do php.iniConheça as principais diretivas do php.ini
Conheça as principais diretivas do php.ini
 
Java 03
Java 03Java 03
Java 03
 
Docker: um linux container engine
Docker:  um linux container engineDocker:  um linux container engine
Docker: um linux container engine
 
Execução de programas
Execução de programasExecução de programas
Execução de programas
 
PostgreSQL Conceitos e aplicações - FSA
PostgreSQL  Conceitos e aplicações - FSAPostgreSQL  Conceitos e aplicações - FSA
PostgreSQL Conceitos e aplicações - FSA
 
Sor filesystem-particionamento
Sor filesystem-particionamentoSor filesystem-particionamento
Sor filesystem-particionamento
 
Oficina docker
Oficina dockerOficina docker
Oficina docker
 
Introdução ao Asp.NET MVC
Introdução ao Asp.NET MVCIntrodução ao Asp.NET MVC
Introdução ao Asp.NET MVC
 
Linux4all#1
Linux4all#1Linux4all#1
Linux4all#1
 
Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)Soa cap2 administracao de sistemas2 (slides)
Soa cap2 administracao de sistemas2 (slides)
 
Instalação do asterisk
Instalação do asteriskInstalação do asterisk
Instalação do asterisk
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Sistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando ProgramasSistemas Operacionais - Gnu/Linux Instalando Programas
Sistemas Operacionais - Gnu/Linux Instalando Programas
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
GIT Básico
GIT BásicoGIT Básico
GIT Básico
 
Minicurso Linux
Minicurso Linux Minicurso Linux
Minicurso Linux
 

Destacado

Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!tdc-globalcode
 
Android performance - Construindo aplicações rápidas de verdade
Android performance - Construindo aplicações rápidas de verdadeAndroid performance - Construindo aplicações rápidas de verdade
Android performance - Construindo aplicações rápidas de verdadeFelipe Silveira
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalRamon Ribeiro Rabello
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectadoTDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectadotdc-globalcode
 
Android DevConference - SOLID no Android
Android DevConference - SOLID no AndroidAndroid DevConference - SOLID no Android
Android DevConference - SOLID no AndroidiMasters
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
Programação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações AndroidProgramação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações AndroidAndré Curvello
 
Aumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsAumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsNelson Glauber Leal
 
Material design - AndroidosDay 2015
Material design - AndroidosDay 2015Material design - AndroidosDay 2015
Material design - AndroidosDay 2015rlecheta
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
Android DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresiMasters
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidiMasters
 
Implementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidImplementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidPaula Caroline da Rosa
 
RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.Clerton Leal
 
Android e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisAndroid e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisFelipe Silveira
 

Destacado (20)

Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!
 
Android performance - Construindo aplicações rápidas de verdade
Android performance - Construindo aplicações rápidas de verdadeAndroid performance - Construindo aplicações rápidas de verdade
Android performance - Construindo aplicações rápidas de verdade
 
Desenvolvimento Android
Desenvolvimento AndroidDesenvolvimento Android
Desenvolvimento Android
 
Android annotations
Android annotationsAndroid annotations
Android annotations
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectadoTDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
 
Boas Práticas em Android
Boas Práticas em AndroidBoas Práticas em Android
Boas Práticas em Android
 
Android DevConference - SOLID no Android
Android DevConference - SOLID no AndroidAndroid DevConference - SOLID no Android
Android DevConference - SOLID no Android
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Programação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações AndroidProgramação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações Android
 
Aumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsAumentando a produtividade com Android Libs
Aumentando a produtividade com Android Libs
 
Material design - AndroidosDay 2015
Material design - AndroidosDay 2015Material design - AndroidosDay 2015
Material design - AndroidosDay 2015
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Android DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedores
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
 
Implementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidImplementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações Android
 
Tudo sobre listas no android
Tudo sobre listas no androidTudo sobre listas no android
Tudo sobre listas no android
 
RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.
 
Android e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociaisAndroid e Facebook - Integrando sua aplicação às redes sociais
Android e Facebook - Integrando sua aplicação às redes sociais
 

Similar a Android Core Initialization Process

Processo de Startup do Linux
Processo de Startup do LinuxProcesso de Startup do Linux
Processo de Startup do LinuxMauro Tapajós
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxIvani Nascimento
 
Inter Aula1
Inter  Aula1Inter  Aula1
Inter Aula1willians
 
Resumo LPIC-1 101
Resumo LPIC-1 101Resumo LPIC-1 101
Resumo LPIC-1 101foschi
 
Guia de instalação ms windows e para o sistema
Guia de instalação ms windows e para  o  sistemaGuia de instalação ms windows e para  o  sistema
Guia de instalação ms windows e para o sistemaLucikelly Oliveira
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Joicy Souza
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionaisAbnel Junior
 
Estrutura de processos apresentação
Estrutura de processos apresentaçãoEstrutura de processos apresentação
Estrutura de processos apresentaçãoRafael Dos Santos
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxDoraestevao
 
Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch LinuxDanielAraujo224
 
Redes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redesRedes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redesSoftD Abreu
 

Similar a Android Core Initialization Process (20)

Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Processo de Startup do Linux
Processo de Startup do LinuxProcesso de Startup do Linux
Processo de Startup do Linux
 
Arquivos de Inicialização do Linux
Arquivos de Inicialização do LinuxArquivos de Inicialização do Linux
Arquivos de Inicialização do Linux
 
Inter Aula1
Inter  Aula1Inter  Aula1
Inter Aula1
 
Resumo LPIC-1 101
Resumo LPIC-1 101Resumo LPIC-1 101
Resumo LPIC-1 101
 
LInux - Iinit e systemd
LInux - Iinit e systemdLInux - Iinit e systemd
LInux - Iinit e systemd
 
Guia de instalação ms windows e para o sistema
Guia de instalação ms windows e para  o  sistemaGuia de instalação ms windows e para  o  sistema
Guia de instalação ms windows e para o sistema
 
Tutorial: Instalação de Ubuntu em uma Gumstix Overo
Tutorial: Instalação de Ubuntu em uma Gumstix OveroTutorial: Instalação de Ubuntu em uma Gumstix Overo
Tutorial: Instalação de Ubuntu em uma Gumstix Overo
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais
 
IntroduçãO Ao Linux
IntroduçãO Ao LinuxIntroduçãO Ao Linux
IntroduçãO Ao Linux
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Software
SoftwareSoftware
Software
 
Lab so-abertos-unidade3
Lab so-abertos-unidade3Lab so-abertos-unidade3
Lab so-abertos-unidade3
 
ICC-07 Softwares - Introdução
ICC-07 Softwares - IntroduçãoICC-07 Softwares - Introdução
ICC-07 Softwares - Introdução
 
Estrutura de processos apresentação
Estrutura de processos apresentaçãoEstrutura de processos apresentação
Estrutura de processos apresentação
 
M1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptxM1_Sistemas Operativos.pptx
M1_Sistemas Operativos.pptx
 
Redes 6
Redes 6Redes 6
Redes 6
 
Roteadores
RoteadoresRoteadores
Roteadores
 
Sistemas operativos - Arch Linux
Sistemas operativos  - Arch LinuxSistemas operativos  - Arch Linux
Sistemas operativos - Arch Linux
 
Redes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redesRedes Linux comandos gerais e servidores de redes
Redes Linux comandos gerais e servidores de redes
 

Android Core Initialization Process

  • 5. Boot ROM A. O código de ROM de inicialização irá detectar a partição de inicialização que contém o bootloader. B. Uma vez que a partição de inicialização (que contém o boot) é identificada, o boot ROM irá carregar na memória RAM o código do bootloader (inteiro ou suas primeiras instruções, dependendo da arquitetura) e é feito um "salto de execução" (jump) para a posição de memória onde se encontra o bootloader.
  • 6. Bootloader O bootloader é um programa especial, separado do kernel do Linux, que é usado para inicializar a memória e carregar o kernel para a RAM. É análogo a softwares como o GRUB. init.s - Inicializa pilhas, coloca zero nos segmentos BSS e invoca o método _main() em main.c main.c - Inicializa hardware (relógios, placa, teclado, console)
  • 8. Bootloader A. O primeiro estágio do carregador de inicialização irá detectar e configurar a memória RAM externa. B. Uma vez que a RAM externa esteja disponível e o sistema pronto a executar algo mais complexo o bootloader irá carregar o "main bootloader" e colocá-lo na memória RAM externa.
  • 9. Bootloader C. O segundo estágio do carregador de inicialização é o primeiro grande programa que será executado. Este estágio do bootloader pode conter código para criar sistemas de arquivos, memória adicional, suporte de rede e outras coisas. Em um telefone celular, também pode ser responsável por carregar o código para o "CPU modem" e pela criação de proteções de memória de baixo nível e opções de segurança.
  • 10. Bootloader D. O próximo passo é encontrar a localização do kernel na mídia de inicialização (Boot media) e colocá-lo na memória RAM. Ele também irá colocar alguns parâmetros de inicialização na memória para serem lidos pelo kernel. E. Por fim, o bootloader irá executar um salto para o kernel do Linux e o kernel assume a responsabilidade do sistema.
  • 12. Kernel A. Uma vez que as unidades de memory management e caches foram inicializados, o sistema será capaz de usar memória virtual e lançar processos no user space. B. O kernel irá procurar no sistema de arquivos raiz pelo código do processo init (que se encontra em em system/core/init) e lançá-lo como um processo no user space.
  • 13. Init Mecan­ismo de ini­cial­iza­ção dos proces­sos bási­cos do sistema. A imple­men­tação do init encontra-se nos fontes do Android em “system/core/init/init.c”. Tratamento do arquivo de con­fig­u­ração init.rc
  • 14. Init No init.rc está con­fig­u­rada grande parte do restante da ini­cial­iza­ção do sis­tema, incluindo a exe­cução dos serviços bási­cos do Android, den­tre eles: con­sole: ini­cia o shell ash. ser­vice­m­an­ager: ini­cia o binder (respon­sável pela comu­ni­cação entre os processos). vold: vol­ume dae­mon — con­trola a mon­tagem de vol­ umes de mídia no sis­tema de arquivos.
  • 15. Init adbd: android debug­ger bridge dae­mon — servi­dor para comu­ni­cação com o cliente adb. media: ini­cia os servi­dores mul­ti­me­dia (áudio, vídeo, etc). boot­sound: toca um som no boot, lendo um arquivo em /system/media/audio/ui/boot.mp3. installd: servi­dor de insta­lação de pacotes/aplicações (*. apk).
  • 16. Init O init.rc é escrito na linguagem "Android Init Language", que é formada pelas estruturas: Action: Actions representam sequências de comandos, que são iniciados com a ocorrência de um trigger. A sintaxe é: on <trigger> <command> <command> <command>
  • 17. Init Service: Services são programas inicializados pelo init e que podem ou não ser reiniciados quando , por algum motivo, são finalizados. Sintaxe: service <name> <pathname> [ <argument> ]* <option> <option>
  • 18. Init Options e Commands: Os options e commands são usados na declaração de Services e Actions, respectivamente.
  • 19. Init
  • 20. Init A. O processo init no Android irá procurar um arquivo chamado init.rc. Ele é um script que descreve os serviços do sistema, o sistema de arquivos e outros parâmetros que precisam ser configurados. B. O processo init irá então analisar o script de inicialização e iniciar os processos de serviço do sistema.
  • 21. Zygote O zygote é o pai de todos os proces­sos Java. Tudo que roda em Java é cri­ado por este processo, que instan­cia uma máquina vir­tual Dalvik para exe­cu­tar um processo ou serviço Java. Ele esta imple­men­tado em C++, e seu código-fonte encontra-se em frameworks/base/cmds/app_process/app_main.cpp.
  • 22. Zygote O Zygote é responsável basicamente por duas operações: 1) Prover uma infraestru­tura para a exe­cução de apli­ cações Java. 2) Ini­ciar o Sys­tem Server, que geren­cia a base dos serviços do sis­tema opera­cional Android.
  • 24. System Server O system server é o primeiro componente Java a rodar no sistema. Ele vai iniciar todos os serviços Android, como o Telephony Manager e o bluetooth. Localizado em frameworks/base/services/java/com/android/server/Syste mServer.java.
  • 26. System Server Serviços inicializados pelo system server: ●Power Man­ager ●Activ­ity Manager ●Tele­phony Registry ●Pack­age Manager ●Con­text Manager ●Sys­tem Con­text Providers ●Bat­tery Service ●Alarm Man­ager ●Sen­sor Service ●Win­dow Manager ●Blue­tooth Service ●Mount Ser­vice ●...
  • 27. System Server Ao final da execução do system server, o Activ­ity Man­ ager ini­cia alguns proces­sos bási­cos, den­tre eles o com. android.launcher, que é a apli­cação respon­sável pela inter­face grá­fica padrão do Android. Após a execução do System Service, a inicialização é considerada finalizada e e broadcast ACTION_BOOT_COMPLETED é lançado.