SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
Android Apps mit Xamarin
entwickeln
André Krämer
Softwareentwickler, Trainer, Berater, Microsoft MVP
https://andrekraemer.de | andre@andrekraemer.de | @codemurai
Buch(2019)
E-Book
Der Xamarin Track
Uhzeit Vortrag Sprecher
10:30 –
11:30
Android Apps mit Xamarin entwickeln André Krämer
11:45 –
12:45
Advanced Xamarin.Forms
Xamarin.Forms und PRISM
Gill Cleeren
Siavash Ghassemi
14:15 -
15:15
Mobile app development with Xamarin
and MVVMCross
Martijn van Dijk
15:30 –
16:30
.NET Code Sharing Kerry. W. Lothrop
17:00 –
18:00
Best Practices und Performance-Tipps,
um Ihre Xamarin-App zu verbessern
Sebastian Seidel
18:15 –
19:15
Xamarin apps and the outside world
Xamarin.Forms Apps mit CQRS und
EventSourcing
Gill Cleeren
Siavash Ghassemi
3
Herausforderungen in modernen
Geschäftsanwendungen
Geschäftsanwendungen, wie wir sie kennen …
Screenshot des Open Source Tools Bulk Rename Utility. Screenshot erstellt von André Krämer
Foto:©anyaberkut|Fotolia.com
Foto:©Photographee.eu|Fotolia.com
Foto:©pannawat|Fotolia.com
Typische Business-Apps
• Zeiterfassung
• Reisekosten
• Customer-Relationship-Management (CRM)
• Urlaubsantrag
• Mängeldokumentation
• Vertriebslösungen (z. B. für Vertreter, etc.)
• Frontend für bestehende ERP Lösungen (SAP, ...)
• Frontend für SharePoint
• ...
9
Bis Ende 2017 wird der Bedarf an Enterprise
Mobile Apps die verfügbaren
Entwicklungskapazitäten um den Faktor fünf
übersteigen
Quelle:Gartner|http://www.gartner.com/newsroom/id/3076817
In 2017 haben ¼ der Unternehmen weltweit
keine mobile Apps gebaut.
Quelle:Gartner|http://www.gartner.com/newsroom/id/3076817
Der Hauptgrund ist Ressourcenmangel
Smartphone Marktanteile Q1/2017 (Quelle: IDC)
Android; 85,00%
iOS; 14,70%
Windows
Phone;
0,10%
Rest; 0,10%
Android
iOS
Windows Phone
Rest
Quelle: http://www.idc.com/promo/smartphone-market-share/os (Abgerufen: Juni 2018)
Verteilung der Tablet Betriebssysteme im geschäftlichen Umfeld
(Quelle: Good Technology)
iOS; 64%
Android;
25%
Windows;
11%
iOS
An dr oid
Windo ws
Quelle: https://media.good.com/documents/mobility-index-report-q2-2015.pdf
Herausforderung
• Durch die vielfallt an Geräten muss für unterschiedliche
Betriebssysteme entwickelt werden
• iOS
• Android
• Universal Windows Platform Apps (Windows 10)
• Für Jede Plattform wird anders entwickelt
• iOS: Objective C oder Swift und Xcode
• Android: Java und Android Studio
• UWP: C# / VB.NET oder C++ mit XAML (oder JavaScript + HTML)
Lösungsansätze
Native Entwicklung
Mehrfaches entwickeln
der Apps
• Mehrere Teams
• Mehrere Codezweige
• Unterschiedliche
Werkzeuge
• Swift
• XCode
"• Java
• Android
Studio
Hybrid mit HTML und JavaScript
• Entwicklung mit HTML / JavaScript
• Geteilter Code über mehrere Plattformen
• Darstellung der App in einem rahmenlosen
Browser
• Zugriff auf native APIs über Plugins
Native Wrapper
Webview mit
Ihrer JavaScript /
HTML App
Nativ mit Xamarin
• C# + .NET Framework
• Geteilter Code über mehrere
Plattformen
• Natives UI
• Native Performance
• 100 % der nativen APIs im Zugriff
Geteilte Datenzugriffsschicht (C#)
Geteilte Geschäftslogik (C#)
iOSApp(C#)
UIund
plattformspezifisc
herCode
AndroidApp(C#)
UIundplattform-
spezifischerCode
UWPApp(C#)
UIund
plattformspezifisc
herCode
 " #
Nativ mit Xamarin.Forms
• 40+ Pages und Controls
• XAML oder per Code
• Zwei-Wege-Datenbindung
• Navigation
• Dependency Service
Geteilte Datenzugriffsschicht (C#)
Geteilte Geschäftslogik (C#)
Geteilte UI Schicht (C# / XAML)
 " #
Die Xamarin Plattform
Was ist die Xamarin Platform
• Ursprünglich ein kommerzielles Produkt der Firma Xamarin
• Im Februar 2016 wurde Xamarin von Microsoft gekauft (Abschluss
der Übernahme war Mitte März 2016)
• Seit Visual Studio Update 2015 Update 2 ist Xamarin Bestandteil
aller Visual Studio Versionen (31. März 2016)
• Erlaubt die Entwicklung für Android und iOS mit C# auf der Basis
von Mono
Xamarin Android APIs
Bild:©Xamarin
Alles was mit Objective-C, Swift, oder Java
gemacht werden kann, kann mit Xamarin auch unter
C# in Visual Studio gemacht werden
Architektur von Xamarin.Android
.NET APIs
Android
Binding
Android.* Java.*
Linux Kernel
Mono ART
MCW
ACW
Android Linking
Bild © Xamarin
Debug Build
Release Build
Entwicklungswerkzeuge
Visual Studio for Mac Visual Studio Plugin
VS 2010 und höher
Entwicklungswerkzeuge
Visual Studio 2017
Visual Studio Integration
In einer Solution:
• iOS
• Android
• Windows Phone
• Windows Store
• Universal Windows
PlatformApps (UWP)
Gewohnte Werkzeuge:
• ReSharper
• Team Foundation Server
• ..
Visual Studio Integration
Debugging unter:
• Emulatoren
• Geräten
Integriert in die Toolbar
• Status
• Logs
• Liste von verfügbaren
Geräten
Visual Studio for Mac
• Entwicklungsumgebung für Mac
• Weiterentwicklung von Xamarin Studio
• Intellisense
• Debugger
• Designer
• NuGet Paketmanager
• Ersetzt Xamarin Studio!
Android
Android
Allgemeiner Überblick
Android
• Open Source
• Basisert auf Linux Kernel
• 2007 angekündigt
• Ende 2008 die ersten Geräte
• Smartphones, Tablets, Wearables, etc..
Versionen
• 15 Hauptversionen
• Namen von Süßigkeiten (KitKat, Lollipop, Marshmallow,
Nougtat, Oreo, ...)
• Diverse Hersteller (Sony, Acer, HTC, Samsung, ...)
• Jeder Hersteller ist selbst für die Bereitstellung von Updates
verantwortlich
Android Versionen (Stand Juni 2018)
https://developer.android.com/about/dashboards/index.html
0,30%
0,40%
4,30%
10,30%
4,80%
17,60%
25,50%
22,90%
8,20%
4,90%
0,80%
Anteil
2.3 Ging erbread (APILe vel 10): 0,30 %
4.0 .x Ice Crea m Sandwich(API Lev el1 5): 0,40 %
4.1 - 4.3 Jelly Be an(API Lev el1 6 -1 8): 4,30 %
4.4 KitKat (APILe ve l19 ):1 0,30 %
5.0 Lollipop(API Leve l2 1):4 ,80 %
5.1 Lollipop(API Leve l2 2):1 7,6 0 %
6.0 Marshmallow (APIL eve l23 ):2 5,50 %
7.0 Noug at (APILe vel 24): 22 ,9 0 %
7.1 Noug at (APILe vel 25): 8,20 %
8.0 Ore o(APILe ve l26 ):4,9 0 %
8.1 Ore o(APILe ve l27 ):0,8 0 %
API Level
• Zu jeder Android Version gibt es einen eindeutigen Integerbezeichner è Das API
Level
• Das API Level identifiziert somit die Versionen der verfügbaren Bibliotheken eindeutig
• Das API Level bestimmt auch die Verfügbaren Intents und Permissions
• Zu jeder App können drei API Level konfiguriert werden
• Target Framework à Gegen diese Version wird die App von Xamarin kompiliert
• Minimum Android Version à die niedrigste Version, die von der App unterstütz wird (diese
Information wird zur Laufzeit benötigt)
• Target Android Version à Zielversion der App
André Krämer
Android SDK Manager
X
Der Android SDK Manager
• SDK Tools (Benötigt)
• SDK Manager, AVD Manager, Emulator
• SDK Platform-tools (Benötigt)
• Android Debugging Bridge (adb)
• SDK Platform (Mindestens eine benötigt)
• Alle konfigurierten Versionen müssen installiert sein (Minimum)
• System Image (Empfohlen)
• Images für den Android Emulator
• Android Support Library (Empfohlen)
• Bibliothek, die z. B. Fragments in älteren Android Versionen (bis 1.6)
nachrüstet
• Google Play Services (Empfohlen)
• Client Bibliotheken für Maps, etc.
Demo
Android Hello World mit Visual Studio und Xamarin
Projektüberblick
• Assets
• Mitgelieferte Dateien (Text, Videos, Audio, ...)
• Resources
• Drawable (Bilder)
• Layout (Bildschirmmasken)
• Values (Strings und Styles)
• MainActivity.cs
• Quellcode der ersten Bildschirmmaske
Android Debugging auf dem Emulator
• Google Emulatoren waren früher sehr langsam
• Dank Intel HAXM ist dies heute gelöst
• Falls Hyper-V aktiviert ist: Visual Studio 2017.8 (Preview) und Windows 10 April 2018
Update nutzen (Link zum Blog Post)
• Falls VirtualBox installiert ist: Genymotion
Android Debugging mit einem echten Gerät
• Developer Mode aktivieren
• Einstellungen
à Über das Telefon
à Build-Nummer mehrfach
an-“tappen“
• USB Debugging aktivieren
• Unter Windows: Treiber
des Herstellers installieren!
Android
Konzepte
Activities
• Activities repräsentieren einen Bildschirm
• Es handelt sich dabei um C# Code Dateien
• Jeder Schirm hat eine Activity
• Eine Activity (typischerweise die MainActivity) ist der Einsprungspunkt in
die App (der MainLauncher)
Activity Lifecycle
Quelle: http://developer.android.com/guide/components/activities.html
Activity Lifecycle
• OnCreate
• Erste Methode die Aufgerufen wird. Hier werden Views erstellt und initialisiert
• OnStart
• Folgt auf OnCreate und wird zum aktualisieren von Daten benutzt
• OnResume
• Wird immer aufgerufen wenn die Aktivität sichtbar wird. Der Nutzer kann nun mit der
Activity interagieren. Macht alles „Rückgängig“ was in OnPause gemacht wurde
• OnPause
• Wenn die Activity in den Hintergrund geht. Hier werden Zustandsdaten gespeichert
• OnStop
• Wenn die aktuelle Activity nicht mehr sichtbar ist
• OnRestart
• OnDestroy
Demo
Das habe ich mir gespart
Demo
Activities und Views
Lokale Datenhaltung mit SQLite und EF Core
• SQLite ist eine leichtgewichtige, dateibasierte Datenbank
• Android nutzt intern selbst SQLite zur Datenhaltung
• Die entsprechenden Treiber sind im Betriebssystem bereits enthalten
• Das Entity Framework Core ermöglicht einen leichten Zugriff auf SQLite
Datenbanken
Lokale Datenhaltung mit SQLite und
EFCore
public class SavedItemContext : DbContext
{
private readonly string _path;
public SavedItemContext(string path)
{
_path = Path.Combine(path, "saveditems.db");
}
public DbSet<SavedItem> SavedItems { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder
optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlite($"Filename={_path}");
}
}
Demo
Datenzugriff
ListViews und Adapter
• ListViews zeigen eine Liste / Collection von Daten in einer Listenform an.
• Das Layout der einzelnen Zeilen kann beliebig komplex werden
• Als Datenquelle von ListViews dienen Adapter
• Es gibt folgende Standardadapter:
• ArrayAdapter
• SimpleAdapter
• BaseAdapter
• CursorAdapter
Beispiel: Array Adapter
var persons = new[] {“Wilhelm Brause“, “Hans Dampf“};
var listView =
FindViewById<ListView>(Resource.Id.myListView);
var adapter = new ArrayAdapter(this,
Android.Resource.Layout.SimpleListItem1, persons);
listView.Adapter = adapter;
Demo
Listen und Adapter
Android Intents
• Intents sind “Nachrichtenobjekte“
• Sie werden genutzt um Acitivities oder Services zu starten
• Zwei Typen können unterschieden werden
• Explizite Intents (Starten durch den Klassennamen, meist Activities in der eigenen App)
• Implizite Intents (Starten von Aktionen in anderen Apps)
• Über den IntentChooser kann eine passende Aktivität interaktiv vom Benutzer
ausgesucht werden wenn mehr als eine Aktivität für einen Intent registriert sind.
• Der IntentChooser verhindert auch einen Absturz falls nichts für den Intent
registriert ist
Beispiel: Impliziter Intent „Anruf“ via Intent
Chooser
var uri = Uri.Parse("tel:+49 (0) 1234/56789-0");
var intent = new Intent(Intent.ActionDial, uri);
var chooser = Intent.CreateChooser(intent,
"Womit soll gewählt werden?");
StartActivity(chooser);
Beispiel: Android / 03_AndroidActivityIntentDemo
Beispiel: Impliziter Intent „Browser
Navigation“ via Intent Chooser
var uri = Uri.Parse("http://www.andrekraemer.de");
var intent = new Intent(Intent.ActionView, uri);
var chooser = Intent.CreateChooser(intent,
“Welchen Browser möchten Sie nutzen?");
StartActivity(chooser);
Beispiel: Android / 03_AndroidActivityIntentDemo
Beispiel: Impliziter Intent „Karten“ via Intent
Chooser
var uri = Uri.Parse("geo:51.421458,7.008155");
var intent = new Intent(Intent.ActionView, uri);
var chooser = Intent.CreateChooser(intent,
"Welche Karten-App soll genutzt
werden?");
StartActivity(chooser);
Beispiel: Android / 03_AndroidActivityIntentDemo
Beispiel: Expliziter Intent zur Navigation zu einer internen
Activity
var intent = new Intent(this, typeof (DetailsActivity));
intent.PutExtra("count", 1);
intent.PutExtra("hallo", "welt");
StartActivity(intent);
// In der Zielactivity ...
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
var hallo = Intent.GetStringExtra("hallo");
var count = Intent.GetIntExtra("count", -1);
Beispiel: Android / 03_AndroidActivityIntentDemo
Demo
Intents
Homepage
andre@ andrekraem er.de | http://andrekraem er.de | http://andrekraem er.de/blog | http://github.com /AndreKraem er
Vielen Dank!
Blog
Xing
Facebook
Twitter
Google+
Meine Dienstleistungen
• Schulungen
• ASP.NET / JavaScript / Angular
• Xamarin
• Unit Testing und Refactoring
• TX Text Control
• Team Foundation Server
• .NET Datenzugriff (Entity Framework, NHibernate, Micro O/R Mapper)
• Consulting
• Durchführung von Technologieworkshops
• Code- / Architekturreviews
• Analyse von managed Memory Leaks und Performanceproblemen
• Prototypenentwicklung
• Remote Entwickler-Support
• Projektbegleitendes Coaching
• Beratung bei der Migration von Legacy Technologien (Classic ASP, Visual Basic 6, Gupta Centura, ...) zu .NET
• Softwareentwicklung
• Mobile Apps (Android, iOS, Windows 10)
• Entwicklung von Web-Anwendungen mit ASP.NET und Angular
• Entwicklung von Desktop Anwendungen
• Migration von ASP Classic zu modernen Weblösungen
andre@ andrekraem er.de | https://andrekraem er.de | http://andrekraem er.de/blog | http://github.com /AndreKraem er

Weitere ähnliche Inhalte

Was ist angesagt?

Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011
Dominik Helleberg
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
simmerl121
 

Was ist angesagt? (9)

Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-AppsAber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
Aber schnell! Top HTML5 Performance Tipps für Hybrid- und Web-Apps
 
Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011Android Ice Cream Sandwich WJAX 2011
Android Ice Cream Sandwich WJAX 2011
 
Spiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDKSpiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDK
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Applikationsentwicklung für Android
Applikationsentwicklung für AndroidApplikationsentwicklung für Android
Applikationsentwicklung für Android
 
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
Intel XDK: Cross-Plattform Entwicklung – Apps Entwickeln für alle Plattformen...
 
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
Simon Meggle - Open Source End2End Monitoring with Sakuli and Nagios
 
Einführung in die Android Applikationsentwicklung
Einführung in die Android ApplikationsentwicklungEinführung in die Android Applikationsentwicklung
Einführung in die Android Applikationsentwicklung
 
AngularJS
AngularJSAngularJS
AngularJS
 

Ähnlich wie Android Apps mit Xamarin entwickeln

Devopenspace 2013 slides
Devopenspace 2013 slidesDevopenspace 2013 slides
Devopenspace 2013 slides
Timur Zanagar
 
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft AG
 

Ähnlich wie Android Apps mit Xamarin entwickeln (20)

Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018Einstieg in Xamarin und Xamarin.Forms, DDC 2018
Einstieg in Xamarin und Xamarin.Forms, DDC 2018
 
Devopenspace 2013 slides
Devopenspace 2013 slidesDevopenspace 2013 slides
Devopenspace 2013 slides
 
Erstellung von mobilen cross-platform-Apps
Erstellung von mobilen cross-platform-AppsErstellung von mobilen cross-platform-Apps
Erstellung von mobilen cross-platform-Apps
 
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus Entwicklersicht
 
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die ZukunftSharePointCommunity.ch SharePoint Lösungen für die Zukunft
SharePointCommunity.ch SharePoint Lösungen für die Zukunft
 
Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013Testing XAML-based Windows Store Apps mit VS 2013
Testing XAML-based Windows Store Apps mit VS 2013
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-ToolsSoftware-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
Software-Engineering in der Luft- und Raumfahrt mit Open-Source-Tools
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
German: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit JavascriptGerman: Softwareprodukte aus einem Source Code mit Javascript
German: Softwareprodukte aus einem Source Code mit Javascript
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
Einführung in die Mobile Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile Produktentwicklung: Konzeption, Design, Entwicklung,...Einführung in die Mobile Produktentwicklung: Konzeption, Design, Entwicklung,...
Einführung in die Mobile Produktentwicklung: Konzeption, Design, Entwicklung,...
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
 
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven EinsatzNode.js - Von der Entwicklugn bis zum produktiven Einsatz
Node.js - Von der Entwicklugn bis zum produktiven Einsatz
 
Codewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximierenCodewiederverwendung in Xamarin-Apps maximieren
Codewiederverwendung in Xamarin-Apps maximieren
 
Niemals nach Mitternacht füttern - Grüne Roboter überall!
Niemals nach Mitternacht füttern - Grüne Roboter überall!Niemals nach Mitternacht füttern - Grüne Roboter überall!
Niemals nach Mitternacht füttern - Grüne Roboter überall!
 

Mehr von André Krämer

Mehr von André Krämer (13)

Xamarin.Forms App in einer Stunde
Xamarin.Forms App in einer StundeXamarin.Forms App in einer Stunde
Xamarin.Forms App in einer Stunde
 
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
 
Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018Xamarin.Forms Workshop, DDC 2018
Xamarin.Forms Workshop, DDC 2018
 
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...Xamarin ohne Mac und Android SDK?- So weit kommen Sie mit dem Xamarin Live P...
Xamarin ohne Mac und Android SDK? - So weit kommen Sie mit dem Xamarin Live P...
 
Typische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API AnwendungenTypische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
Typische Sicherheitslücken in ASP.NET MVC und Web API Anwendungen
 
Lokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-AppsLokale Datenhaltung in Xamarin-Apps
Lokale Datenhaltung in Xamarin-Apps
 
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
HTML5-Performance: So rennt Ihre App und nicht Ihre Anwender (weg)
 
Entity Framework hinter den Kulissen
Entity Framework hinter den KulissenEntity Framework hinter den Kulissen
Entity Framework hinter den Kulissen
 
Performance trotz Entity Framwork
Performance trotz Entity FramworkPerformance trotz Entity Framwork
Performance trotz Entity Framwork
 
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
Cross Plattform App Entwicklung mit Visual Studio 2015 (Xamarin und Cordova)
 
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern .NET Datenzugriff einfach und performant mit Micro O/R Mappern
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
 
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
Das Repository-Pattern und der O/R-Mapper: Geniale Kombination oder vergebene...
 
Zentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDKZentrale Dokumentengenerierung mit dem Open XML SDK
Zentrale Dokumentengenerierung mit dem Open XML SDK
 

Android Apps mit Xamarin entwickeln

  • 1. Android Apps mit Xamarin entwickeln André Krämer Softwareentwickler, Trainer, Berater, Microsoft MVP https://andrekraemer.de | andre@andrekraemer.de | @codemurai
  • 3. Der Xamarin Track Uhzeit Vortrag Sprecher 10:30 – 11:30 Android Apps mit Xamarin entwickeln André Krämer 11:45 – 12:45 Advanced Xamarin.Forms Xamarin.Forms und PRISM Gill Cleeren Siavash Ghassemi 14:15 - 15:15 Mobile app development with Xamarin and MVVMCross Martijn van Dijk 15:30 – 16:30 .NET Code Sharing Kerry. W. Lothrop 17:00 – 18:00 Best Practices und Performance-Tipps, um Ihre Xamarin-App zu verbessern Sebastian Seidel 18:15 – 19:15 Xamarin apps and the outside world Xamarin.Forms Apps mit CQRS und EventSourcing Gill Cleeren Siavash Ghassemi 3
  • 5. Geschäftsanwendungen, wie wir sie kennen … Screenshot des Open Source Tools Bulk Rename Utility. Screenshot erstellt von André Krämer
  • 9. Typische Business-Apps • Zeiterfassung • Reisekosten • Customer-Relationship-Management (CRM) • Urlaubsantrag • Mängeldokumentation • Vertriebslösungen (z. B. für Vertreter, etc.) • Frontend für bestehende ERP Lösungen (SAP, ...) • Frontend für SharePoint • ... 9
  • 10. Bis Ende 2017 wird der Bedarf an Enterprise Mobile Apps die verfügbaren Entwicklungskapazitäten um den Faktor fünf übersteigen Quelle:Gartner|http://www.gartner.com/newsroom/id/3076817
  • 11. In 2017 haben ¼ der Unternehmen weltweit keine mobile Apps gebaut. Quelle:Gartner|http://www.gartner.com/newsroom/id/3076817 Der Hauptgrund ist Ressourcenmangel
  • 12. Smartphone Marktanteile Q1/2017 (Quelle: IDC) Android; 85,00% iOS; 14,70% Windows Phone; 0,10% Rest; 0,10% Android iOS Windows Phone Rest Quelle: http://www.idc.com/promo/smartphone-market-share/os (Abgerufen: Juni 2018)
  • 13. Verteilung der Tablet Betriebssysteme im geschäftlichen Umfeld (Quelle: Good Technology) iOS; 64% Android; 25% Windows; 11% iOS An dr oid Windo ws Quelle: https://media.good.com/documents/mobility-index-report-q2-2015.pdf
  • 14. Herausforderung • Durch die vielfallt an Geräten muss für unterschiedliche Betriebssysteme entwickelt werden • iOS • Android • Universal Windows Platform Apps (Windows 10) • Für Jede Plattform wird anders entwickelt • iOS: Objective C oder Swift und Xcode • Android: Java und Android Studio • UWP: C# / VB.NET oder C++ mit XAML (oder JavaScript + HTML)
  • 16. Native Entwicklung Mehrfaches entwickeln der Apps • Mehrere Teams • Mehrere Codezweige • Unterschiedliche Werkzeuge • Swift • XCode "• Java • Android Studio
  • 17. Hybrid mit HTML und JavaScript • Entwicklung mit HTML / JavaScript • Geteilter Code über mehrere Plattformen • Darstellung der App in einem rahmenlosen Browser • Zugriff auf native APIs über Plugins Native Wrapper Webview mit Ihrer JavaScript / HTML App
  • 18. Nativ mit Xamarin • C# + .NET Framework • Geteilter Code über mehrere Plattformen • Natives UI • Native Performance • 100 % der nativen APIs im Zugriff Geteilte Datenzugriffsschicht (C#) Geteilte Geschäftslogik (C#) iOSApp(C#) UIund plattformspezifisc herCode AndroidApp(C#) UIundplattform- spezifischerCode UWPApp(C#) UIund plattformspezifisc herCode  " #
  • 19. Nativ mit Xamarin.Forms • 40+ Pages und Controls • XAML oder per Code • Zwei-Wege-Datenbindung • Navigation • Dependency Service Geteilte Datenzugriffsschicht (C#) Geteilte Geschäftslogik (C#) Geteilte UI Schicht (C# / XAML)  " #
  • 21. Was ist die Xamarin Platform • Ursprünglich ein kommerzielles Produkt der Firma Xamarin • Im Februar 2016 wurde Xamarin von Microsoft gekauft (Abschluss der Übernahme war Mitte März 2016) • Seit Visual Studio Update 2015 Update 2 ist Xamarin Bestandteil aller Visual Studio Versionen (31. März 2016) • Erlaubt die Entwicklung für Android und iOS mit C# auf der Basis von Mono
  • 23. Alles was mit Objective-C, Swift, oder Java gemacht werden kann, kann mit Xamarin auch unter C# in Visual Studio gemacht werden
  • 24. Architektur von Xamarin.Android .NET APIs Android Binding Android.* Java.* Linux Kernel Mono ART MCW ACW
  • 25. Android Linking Bild © Xamarin Debug Build Release Build
  • 27. Visual Studio for Mac Visual Studio Plugin VS 2010 und höher Entwicklungswerkzeuge
  • 29. Visual Studio Integration In einer Solution: • iOS • Android • Windows Phone • Windows Store • Universal Windows PlatformApps (UWP) Gewohnte Werkzeuge: • ReSharper • Team Foundation Server • ..
  • 30. Visual Studio Integration Debugging unter: • Emulatoren • Geräten Integriert in die Toolbar • Status • Logs • Liste von verfügbaren Geräten
  • 31. Visual Studio for Mac • Entwicklungsumgebung für Mac • Weiterentwicklung von Xamarin Studio • Intellisense • Debugger • Designer • NuGet Paketmanager • Ersetzt Xamarin Studio!
  • 34. Android • Open Source • Basisert auf Linux Kernel • 2007 angekündigt • Ende 2008 die ersten Geräte • Smartphones, Tablets, Wearables, etc..
  • 35. Versionen • 15 Hauptversionen • Namen von Süßigkeiten (KitKat, Lollipop, Marshmallow, Nougtat, Oreo, ...) • Diverse Hersteller (Sony, Acer, HTC, Samsung, ...) • Jeder Hersteller ist selbst für die Bereitstellung von Updates verantwortlich
  • 36. Android Versionen (Stand Juni 2018) https://developer.android.com/about/dashboards/index.html 0,30% 0,40% 4,30% 10,30% 4,80% 17,60% 25,50% 22,90% 8,20% 4,90% 0,80% Anteil 2.3 Ging erbread (APILe vel 10): 0,30 % 4.0 .x Ice Crea m Sandwich(API Lev el1 5): 0,40 % 4.1 - 4.3 Jelly Be an(API Lev el1 6 -1 8): 4,30 % 4.4 KitKat (APILe ve l19 ):1 0,30 % 5.0 Lollipop(API Leve l2 1):4 ,80 % 5.1 Lollipop(API Leve l2 2):1 7,6 0 % 6.0 Marshmallow (APIL eve l23 ):2 5,50 % 7.0 Noug at (APILe vel 24): 22 ,9 0 % 7.1 Noug at (APILe vel 25): 8,20 % 8.0 Ore o(APILe ve l26 ):4,9 0 % 8.1 Ore o(APILe ve l27 ):0,8 0 %
  • 37. API Level • Zu jeder Android Version gibt es einen eindeutigen Integerbezeichner è Das API Level • Das API Level identifiziert somit die Versionen der verfügbaren Bibliotheken eindeutig • Das API Level bestimmt auch die Verfügbaren Intents und Permissions • Zu jeder App können drei API Level konfiguriert werden • Target Framework à Gegen diese Version wird die App von Xamarin kompiliert • Minimum Android Version à die niedrigste Version, die von der App unterstütz wird (diese Information wird zur Laufzeit benötigt) • Target Android Version à Zielversion der App
  • 39. Der Android SDK Manager • SDK Tools (Benötigt) • SDK Manager, AVD Manager, Emulator • SDK Platform-tools (Benötigt) • Android Debugging Bridge (adb) • SDK Platform (Mindestens eine benötigt) • Alle konfigurierten Versionen müssen installiert sein (Minimum) • System Image (Empfohlen) • Images für den Android Emulator • Android Support Library (Empfohlen) • Bibliothek, die z. B. Fragments in älteren Android Versionen (bis 1.6) nachrüstet • Google Play Services (Empfohlen) • Client Bibliotheken für Maps, etc.
  • 40. Demo Android Hello World mit Visual Studio und Xamarin
  • 41.
  • 42. Projektüberblick • Assets • Mitgelieferte Dateien (Text, Videos, Audio, ...) • Resources • Drawable (Bilder) • Layout (Bildschirmmasken) • Values (Strings und Styles) • MainActivity.cs • Quellcode der ersten Bildschirmmaske
  • 43. Android Debugging auf dem Emulator • Google Emulatoren waren früher sehr langsam • Dank Intel HAXM ist dies heute gelöst • Falls Hyper-V aktiviert ist: Visual Studio 2017.8 (Preview) und Windows 10 April 2018 Update nutzen (Link zum Blog Post) • Falls VirtualBox installiert ist: Genymotion
  • 44. Android Debugging mit einem echten Gerät • Developer Mode aktivieren • Einstellungen à Über das Telefon à Build-Nummer mehrfach an-“tappen“ • USB Debugging aktivieren • Unter Windows: Treiber des Herstellers installieren!
  • 46. Activities • Activities repräsentieren einen Bildschirm • Es handelt sich dabei um C# Code Dateien • Jeder Schirm hat eine Activity • Eine Activity (typischerweise die MainActivity) ist der Einsprungspunkt in die App (der MainLauncher)
  • 48. Activity Lifecycle • OnCreate • Erste Methode die Aufgerufen wird. Hier werden Views erstellt und initialisiert • OnStart • Folgt auf OnCreate und wird zum aktualisieren von Daten benutzt • OnResume • Wird immer aufgerufen wenn die Aktivität sichtbar wird. Der Nutzer kann nun mit der Activity interagieren. Macht alles „Rückgängig“ was in OnPause gemacht wurde • OnPause • Wenn die Activity in den Hintergrund geht. Hier werden Zustandsdaten gespeichert • OnStop • Wenn die aktuelle Activity nicht mehr sichtbar ist • OnRestart • OnDestroy
  • 49. Demo Das habe ich mir gespart
  • 51. Lokale Datenhaltung mit SQLite und EF Core • SQLite ist eine leichtgewichtige, dateibasierte Datenbank • Android nutzt intern selbst SQLite zur Datenhaltung • Die entsprechenden Treiber sind im Betriebssystem bereits enthalten • Das Entity Framework Core ermöglicht einen leichten Zugriff auf SQLite Datenbanken
  • 52. Lokale Datenhaltung mit SQLite und EFCore public class SavedItemContext : DbContext { private readonly string _path; public SavedItemContext(string path) { _path = Path.Combine(path, "saveditems.db"); } public DbSet<SavedItem> SavedItems { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseSqlite($"Filename={_path}"); } }
  • 54. ListViews und Adapter • ListViews zeigen eine Liste / Collection von Daten in einer Listenform an. • Das Layout der einzelnen Zeilen kann beliebig komplex werden • Als Datenquelle von ListViews dienen Adapter • Es gibt folgende Standardadapter: • ArrayAdapter • SimpleAdapter • BaseAdapter • CursorAdapter
  • 55. Beispiel: Array Adapter var persons = new[] {“Wilhelm Brause“, “Hans Dampf“}; var listView = FindViewById<ListView>(Resource.Id.myListView); var adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, persons); listView.Adapter = adapter;
  • 57. Android Intents • Intents sind “Nachrichtenobjekte“ • Sie werden genutzt um Acitivities oder Services zu starten • Zwei Typen können unterschieden werden • Explizite Intents (Starten durch den Klassennamen, meist Activities in der eigenen App) • Implizite Intents (Starten von Aktionen in anderen Apps) • Über den IntentChooser kann eine passende Aktivität interaktiv vom Benutzer ausgesucht werden wenn mehr als eine Aktivität für einen Intent registriert sind. • Der IntentChooser verhindert auch einen Absturz falls nichts für den Intent registriert ist
  • 58. Beispiel: Impliziter Intent „Anruf“ via Intent Chooser var uri = Uri.Parse("tel:+49 (0) 1234/56789-0"); var intent = new Intent(Intent.ActionDial, uri); var chooser = Intent.CreateChooser(intent, "Womit soll gewählt werden?"); StartActivity(chooser); Beispiel: Android / 03_AndroidActivityIntentDemo
  • 59. Beispiel: Impliziter Intent „Browser Navigation“ via Intent Chooser var uri = Uri.Parse("http://www.andrekraemer.de"); var intent = new Intent(Intent.ActionView, uri); var chooser = Intent.CreateChooser(intent, “Welchen Browser möchten Sie nutzen?"); StartActivity(chooser); Beispiel: Android / 03_AndroidActivityIntentDemo
  • 60. Beispiel: Impliziter Intent „Karten“ via Intent Chooser var uri = Uri.Parse("geo:51.421458,7.008155"); var intent = new Intent(Intent.ActionView, uri); var chooser = Intent.CreateChooser(intent, "Welche Karten-App soll genutzt werden?"); StartActivity(chooser); Beispiel: Android / 03_AndroidActivityIntentDemo
  • 61. Beispiel: Expliziter Intent zur Navigation zu einer internen Activity var intent = new Intent(this, typeof (DetailsActivity)); intent.PutExtra("count", 1); intent.PutExtra("hallo", "welt"); StartActivity(intent); // In der Zielactivity ... protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); var hallo = Intent.GetStringExtra("hallo"); var count = Intent.GetIntExtra("count", -1); Beispiel: Android / 03_AndroidActivityIntentDemo
  • 63. Homepage andre@ andrekraem er.de | http://andrekraem er.de | http://andrekraem er.de/blog | http://github.com /AndreKraem er Vielen Dank! Blog Xing Facebook Twitter Google+
  • 64. Meine Dienstleistungen • Schulungen • ASP.NET / JavaScript / Angular • Xamarin • Unit Testing und Refactoring • TX Text Control • Team Foundation Server • .NET Datenzugriff (Entity Framework, NHibernate, Micro O/R Mapper) • Consulting • Durchführung von Technologieworkshops • Code- / Architekturreviews • Analyse von managed Memory Leaks und Performanceproblemen • Prototypenentwicklung • Remote Entwickler-Support • Projektbegleitendes Coaching • Beratung bei der Migration von Legacy Technologien (Classic ASP, Visual Basic 6, Gupta Centura, ...) zu .NET • Softwareentwicklung • Mobile Apps (Android, iOS, Windows 10) • Entwicklung von Web-Anwendungen mit ASP.NET und Angular • Entwicklung von Desktop Anwendungen • Migration von ASP Classic zu modernen Weblösungen andre@ andrekraem er.de | https://andrekraem er.de | http://andrekraem er.de/blog | http://github.com /AndreKraem er