Aplicativos Android Nativos
com C#
William S. Rodriguez
@williamsrodz
william@28bytes.com.br
Father • Community Addicted
Quem?
#MonkeyNights • #DotNetCuritiba • #DevExp/DevDay
Comunidades!
silos
Cross Platform Apps
Escreva uma vez e execute em
qualquer lugar.
Interfaces fora do
padrão
Performance não
nativa
Acesso a API’s
limitados
Black Box
Magic / Black Box
Bom para o
desenvolvedor…
Bom para o
cliente…
Péssimo para o
usuário!
"The biggest mistake we made
as a company was betting too
much on HTML5 rather than
native"
Image source huffingtonpost.in
HTML5
Image source huffingtonpost.in
APP NATIVA
"Webviews are the duct
tape of the mobile world"
https://medium.com/bpxl-craft/apple-tv-a-world-without-webkit-5c428a64a6dd
Native Apps
"People expect great
experiences from their
mobile devices"
Miguel de Icaza
Native Apps
Interface de Usuário Nativa
App’s são construídas utilizando interface
e , controles padrão permitindo interações
fáceis e familiares
High-fidelity API Access
App’s têm acesso a toda a gama de
funcionalidade exposta pela plataforma
independente de dispositivo
Native Performance
App’s tiram vantagem de aceleração de
hardware e recursos específicos da
plataforma, e são compilados como
binários nativos, não interpretadas em
tempo de execução.
"Only native apps deliver the
high-quality, high- performance
apps that your users expect"
John Doe
Então?
Como compartilhar e
reutilizar código…
sem sacrificar, ux,
performance ou features?
Mono
• Open source implementation of the CLR
• Execute .Net code across Linux, MacOS X, Solaris,
BSD, Wii, PS3…
• Started in 2001 as Ximian, purchased by Novell in
2003, released in 2004;
• Mono “died" in April 2011 when Novel was acquired
by Attachmate Group;
Mono
• 2009, Mono.Touch created (released in 2010);
• 2010: Mono.Droid created (release in 2011);
• May 2011 Xamarin was founded;
Mono
C# em 2.6 bilhões de dispositivos
+ +
C# em 2.6 bilhões de dispositivos
Xamarin
4 anos de vida
+1 milhão de
desenvolvedores
15 mil clientes utilizando a
plataforma
Xamarin utiliza uma
Abordagem Única
C#
Compartilhe o código que faz sentido, tire
vantagem da UX nativa de cada plataforma.
Xamarin Abordagem Tradicional
Shared C# Client/Server
Shared C# codebase • 100% native API access • High performance
Shared C# Mobile
iOS C# UI Windows C# UIAndroid C# UI
C# Server
Linux/Mono
CoreCLR
Azure
Xamarin Forms
Shared C# Client/Server
Shared C# codebase • 100% native API access • High performance
Shared C# Mobile C# Server
Linux/Mono
CoreCLR
Azure
Xamarin é 100% Código Nativo
Debug de objetos Java
e Objective C
Interoperabilidade com
linguagem nativa
Utilizar bibliotecas
Android e iOS de forma
nativa
Empacotar e
disponibilizar uma
aplicação nativa única
Windows APIs
Microsoft.Phone Microsoft.Networking Windows.Storage Windows.Foundation Microsoft.Devices
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
iOS – 100% API Coverage
MapKit UIKit iBeacon CoreGraphics CoreMotion
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Android – 100% API Coverage
Text-to-speech ActionBar
Printing
Framework
Renderscript NFC
System.Data System.Windows System.Numerics System.Core System.ServiceModel
System.Net System System.IO System.Linq System.Xml
C#
Native Android packages
Xamarin.Android tira vantage da
compilação Just In Time (JIT) nos
dispositivos Android.
Compatibilidade e Atualizações
Única solução Cross-
plataforma a suportar
Amazon Fire
Única solução Cross-
plataforma a suportar
Wearables e Nearables
100% de suporte
Android M
100% de suporte ao
iOS 8 (no mesmo dia)
Compartilhamento de Código
C#
70%
Backend
C#
30%
UI
* Media de Compartilhamento
Compartilhamento de Código
20%
C#
Client / Server
86%
C#
Android
75%
C#
iOS
85%
C#
Windows RT
http://icircuitapp.com/
50 milhões de linhas de código
compartilhado
rdio
Xamarin.Android
Xamarin Installer
https://xamarin.com/download
Ambiente de Desenvolvimento
Windows
Visual Studio ou
Xamarin Studio
Mac
Xamarin Studio
Xamarin Android Designer
• Integração completa
com Visual Studio;
• Drag and drop de
componentes;
• Muilti edit.
Anything you can do in Android
Studio, you can do in Xamarin
Studio ou Visual Studio
Xamarin Android Player
Goole Nexus 4 Xamarin Android Player Google Emulator
65
1853
1565
GeekBench 3 Mult-core
Documentação
https://developer.android.com/
guide/index.html
https://developer.xamarin.com/guides/android/
Componentes
https://components.xamarin.com
C#
Anything you can do in
Objective-C, Swift or Java, you
can do in C#.
C#
• Suporte a Linq e
Lambdas;
• Eventos e delegates;
• Paralelismo;
• Programação
Assíncrona;
• Generics;
• Métodos anônimos;
var doc = Xdocument.Load(utl);
foreach(var item in doc.Root.Elements()) {
var text = item.value;
}
from p in Table<Pessoa>()
where p.ID == id
select p;
button.TouchUpInside += (s,o) => {
message.Text = “Olá!”;
}
from item in itens.AsParallel()
let result = VaiDemorarUmPouco(item)
select result;
var client = new HttpClient();
var getStringTask = await
client.GetStringAsync(“http://28bytes.com.br”);
Demo
Xamarin Studio
Novo App
Novo App
Activity, code view
Activity, design view
Activity, design xml view
http://bit.ly/mixradioapp
http://bit.ly/DsKids
http://bit.ly/1MsEHNb
Dúvidas?
Para saber mais
• https://xamarin.com
• http://developer.xamarin.com/guides/android/
• https://www.facebook.com/MonkeyNightsDevs
• http://monobrasil.com
Quanto Custa?
William S. Rodriguez
@williamsrodz
william@28bytes.com.br
Obrigado :)
Father • Community Addicted

Construindo Aplicativos Android Nativos com C#