A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Gerenciar o tempo de inicialização
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O processo de inicialização é uma cadeia de ações que começa na ROM de inicialização, seguida pelo carregador de inicialização,
kernel, Init, Zygote e servidor do sistema. O negrito
indica o processo de inicialização específico do Android. No processo de inicialização específico para automóveis, os serviços iniciais,
como a câmera traseira (RVC, na sigla em inglês), precisam ser iniciados durante a inicialização do kernel.
Pedido |
Componente |
Android |
Android Automotive |
1 |
ROM de inicialização |
Carrega o primeiro estágio do carregador de inicialização na RAM interna. |
2 |
Carregador de inicialização |
Inicia memórias, verifica a segurança e carrega o kernel. |
3 |
Kernel |
Configura controladores de interrupção, proteção de memória, caches e programação; inicia processos
do espaço do usuário. |
O processo da câmera de ré (RVC, na sigla em inglês) começa no início da inicialização do kernel. Depois que o
processo é iniciado, o GPIO do VMCU aciona o RVC para mostrar na tela. |
4 |
Processo de inicialização |
Analisa scripts init.rc , monta sistemas de arquivos, inicia o Zygote e o
processo do sistema. |
O HAL do veículo (VHAL, na sigla em inglês) é iniciado durante a fase de inicialização como parte dos serviços
principais. Pode ser movido para estados anteriores, dependendo do ServiceManager. É necessário remover
dependências de bibliotecas compartilhadas (como init). |
5 |
Zigoto |
Configura o Java Runtime e a memória de inicialização para objetos Android. |
6 |
Servidor do sistema |
O primeiro componente Java do sistema, que inicia os serviços principais do Android. |
O CarService é iniciado depois que todos os serviços do sistema são iniciados. |
Otimizar o tempo de inicialização
Para melhorar o tempo de inicialização no sistema, siga estas diretrizes:
-
Kernel. Carregar apenas os módulos em uso e inicializar apenas os componentes
de hardware em uso.
-
init.rc
- Verifique se há operações de bloqueio (serviço em comparação com a invocação de comando).
- Inicie apenas o que for usado.
- Definir a prioridade correta para os serviços.
-
Zigoto. Otimização de pré-carregamento de classe (especifica a lista de classes a
carregar).
-
Gerenciador de pacotes
-
Servidor do sistema. Inicie apenas os serviços do sistema que são usados.
Para ajudar na otimização, o Google oferece as seguintes ferramentas:
-
Use packages/services/Car/tools/bootanalyze/bootanalyze.py
para analisar os registros do logcat e
dmesg.
-
Use packages/services/Car/tools/bootio/
para registrar a E/S de processos durante a
inicialização. É necessário compilar o kernel com flags específicas (consulte o arquivo
README.md
).
Iniciar os serviços com antecedência
Na sequência de inicialização, alguns serviços podem ser iniciados antes do Android.
Câmera traseira
A câmera retrovisor (RVC, na sigla em inglês) precisa ser processada no kernel. A VMCU notifica o processo do kernel nativo
quando o veículo muda para a ré, após o que o processo do kernel nativo exibe a
imagem do RCV na tela. O HAL do veículo pode controlar o RVC usando
hardware/libhardware/include/hardware/vehicle_camera.h
.
HAL veicular (VHAL)
Alguns sistemas podem precisar ler e armazenar dados CAN (por exemplo, velocidade do veículo, status da engrenagem)
durante os estágios iniciais da sequência de inicialização enquanto aguardam o início do serviço do espaço do usuário,
que ocorre mais tarde na sequência de inicialização. Esse cenário exige que o VNS e os controladores HAL e CAN
sejam iniciados muito cedo, normalmente em alguns segundos.
-
Os sistemas que podem montar /system
rapidamente podem simplesmente iniciar o gerenciador de serviços e, em seguida,
a VNS.
-
O sistema que não consegue montar /system
rapidamente precisa mover o gerenciador de serviços e o VNS
para a imagem de inicialização do kernel e vincular todas as bibliotecas dependentes de forma estática.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Manage boot time\n\nThe boot process is a chain of actions starting from the boot ROM, followed by the bootloader,\nkernel, **Init** , **Zygote** , and **system server** (bold\nindicates Android-specific boot process). In the automotive-specific boot process, early services\nsuch as rearview camera (RVC) must start during the kernel boot.\n\n| Order | Component | Android | Android Automotive |\n|-------|---------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 1 | Boot ROM | Loads the first stage of the boot loader into internal RAM. ||\n| 2 | Bootloader | Inits memories, verifies for security, and loads kernel. ||\n| 3 | Kernel | Sets up interrupt controllers, memory protection, caches, and scheduling; launches user space processes. | **Rearview camera (RVC)** process starts early in kernel boot. After the process is up, GPIO from VMCU triggers RVC to show on display. |\n| 4 | Init process | Parses `init.rc` scripts, mounts file systems, launches Zygote, launches system process. | **Vehicle HAL (VHAL)** starts during init phase as part of core services. Can be moved to earlier states depending on ServiceManager; requires removing dependencies on shared libraries (such as init). |\n| 5 | Zygote | Sets up Java Runtime and init memory for Android objects. ||\n| 6 | System server | First Java component in the system, starts core Android services. | **CarService** starts after all system services are started. |\n\nOptimize boot time\n------------------\n\nTo improve boot time in your system, use the following guidelines:\n\n- **Kernel.** Load only the modules in use and initialize only the hardware\n components in use.\n\n- `init.rc`\n\n - Watch for blocking operations (service compared to command invocation).\n - Start only what is used.\n - Setting correct priority for services.\n- **Zygote.** Class preloading optimization (specify the list of classes to\n load).\n\n- **Package Manager**\n\n - Optimize product image to include only APKs in use.\n\n - [Enable DEX\n preoptimization](/docs/core/runtime/configure#compilation_options).\n\n- **System server.** Start only the system services that are used.\n\nFor help with optimization, Google provides the following tools:\n\n- Use `packages/services/Car/tools/bootanalyze/bootanalyze.py` to analyze logcat and\n dmesg logs.\n\n- Use `packages/services/Car/tools/bootio/` to record I/O for processes during the\n boot. You must compile the kernel with specific flags (refer to the `README.md`\n file).\n\nStart services early\n--------------------\n\nIn the boot sequence, some services might start before Android starts to boot.\n\n### Rearview camera\n\nThe rearview camera (RVC) should be handled in the kernel. The VMCU notifies the native kernel\nprocess when the vehicle shifts into Reverse, after which the native kernel process displays the\nRVC image onto the display. The vehicle HAL can control the RVC using\n`hardware/libhardware/include/hardware/vehicle_camera.h`.\n\n### Vehicle HAL (VHAL)\n\nSome systems might need to read and buffer CAN data (for example, vehicle speed, gear status)\nduring the early stages of the boot sequence while waiting for the user-space service to start\n(which occurs later in the boot sequence). This scenario requires VNS and the HAL and CAN\ncontrollers to start very early, typically within a few seconds.\n\n- Systems that can quickly mount `/system` can simply launch service manager then\n VNS early.\n\n- System that can't quickly mount `/system` must move both service manager and VNS\n to the kernel boot image and link all dependent libraries statically."]]