Migração pra android

57
//Migração pra Android /** * Created by Eduardo Cucharro */

Transcript of Migração pra android

Page 1: Migração pra android

//Migração pra Android

/** * Created by Eduardo Cucharro */

Page 2: Migração pra android

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)

Page 3: Migração pra android

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)

Page 4: Migração pra android

//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

Page 5: Migração pra android

Nova plataforma...

Page 6: Migração pra android

//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

Page 7: Migração pra android

//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

Page 8: Migração pra android

//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

Page 9: Migração pra android

Smart devices

Page 10: Migração pra android

//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

Page 11: Migração pra android

//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

Page 12: Migração pra android

+1 Bilhão de devices

Page 13: Migração pra android

//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

Page 14: Migração pra android

//Apache Cordova

//Phone Gap

//Ionic

//React Native

//Titanium

//Xamarin

//Java

Sei javascript, html, css...

Page 15: Migração pra android

Epic fail :(

Page 16: Migração pra android

//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...

Page 17: Migração pra android

Entendendo o Android de verdade

Page 18: Migração pra android

//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)

Page 19: Migração pra android

//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...)

Page 20: Migração pra android

Fragmentação e versões

Page 21: Migração pra android

Fragmentação e versões

Page 22: Migração pra android

IE6 feelings? :)

Page 23: Migração pra android

//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

Page 24: Migração pra android

Arquitetura android

Page 25: Migração pra android

Threading Model

Page 26: Migração pra android

V8/Node/"Chromium" Threading Model

Page 27: Migração pra android

//Thread única

//Ajax

//Web Workers

//Service Workers

Web (browser)

Page 28: Migração pra android

//Cada app um processo

//Multiplas Threads

//Thread pool

//C# async await save lives

Backend/ASPNET Threading model

Page 29: Migração pra android

Android Threading/process

Page 30: Migração pra android
Page 31: Migração pra android

//Cada app um processo

//Multiplas Threads

//Thread pool

//Sem C# async await :(

//Handler/MessageQueue

Android Threading/process

Page 32: Migração pra android

//Uma Intent > Vários Apps

//Activity

//Services

//Broadcast receivers

//Content Resolvers

Intent System / Principais componentes

Page 33: Migração pra android

Componentes e interação

Android (SO)

BroadcastReceivers(Bus)

Content Resolver (Dados)

Activity (Tela)

Page 34: Migração pra android

//SharedPreferences (Xml chave/valor)

//Sqlite (Sql primitivo)

//NoSQL não nativo (Realm)

//Stetho do Facebook

Persistencia de dados

Page 35: Migração pra android

//Visual Studio

//Sublime/Atom

//Chrome dev tools

//Android Studio

//Chrome dev tools

//Show it

Ferramentas e Debugging

Page 36: Migração pra android

//MVC - Model View Controller

//MVP - Model View Presenter

//MVVM - Model View ViewModel

//Clean Architecture

Arquiteturas

Page 37: Migração pra android

Clean Architecture

Page 38: Migração pra android

//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

Page 39: Migração pra android

//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

Page 40: Migração pra android

Hermetic env

Page 41: Migração pra android

92% dos problemas, podem ser resolvidos com testes…

Page 42: Migração pra android

Performance

Page 43: Migração pra android
Page 44: Migração pra android
Page 45: Migração pra android
Page 46: Migração pra android

Distribuição/Deploy

Page 47: Migração pra android

Distribuição

Page 48: Migração pra android

//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

Page 49: Migração pra android

//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

Page 50: Migração pra android
Page 51: Migração pra android

Monitoramento

Page 52: Migração pra android

//Crashlytics

//New relic

//Analytics

//Web page test

//PhantomJS

Monitoramento

Page 53: Migração pra android
Page 54: Migração pra android
Page 55: Migração pra android

//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

Page 56: Migração pra android

Perguntas?

Page 57: Migração pra android

ArrayList<String> aListContatos = new ArrayList<String>();

//Na Comunidade AndroidDevBR (slack)aListContatos.add(“@cuchas“);

//No TwitteraListContatos.add(“@eduardocucharro“);

//BlogaListContatos.add(“http://cucha.com.br“);

//SlideshareaListContatos.add(“http://www.slideshare.net/eduardocucharro“);

Obrigado ;)