Class 02 - Android Study Jams: Android Development for Beginners
Migração pra android
-
Upload
eduardo-cucharro -
Category
Technology
-
view
74 -
download
1
Transcript of Migração pra android
//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 TwitteraListContatos.add(“@eduardocucharro“);
//BlogaListContatos.add(“http://cucha.com.br“);
//SlideshareaListContatos.add(“http://www.slideshare.net/eduardocucharro“);
Obrigado ;)