Este treinamento visa capacitar o participante a desenvolver e customizar sistemas com Android embarcado.
Durante o treinamento, os seguintes tópicos serão abordados:
- Histórico do Android, principais características, licenças de software, processo de certificação, componentes básicos do sistema operacional.
- Código-fonte do Android, AOSP, ferramenta repo e repositórios git, principais diretórios do código-fonte, navegando no código-fonte, AndroidXRef.
- Sistema de compilação do Android, makefiles (Android.mk), Blueprint files (Android.bp), ferramentas Soong, Ninja e Kati, produto e variante de build, comando lunch, compilando o Android, imagens geradas, outros comandos de compilação, emulador.
- Características e requisitos de hardware para utilizar o Android, bootloader e fastboot, alterações no kernel Linux para o Android (binder, ashmem, wakelocks, etc), organização do sistema de arquivos do Android, partições e pontos de montagem (ramdisk, system, data, vendor, etc), principais diretórios do sistema de arquivos, ADB.
- Conceito de produtos, criação de um novo produto, customizando o produto, adicionando aplicações e arquivos, overlay de recursos, definindo propriedades, makefile da placa.
- Bibliotecas e aplicações da camada nativa, biblioteca C e Bionic, toolbox, toybox e busybox, shell, daemons (ueventd, vold, rild, netd, installd, etc), logcat, utilitários da linha de comandos.
- Visão geral do processo de boot, a inicialização do Android, o processo init e o arquivo de configuração init.rc, ações e triggers de boot, serviços e daemons executados na inicialização, gerenciamento das propriedades do sistema, dalvik, art, zygote e system server.
- Módulos do sistema de build do Android (bibliotecas, aplicações, etc), criando makefiles (Android.mk), ferramenta Kati, criando arquivos de Blueprint (Android.bp), compilando e instalando módulos.
- Abstraindo o acesso ao hardware no Android, arquitetura da HAL (Hardware Abstraction Layer), associação entre as HALs e os serviços do sistema, HAL como biblioteca compartilhada (até Android 7), Project Treble, HAL como serviço (a partir do Android 8), HIDL, VTS, VNDK, VINTF Object, implementação de uma HAL em C++, outros mecanismos de acesso ao hardware no Android.
- Componentes do framework Android, system services, serviços e processos (surfaceflinger, drmserver, mediaserver, cameraserver, system_server, etc), binder e comunicação com os serviços, comandos e utilitários do framework Android.
- Razões para estender o framework Android, implementando um serviço do framework em Java, definindo a interface do serviço em AIDL, acessando a HAL via JNI, criando uma API (classe Manager) para acessar o serviço.
- Características básicas de uma aplicação Android, componentes de uma aplicação (activities, services, broadcast receivers e content providers), intents e comunicação entre componentes, processos e threads de uma aplicação Android, ciclo de vida das aplicações, gerenciamento de memória, segurança e permissões, NDK, desenvolvendo uma aplicação dedicada (kiosk mode), aplicação Launcher, lock task mode.
- Links e recursos online, recomendações de livros, dúvidas e comentários finais, encerramento.
Para mais detalhes sobre o conteúdo, você pode consultar a agenda e os slides do treinamento.
Algumas fotos dos treinamentos já realizados podem ser visualizadas aqui.
Público alvo
Estudantes, engenheiros e desenvolvedores interessados no funcionamento interno do Android e no processo de porte e adaptação do Android para um sistema embarcado.
Pré-requisitos
Conhecimentos básicos de sistemas GNU/Linux e linha de comandos do shell. Apesar de não ser essencial, conhecimentos mínimos em Linux embarcado e nas linguagens C, C++ e Java são recomendados.
Equipamentos
Todos os equipamentos necessários são fornecidos pela Embedded Labworks.
Material de estudo
O material de estudo é composto pelos slides das apresentações, o livro de atividades e exercícios, os guias de referência e documentos de estudo adicionais. Todo o material será fornecido de forma eletrônica no início do treinamento.
Kit de desenvolvimento
Os exercícios do treinamento são realizados no emulador oficial do Android.
Turmas abertas
Os treinamentos em turmas abertas são realizados em um ambiente agradável, com um laboratório devidamente equipado e acesso à Internet. As aulas são normalmente ministradas em período integral, com uma parada para o almoço e um coffee-break pela manhã.
Caso esteja interessado em participar do treinamento e não exista uma turma aberta, faça a pré-inscrição clicando aqui. Entraremos em contato assim que uma nova turma for aberta.
Treinamentos in-company
Se você planeja capacitar a sua equipe, considere um treinamento na sua empresa.
Turmas fechadas para treinamento in-company possuem as mesmas características de uma turma aberta. Neste modelo, a empresa é responsável por fornecer os recursos necessários para a realização do treinamento, incluindo sala, datashow e as máquinas de desenvolvimento. Esse modelo também traz grande economia para a empresa, já que o custo do transporte e estadia de vários funcionários é reduzido apenas ao do instrutor.
Se sua empresa tem uma necessidade especial, podemos estudar um programa que atenda sua necessidade de forma direcionada, como preparar o treinamento para uma plataforma de hardware específica ou desenvolver um conteúdo adicional. Não hesite em entrar em contato por e-mail ou pela página de contato.
Treinamentos na sua cidade
Você pode levar os treinamentos para sua comunidade, em qualquer cidade do Brasil.
Você não tem condições de realizar o curso em São Paulo? Você tem um grupo de estudos e quer aprender mais sobre determinada tecnologia? Você coordena ou participa da coordenação de algum curso na sua universidade e gostaria de treinar seus alunos? Você tem um espaço, quer reunir os amigos e passar agradáveis horas aprendendo sobre sistemas embarcados?
Mande um e-mail ou uma mensagem para nós. Informe seu curso de interesse e também a sua cidade. Se conseguirmos formar uma turma, poderemos levar o treinamento para a sua cidade!
Clientes que já fizeram o treinamento
Ainda tem dúvidas?
Em caso de dúvidas, críticas ou sugestões, envie um e-mail ou deixe uma mensagem na página de contato.
Entre em contato