SlideShare ist ein Scribd-Unternehmen logo
1 von 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 ;)

Weitere ähnliche Inhalte

Ähnlich wie Migração pra android

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
 

Ähnlich wie Migração pra android (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

  • 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 ;)