O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Desenvolvemos produtos digitais
Continuous Mobile: Entrega e Integração 
Contínuas em Android
Temas 
Integração 
Contínua (IC)? 
Deployment 
Continuo(DC)? 
Topologia 
IC/DC Mobile 
Desafios 
Mobile 
QA & 
comentários
Um projeto qualquer...
O problema...
Como detectar o problema antes? 
Automatização! 
Git Server 
Emulador 1 Emulador n 
CI Server 
CI faz um polling do git 
....
Benefícios IC/DC 
● Aumento da inspeção e consequente aumento da transparência 
● Garantia de execução de testes a cada co...
Automatização = !ADT && !Studio
Build automatizado - Android 
Provavelmente será 
depreciado logo… 
Muito bom se você não usa o Eclipse, maaaas 
ainda não...
● Famoso no Java Backend 
● Suporte a AAR está em beta (para o Eclipse não é 
possível por enquanto) 
● Suporte ruim a bib...
● Sistema que o Google escolheu 
● Estrutura do pojeto mais simples (BuildVariants + 
Project Flavors) 
● Maiores facilida...
Emuladores - Android 
● Matriz de problemas: vértice A (versões do Android) x vértice B 
(densidades de telas) x vértice C...
Android Jenkins Plugin 
● Emuladores por meio do plugin Android Emulator Plugin
Android Jenkins Plugin
Android Jenkins Plugin | Problemas? 
● Startup de emuladores 
● Imprevisível em ambientes virtualizados (AWS) 
● Como faze...
Jenkins - Master -> Slave 
● Master: na núvem (o mesmo para iOS, 
Android e etc) 
● Slaves: máquinas físicas 
 Podem ter ...
Jenkins - Master -> Slave 
● Pode-se publicar relatórios da 
branch remota 
● Para os builds de Maven com o 
plugin 3.9.0-...
Jenkins - Master -> Slave | Problemas? 
● Se puder, faça o setup com um DevOps! 
● Conheça os comandos mais avançados do A...
Jenkins - Branching & Fluxo de jobs 
● Não tem um único modelo correto 
● Faça como achar melhor, apenas 
não complique mu...
Testes 
● Testes Unitários: faça-os serem unitários mesmo! 
(faça um mock da API, por exemplo…) 
● Testes Integrados: use ...
Testes - Problemas? 
● Desliguem as animações dos targets! 
● Use um outro InstrumentationRunner (ver 
documentação do Esp...
Soluções Deployment Continuo 
● Solução Interna MobRelease 
● Appaloosa (https://www.appaloosa-store.com/) 
● Appblade (ht...
blog.concretesolutions.com.br 
@ConcreteS 
facebook.com/ConcreteS 
victor.nascimento@concretesolutions.com.br
Próximos SlideShares
Carregando em…5
×

Intercon Android - Integração e entrega contínua para Android

936 visualizações

Publicada em

Palestra apresentada por Victor Nascimento durante o Intercon Android, no dia 20/09/2014.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Intercon Android - Integração e entrega contínua para Android

  1. 1. Desenvolvemos produtos digitais
  2. 2. Continuous Mobile: Entrega e Integração Contínuas em Android
  3. 3. Temas Integração Contínua (IC)? Deployment Continuo(DC)? Topologia IC/DC Mobile Desafios Mobile QA & comentários
  4. 4. Um projeto qualquer...
  5. 5. O problema...
  6. 6. Como detectar o problema antes? Automatização! Git Server Emulador 1 Emulador n CI Server CI faz um polling do git ... Relatórios Mobiledev - CD Server (Concrete Solutions)
  7. 7. Benefícios IC/DC ● Aumento da inspeção e consequente aumento da transparência ● Garantia de execução de testes a cada commit (polling do SIC) ● Dar mais confiança para o time em atualizações de versões ● Repetibilidade da verificação de erros reais ● One click Deploy (até produção se quiser!) ● Scare Friday ? Deploys de sexta-feira
  8. 8. Automatização = !ADT && !Studio
  9. 9. Build automatizado - Android Provavelmente será depreciado logo… Muito bom se você não usa o Eclipse, maaaas ainda não está completo… Opção para quem já está acostumado com Java e Eclipse. Comunidade altamente ativa!
  10. 10. ● Famoso no Java Backend ● Suporte a AAR está em beta (para o Eclipse não é possível por enquanto) ● Suporte ruim a bibliotecas fechadas (bem melhor no 4.x-rc1 ● Zilhões de plugins (Checkstyle, PMD, JaCoCo, Emma, Sonar, etc)
  11. 11. ● Sistema que o Google escolheu ● Estrutura do pojeto mais simples (BuildVariants + Project Flavors) ● Maiores facilidades (ManifestMerger, controle da versão e etc) ● Ainda está em beta!
  12. 12. Emuladores - Android ● Matriz de problemas: vértice A (versões do Android) x vértice B (densidades de telas) x vértice C (hardware? 3g?) x ... ● http://square.github.io/spoon/ execução do projeto em todos os devices que o adb encontrar ● Jenkins Matrix Parameter Job ● Android Maven Plugin RC | Gradle
  13. 13. Android Jenkins Plugin ● Emuladores por meio do plugin Android Emulator Plugin
  14. 14. Android Jenkins Plugin
  15. 15. Android Jenkins Plugin | Problemas? ● Startup de emuladores ● Imprevisível em ambientes virtualizados (AWS) ● Como fazer com devices físicos?
  16. 16. Jenkins - Master -> Slave ● Master: na núvem (o mesmo para iOS, Android e etc) ● Slaves: máquinas físicas  Podem ter vários devices conectados  Podem ter os emuladores já inicializados  Podem ser otimizados (placa gráfica, usar KVM, etc)
  17. 17. Jenkins - Master -> Slave ● Pode-se publicar relatórios da branch remota ● Para os builds de Maven com o plugin 3.9.0-rcX e Gradle recentes, executar em tudo que estiver disponível para o ADB
  18. 18. Jenkins - Master -> Slave | Problemas? ● Se puder, faça o setup com um DevOps! ● Conheça os comandos mais avançados do ADB (port forwarding para devices sem cabos USBs, AAPT para descobrir a versão do manifest, etc) ● Pré & Post build actions com scripts (por exemplo para guardar os logcats de cada device na workspace do seu job)
  19. 19. Jenkins - Branching & Fluxo de jobs ● Não tem um único modelo correto ● Faça como achar melhor, apenas não complique muito. Exemplo: desenvolvimento na branch MASTER, e todos os releases na branch RELEASE com versões TAGGEADAS
  20. 20. Testes ● Testes Unitários: faça-os serem unitários mesmo! (faça um mock da API, por exemplo…) ● Testes Integrados: use ferramentas como Calabash ou Selendroid
  21. 21. Testes - Problemas? ● Desliguem as animações dos targets! ● Use um outro InstrumentationRunner (ver documentação do Espresso) ● Procure a implementação das bibliotecas que usa para mockar. Exemplo: retrofit -> retrofit-mock
  22. 22. Soluções Deployment Continuo ● Solução Interna MobRelease ● Appaloosa (https://www.appaloosa-store.com/) ● Appblade (https://appblade.com/) ● Google Play Native App Beta Testing Alternativas
  23. 23. blog.concretesolutions.com.br @ConcreteS facebook.com/ConcreteS victor.nascimento@concretesolutions.com.br

×