SlideShare uma empresa Scribd logo
1 de 57
//Migração pra Android
/**
* Created by Eduardo Cucharro
*/
Eduardo Cucharro
//Desenvolvedor desde 2007
//Aplicações Desktop
//Aplicações web e Sites
//Apis Restful / WebServices
//Processos backend / integrações
//Aplicações Mobile
//Grupo Minha Vida (Time Dieta e Saúde)
Tecnologias
//Desenvolvedor desde 2007
//Delphi Forms, Windows forms (Delphi, VB.NET, C#)
//Asp.NET MVC/Webforms, Javascript, Jquery, CSS, KnockoutJS
//Asp.NET WebAPI
//IIS WindowsServices, Console applications
//Android (Java, Android Studio, Gradle, JUnit, Espresso)
//Grupo Minha Vida (Time Dieta e Saúde)
//Resultado pro usuário, o que ele podia fazer...
//UI, velocidade, beleza, flexibilidade (responsive)
//Militante Padrões web (w3c conf, Mix, BrazilJS, TDC…)
//Novos frameworks que fazia o mesmo de formas diferentes
//Evolução lenta do browser como plataforma
//Backend no mesmo cenário (ADO.NET, LinqToSQl, Entity F..)
//Sempre atrás...
Frustração
Nova plataforma...
//Apis (O que dá pra fazer com isso?)
//Comunidade (Empresas e desenvolvedores)
//Frameworks (ui, database, rede…)
//Acesso (Custo de uso, custo de compra)
//Ferramentas e produtividade (IDE, linguagem, deploy)
//Mercado (Potenciais clientes, empresas, investimentos, $)
//Potencial de evolução (Até onde dá pra chegar…)
Plataforma
//Apis - Evolução lenta, adoção mais lenta (Padrões web)
//Comunidade - Excelente, colaborativa, humilde...
//Frameworks - Evolução insana (Angular, React, Knockout…)
//Acesso - Grátis (linux, apache, node, ruby, python…)
//Ferramentas - Boas grátis, melhores…$ (sublime, webstorm)
//Mercado - Gigante (desktop, android, ios, corporativo…)
//Potencial de evolução - Baixo (vide apis)
Web
//Apis - Baixa evolução (UI e performance)
//Frameworks - Foco performance, produtividade (EF, MVC)
//Comunidade - Forte e replicadora...
//Acesso - Custo alto (servidores SO, ferramental pago…)
//Ferramentas - Constante evolução, veloz, produtiva...
//Mercado - Estagnado, empresas estabelecidas...
//Potencial de evolução - Baixo
Backend
Smart devices
//GPS (Aonde a pessoa está)
//BLE (Comunicação P2P de alta velocidade)
//2 Cameras de alta resolução
//Touch screen
//Acesso a GPU e open GL
//NFC, Giroscópio, Acelerometro...
Smart devices
//Apis - GPS, Camera, Barometro, GPU, Pagamentos...
//Frameworks - Expresso, JUnit, ReactNative, Ionic, Xamarin
//Comunidade - Solicita, humilde, open source, 2000 slack
//Acesso - Baixo custo (Quase grátis...)
//Ferramentas - Constante evolução, veloz, produtiva...
//Mercado - Gigante, velhas e novas empresas investindo
//Potencial de evolução - Gigantesco, IOT, Carros, TV, Smart
Android
+1 Bilhão de devices
//Código público no github
//Apps publicados
//Experiência provada
//Tempo de trabalho como complementa
//Freelance, remoto, contrato
//Mercado Mundial
Valorização por trabalho realizado
//Apache Cordova
//Phone Gap
//Ionic
//React Native
//Titanium
//Xamarin
//Java
Sei javascript, html, css...
Epic fail :(
//2 cursos de Android no Coursera (3 meses)
//Papo com gestor de interesse em trabalhar no Time Mobile
//Time mobile (4 Android e 2 IOS) saíram
//Enfim time mobile só que sozinho :)
//Dieta e saúde - 300 mil usuários no Android
//O desafio começou
Depois de um tempo...
Entendendo o Android
de verdade
//Se ficar com sensores ligados o tempo todo fica cansado
//Se pensar demais fica cansado
//Se olhar tudo o tempo todo tb, avisos
//Disputa a atenção, vive com os outros
//"Dinheiro limitado" (rede, energia, armazenamento, cpu)
//Eficiência e inteligência pra se manter vivo
Android (super pessoa eletrônica)
//Devices com N configurações e recursos
//Recursos variáveis (pouco armazenamento, memória, cpu)
//Telas de densidades e tamanhos diferentes
//Código pausado e reiniciado o tempo todo
//Rede intermitente, bateria acabando
//Comunicação entre apps, apps por função
//N versões de android, Apis, UI...
Desafios (Resiliência, performance...)
Fragmentação e versões
Fragmentação e versões
IE6 feelings? :)
//Support libraries (UI, novos recursos e compatibilidade)
//Google Apis (Location, Geofencing, Vision)
//Google Services (Signing, Analytics, Maps, Invites…)
//Google play services (Pagamentos, Divulgação, Infra
Download, rollouts)
Ajudinha google
Arquitetura android
Threading Model
V8/Node/"Chromium" Threading Model
//Thread única
//Ajax
//Web Workers
//Service Workers
Web (browser)
//Cada app um processo
//Multiplas Threads
//Thread pool
//C# async await save lives
Backend/ASPNET Threading model
Android
Threading/process
//Cada app um processo
//Multiplas Threads
//Thread pool
//Sem C# async await :(
//Handler/MessageQueue
Android Threading/process
//Uma Intent > Vários Apps
//Activity
//Services
//Broadcast receivers
//Content Resolvers
Intent System / Principais componentes
Componentes e interação
Android (SO)
BroadcastReceivers
(Bus)
Content Resolver
(Dados)
Activity (Tela)
//SharedPreferences (Xml chave/valor)
//Sqlite (Sql primitivo)
//NoSQL não nativo (Realm)
//Stetho do Facebook
Persistencia de dados
//Visual Studio
//Sublime/Atom
//Chrome dev tools
//Android Studio
//Chrome dev tools
//Show it
Ferramentas e Debugging
//MVC - Model View Controller
//MVP - Model View Presenter
//MVVM - Model View ViewModel
//Clean Architecture
Arquiteturas
Clean Architecture
//Funcionamento da UI - MSTestManager/Selenium/Espresso
//Integração entre componentes do próprio app - Espresso
//Lógica do negócio/UnitTesting - MSTest/Karma/JUnit/Mockito
Testabilidade
//Espresso Core - Basic Interaction, Matches Assertions
//Espresso Contrib - RecyclerView, NavDrawer, Picker
//Hamcrest - Muitos outros matches
//Espresso Web - Uso com webviews
//Espresso Idling - Sincronização de Jobs
Espresso libs
Hermetic env
92% dos problemas, podem ser resolvidos
com testes…
Performance
Distribuição/Deploy
Distribuição
//Cadastro por $25,00
//Integração com Testes Firebase/GCP
//Canais de distribuição Alpha/Beta/Prod
//Gestão loja (Teste A/B, Comentários)
//Estatísticas
Google play
//Web - Deploy servers (app atualizado pra todos)
//Desktop - Click once (depende usuário)
//Multiplas versões em prod
//Versões por recursos
//Gestão de atualizações planejada
//Qualidade essencial ou prejuizo gigantesco
Deploy
Monitoramento
//Crashlytics
//New relic
//Analytics
//Web page test
//PhantomJS
Monitoramento
//Análise plataforma
//Potencial mercado
//Mindset de desenvolvimento diferente
//Importância Threading no Android
//Processo e componentes app android
//Build, Publicação e monitoramento de um app
Resumo
Perguntas?
ArrayList<String> aListContatos = new ArrayList<String>();
//Na Comunidade AndroidDevBR (slack)
aListContatos.add(“@cuchas“);
//No Twitter
aListContatos.add(“@eduardocucharro“);
//Blog
aListContatos.add(“http://cucha.com.br“);
//Slideshare
aListContatos.add(“http://www.slideshare.net/eduardocucharro“);
Obrigado ;)

Mais conteúdo relacionado

Semelhante a Migração pra Android em

Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaWaldir R. Pires Jr
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rqKMILT
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Curso de Android - Módulo 02
Curso de Android - Módulo 02Curso de Android - Módulo 02
Curso de Android - Módulo 02Luiz Duarte
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CERonildo Oliveira
 
Desenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis MultiplataformaDesenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis MultiplataformaJose Augusto Cintra
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Androidguisester
 
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosWebinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosEmbarcados
 
Hands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFHands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFGiordano Bruno Vieira
 
Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012guisester
 
Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2Eric Cavalcanti
 
Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013guisester
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem FioDouglas Frari
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform BridgesCaio Chaves Garcez
 
Oficina Intel XDK - VIII Semana de TI UNIVEM
Oficina Intel XDK - VIII Semana de TI UNIVEMOficina Intel XDK - VIII Semana de TI UNIVEM
Oficina Intel XDK - VIII Semana de TI UNIVEMDiego Cavalca
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao androidPaulo Remoli
 

Semelhante a Migração pra Android em (20)

Desenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em JavaDesenvolvimento de Aplicações Móveis em Java
Desenvolvimento de Aplicações Móveis em Java
 
E tertulia paol-rq
E tertulia paol-rqE tertulia paol-rq
E tertulia paol-rq
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Curso de Android - Módulo 02
Curso de Android - Módulo 02Curso de Android - Módulo 02
Curso de Android - Módulo 02
 
Minicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CEMinicurso de Desenvolvimento Android - Iguatu - CE
Minicurso de Desenvolvimento Android - Iguatu - CE
 
Desenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis MultiplataformaDesenvolvimento de Aplicativos Móveis Multiplataforma
Desenvolvimento de Aplicativos Móveis Multiplataforma
 
Empreendedori$mo com Android
Empreendedori$mo com AndroidEmpreendedori$mo com Android
Empreendedori$mo com Android
 
Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para EmbarcadosWebinar: Desenvolvimento de Interface Gráfica para Embarcados
Webinar: Desenvolvimento de Interface Gráfica para Embarcados
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Hands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JFHands-on Cordova / Phonegap - GDG JF
Hands-on Cordova / Phonegap - GDG JF
 
Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012Introdução à programação em Android Senac 15/05/2012
Introdução à programação em Android Senac 15/05/2012
 
Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2Titanium Mobile - Campus Party Recife 2
Titanium Mobile - Campus Party Recife 2
 
Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013Introdução à programação em Android SENAC 17.06.2013
Introdução à programação em Android SENAC 17.06.2013
 
Computacao Movel e Sem Fio
Computacao Movel e Sem FioComputacao Movel e Sem Fio
Computacao Movel e Sem Fio
 
Universal Windows Platform Bridges
Universal Windows Platform BridgesUniversal Windows Platform Bridges
Universal Windows Platform Bridges
 
Oficina Intel XDK - VIII Semana de TI UNIVEM
Oficina Intel XDK - VIII Semana de TI UNIVEMOficina Intel XDK - VIII Semana de TI UNIVEM
Oficina Intel XDK - VIII Semana de TI UNIVEM
 
Introdução ao android
Introdução ao androidIntrodução ao android
Introdução ao android
 
Agora é Android, Tá Safo?
Agora é Android, Tá Safo? Agora é Android, Tá Safo?
Agora é Android, Tá Safo?
 
Android
AndroidAndroid
Android
 

Migração pra Android em

  • 1. //Migração pra Android /** * Created by Eduardo Cucharro */
  • 2. Eduardo Cucharro //Desenvolvedor desde 2007 //Aplicações Desktop //Aplicações web e Sites //Apis Restful / WebServices //Processos backend / integrações //Aplicações Mobile //Grupo Minha Vida (Time Dieta e Saúde)
  • 3. Tecnologias //Desenvolvedor desde 2007 //Delphi Forms, Windows forms (Delphi, VB.NET, C#) //Asp.NET MVC/Webforms, Javascript, Jquery, CSS, KnockoutJS //Asp.NET WebAPI //IIS WindowsServices, Console applications //Android (Java, Android Studio, Gradle, JUnit, Espresso) //Grupo Minha Vida (Time Dieta e Saúde)
  • 4. //Resultado pro usuário, o que ele podia fazer... //UI, velocidade, beleza, flexibilidade (responsive) //Militante Padrões web (w3c conf, Mix, BrazilJS, TDC…) //Novos frameworks que fazia o mesmo de formas diferentes //Evolução lenta do browser como plataforma //Backend no mesmo cenário (ADO.NET, LinqToSQl, Entity F..) //Sempre atrás... Frustração
  • 6. //Apis (O que dá pra fazer com isso?) //Comunidade (Empresas e desenvolvedores) //Frameworks (ui, database, rede…) //Acesso (Custo de uso, custo de compra) //Ferramentas e produtividade (IDE, linguagem, deploy) //Mercado (Potenciais clientes, empresas, investimentos, $) //Potencial de evolução (Até onde dá pra chegar…) Plataforma
  • 7. //Apis - Evolução lenta, adoção mais lenta (Padrões web) //Comunidade - Excelente, colaborativa, humilde... //Frameworks - Evolução insana (Angular, React, Knockout…) //Acesso - Grátis (linux, apache, node, ruby, python…) //Ferramentas - Boas grátis, melhores…$ (sublime, webstorm) //Mercado - Gigante (desktop, android, ios, corporativo…) //Potencial de evolução - Baixo (vide apis) Web
  • 8. //Apis - Baixa evolução (UI e performance) //Frameworks - Foco performance, produtividade (EF, MVC) //Comunidade - Forte e replicadora... //Acesso - Custo alto (servidores SO, ferramental pago…) //Ferramentas - Constante evolução, veloz, produtiva... //Mercado - Estagnado, empresas estabelecidas... //Potencial de evolução - Baixo Backend
  • 10. //GPS (Aonde a pessoa está) //BLE (Comunicação P2P de alta velocidade) //2 Cameras de alta resolução //Touch screen //Acesso a GPU e open GL //NFC, Giroscópio, Acelerometro... Smart devices
  • 11. //Apis - GPS, Camera, Barometro, GPU, Pagamentos... //Frameworks - Expresso, JUnit, ReactNative, Ionic, Xamarin //Comunidade - Solicita, humilde, open source, 2000 slack //Acesso - Baixo custo (Quase grátis...) //Ferramentas - Constante evolução, veloz, produtiva... //Mercado - Gigante, velhas e novas empresas investindo //Potencial de evolução - Gigantesco, IOT, Carros, TV, Smart Android
  • 12. +1 Bilhão de devices
  • 13. //Código público no github //Apps publicados //Experiência provada //Tempo de trabalho como complementa //Freelance, remoto, contrato //Mercado Mundial Valorização por trabalho realizado
  • 14. //Apache Cordova //Phone Gap //Ionic //React Native //Titanium //Xamarin //Java Sei javascript, html, css...
  • 16. //2 cursos de Android no Coursera (3 meses) //Papo com gestor de interesse em trabalhar no Time Mobile //Time mobile (4 Android e 2 IOS) saíram //Enfim time mobile só que sozinho :) //Dieta e saúde - 300 mil usuários no Android //O desafio começou Depois de um tempo...
  • 18. //Se ficar com sensores ligados o tempo todo fica cansado //Se pensar demais fica cansado //Se olhar tudo o tempo todo tb, avisos //Disputa a atenção, vive com os outros //"Dinheiro limitado" (rede, energia, armazenamento, cpu) //Eficiência e inteligência pra se manter vivo Android (super pessoa eletrônica)
  • 19. //Devices com N configurações e recursos //Recursos variáveis (pouco armazenamento, memória, cpu) //Telas de densidades e tamanhos diferentes //Código pausado e reiniciado o tempo todo //Rede intermitente, bateria acabando //Comunicação entre apps, apps por função //N versões de android, Apis, UI... Desafios (Resiliência, performance...)
  • 23. //Support libraries (UI, novos recursos e compatibilidade) //Google Apis (Location, Geofencing, Vision) //Google Services (Signing, Analytics, Maps, Invites…) //Google play services (Pagamentos, Divulgação, Infra Download, rollouts) Ajudinha google
  • 28. //Cada app um processo //Multiplas Threads //Thread pool //C# async await save lives Backend/ASPNET Threading model
  • 30.
  • 31. //Cada app um processo //Multiplas Threads //Thread pool //Sem C# async await :( //Handler/MessageQueue Android Threading/process
  • 32. //Uma Intent > Vários Apps //Activity //Services //Broadcast receivers //Content Resolvers Intent System / Principais componentes
  • 33. Componentes e interação Android (SO) BroadcastReceivers (Bus) Content Resolver (Dados) Activity (Tela)
  • 34. //SharedPreferences (Xml chave/valor) //Sqlite (Sql primitivo) //NoSQL não nativo (Realm) //Stetho do Facebook Persistencia de dados
  • 35. //Visual Studio //Sublime/Atom //Chrome dev tools //Android Studio //Chrome dev tools //Show it Ferramentas e Debugging
  • 36. //MVC - Model View Controller //MVP - Model View Presenter //MVVM - Model View ViewModel //Clean Architecture Arquiteturas
  • 38. //Funcionamento da UI - MSTestManager/Selenium/Espresso //Integração entre componentes do próprio app - Espresso //Lógica do negócio/UnitTesting - MSTest/Karma/JUnit/Mockito Testabilidade
  • 39. //Espresso Core - Basic Interaction, Matches Assertions //Espresso Contrib - RecyclerView, NavDrawer, Picker //Hamcrest - Muitos outros matches //Espresso Web - Uso com webviews //Espresso Idling - Sincronização de Jobs Espresso libs
  • 41. 92% dos problemas, podem ser resolvidos com testes…
  • 43.
  • 44.
  • 45.
  • 48. //Cadastro por $25,00 //Integração com Testes Firebase/GCP //Canais de distribuição Alpha/Beta/Prod //Gestão loja (Teste A/B, Comentários) //Estatísticas Google play
  • 49. //Web - Deploy servers (app atualizado pra todos) //Desktop - Click once (depende usuário) //Multiplas versões em prod //Versões por recursos //Gestão de atualizações planejada //Qualidade essencial ou prejuizo gigantesco Deploy
  • 50.
  • 52. //Crashlytics //New relic //Analytics //Web page test //PhantomJS Monitoramento
  • 53.
  • 54.
  • 55. //Análise plataforma //Potencial mercado //Mindset de desenvolvimento diferente //Importância Threading no Android //Processo e componentes app android //Build, Publicação e monitoramento de um app Resumo
  • 57. ArrayList<String> aListContatos = new ArrayList<String>(); //Na Comunidade AndroidDevBR (slack) aListContatos.add(“@cuchas“); //No Twitter aListContatos.add(“@eduardocucharro“); //Blog aListContatos.add(“http://cucha.com.br“); //Slideshare aListContatos.add(“http://www.slideshare.net/eduardocucharro“); Obrigado ;)