Entwicklung nativer Xamarin-Android-Anwendungen

Entwicklung nativer Xamarin-Android-Anwendungen

Xamarin hat sich schnell zu einer beliebten Methode zum Erstellen plattformübergreifender mobiler Anwendungen entwickelt, die eine echte Code-Wiederverwendung fördern und es Entwicklern ermöglichen, native* (nativ bedeutet hier natürlich für die Plattform) Benutzeroberflächen zu erstellen. Bereitstellung des Zugriffs auf das gesamte Funktionsspektrum der zugrunde liegenden Plattform/des zugrunde liegenden Geräts und Gewährleistung der nativen* Leistung, indem Anwendungen die Nutzung plattformspezifischer Hardwarebeschleunigung ermöglicht wird. Darüber hinaus lässt sich Xamarin vollständig in Visual Studio integrieren und ermöglicht die Entwicklung von iOS-, Android- und Windows-Anwendungen gleichermaßen.

Was bedeutet das also für unsere echten nativen (C/C++) Entwickler? Nun, wenn Sie sich den aktuellen Ansatz von Xamarin für die Android-Plattform ansehen, ermöglicht er die Nutzung nativer Android-Bibliotheken (C/C++) beim Erstellen von End-End-Xamarin-Android-Anwendungen.

Dieser Ansatz umfasst derzeit jedoch das Herumspielen mit den Xamarin-Android-Projektdateien in Visual Studio und das Hinzufügen der Item-Group, die auf die vorgefertigte dynamische gemeinsam genutzte Bibliothek verweist, die hier in den Xamarin-Android-Leitfäden erwähnt wird. Typischerweise wird diese native dynamische gemeinsam genutzte Bibliothek in einer anderen IDE (üblicherweise Eclipse) entwickelt, was weitere Komplexität hinzufügt, da sich Entwickler jetzt darum kümmern müssen, zwei IDEs zu verwenden und den Spaß zu absorbieren, der aus der zusätzlichen Komplexität entsteht, um ihre Anwendung speziell zu bearbeiten, zu erstellen und zu debuggen beim Arbeiten in der nativen (C/C++) Bibliotheksschicht.

Mit Visual Studio 2015 CTP 6 ist dies nicht mehr der Fall und Entwickler können jetzt sogar diese native (C/C++) Bibliothek in Visual Studio erstellen, wir (C++ Cross-Platform mobile Team) arbeiten mit Xamarin, um eine reibungslose Erfahrung bei der Entwicklung von nativen Xamarin-Android-Anwendungen zu bieten. Dieser Blog hebt einige der Möglichkeiten hervor, die mit Visual Studio 2015 CTP 6 zur Verfügung gestellt werden, und obwohl die ganze Arbeit noch nicht abgeschlossen ist, freuen wir uns, dass Sie es ausprobieren und uns Feedback geben.

Erste Schritte

Als Voraussetzung, um diesem Blog folgen zu können, müssen Entwickler Visual Studio 2015 CTP6 mit plattformübergreifenden mobilen Visual C++-Bits und optionalen Xamarin-Paketen installieren. Sobald diese Bits installiert sind, haben Sie alles, was Sie brauchen, um mit der Entwicklung von nativen Xamarin-Android-Anwendungen vollständig in Visual Studio zu beginnen. Beginnen wir mit dem Erstellen eines Xamarin-Android-Projekts. Für die Zwecke dieses Blogs wählen wir die einfachste Xamarin-Android-Vorlage „Blank App (Android)“ aus dem Menü „Datei“> „Neues Projekt“ und erstellen ein neues Projekt mit dem Namen „XamarinNativeExample“.

Neben der vorhandenen Lösung fügen wir ein dynamisches Shared-Library-Projekt aus dem „Visual C++ – Cross-Platform-Knoten“ hinzu und nennen es „NativeLibrary“.

Sobald wir fertig sind, sollte unsere Lösung zwei Projekte (ein Xamarin Android-Projekt und ein C++ Dynamic Shared Library-Projekt) im Lösungs-Explorer haben.

Referenzieren von nativen Android-Bibliotheken aus einem Xamarin-Android-Projekt

Wie in der Zusammenfassung dieses Blogs erwähnt, müssten Entwickler, die native Android-Binärdateien nutzen, diese traditionell in anderen IDEs erstellen und dann diese vorgefertigten nativen Android-Binärdateien in einem Xamarin-Android nutzen Projekt müssten sie mit dem Xamarin-Android-Projekt herumspielen. Mit der Arbeit, die wir geleistet haben, ist das Referenzieren der nativen Binärdatei so einfach wie das Hinzufügen einer Projektreferenz zwischen den Projekten „XamarinNativeExample“ und „NativeLibrary“. Der Vorgang wird in den folgenden Bildern veranschaulicht:

Sobald die Referenz hinzugefügt wurde, sollte im Abschnitt „Referenzen“ für das Projekt „XamarinNativeExample“ der Eintrag „NativeLibrary“ zu finden sein. Man würde bemerken, dass dieser Verweis derzeit nicht gelöst ist, dies ist ein bekanntes Problem, und obwohl der Verweis zur Entwurfszeit nicht aufgelöst wird, würde die erstellte Anwendungspaketdatei (.apk) die native Bibliothek enthalten.

Als Nächstes fügen wir etwas Code zu unserer nativen Bibliothek hinzu und rufen ihn aus unserem Xamarin-Android-Projekt auf. Fügen Sie in der Quelldatei „NativeLibrary.cpp“ innerhalb des Projekts „NativeLibrary“ die folgende Funktion hinzu. Diese Funktion wird jedes Mal aufgerufen, wenn auf die in unserem Xamarin-Android-Projekt definierte Schaltfläche geklickt wird.

int clickCount =1;
int getClickCount() {

return clickCount++;

}

Um diese Funktion aus dem Xamarin-Android-Projekt „XamarinNativeExample“ aufzurufen, fügen Sie den folgenden Code in die Datei „MainActivity.cs“ ein.

[DllImport(“libNativeLibrary.so“)]
public extern static int getClickCount();

Dieses Dllimport-Attribut lädt die native Android-Bibliothek zur Laufzeit der Anwendung. Für die Verwendung dieses Attributs wird auch der Namespace „using System.Runtime.InteropServices;“ in Ihrer Quelle benötigt. Als Nächstes ändern wir die vorhandene Quellzeile in der Funktion „OnCreate“. OnCreate-Methode ist die erste Methode, die aufgerufen wird, wenn die Aktivität erstellt wird. Diese Änderung in der OnCreate-Funktion ermöglicht es uns, die Funktion „getClickCount“ aus der nativen Bibliothek aufzurufen, wenn der Benutzer auf die Schaltfläche klickt.

button.Click +=delegieren { button.Text =string.Format(“{0} Klicks!“, getClickCount()); };

An diesem Punkt sind wir fast fertig, aber bevor wir fortfahren und unsere Lösung erstellen und unsere neue Xamarin Android Native Application testen, muss die aktive Lösungsplattform entsprechend eingerichtet werden (ARM oder x86, abhängig von der Wahl Ihres Debug-Ziels), wie in der Abbildung unten gezeigt.

Lassen Sie uns abschließend sicherstellen, dass wir unsere „NativeLibrary“ richtig benannt haben, indem wir die Eigenschaft „Target Name“ auf den Eigenschaftenseiten des NativeLibrary-Projekts anzeigen.

An diesem Punkt sind wir bereit, unsere Anwendung auf einem Android-Gerät oder Emulator zu erstellen/bereitzustellen. Falls Sie nach diesem Blog Probleme hatten, finden Sie die in diesem Blog vorgestellte Lösung hier.

Debuggen einer nativen Android-Bibliothek in eine Xamarin-Android-Anwendung

Zusätzlich zur einfachen Verwendung und Erstellung einer nativen Android-Bibliothek in einer Xamarin-Android-Anwendung. Die Visual Studio-Erfahrung ermöglicht es Entwicklern auch, ihren nativen Android-Bibliothekscode, der in der Xamarin-Android-Anwendung verwendet wird, einfach zu debuggen. Um dies zu demonstrieren, fahren Sie mit unserem Beispiel fort, rufen Sie die Eigenschaftenseiten für das Projekt „XamarinNativeExample“ auf und wählen Sie die Debugger-Option „Native“ im Menü „Android-Optionen“, wie in der Abbildung unten gezeigt.

Lassen Sie uns als Nächstes die Quelle „NativeLibrary.cpp“ aufrufen, einen Haltepunkt in unserer Funktion „getClickCount()“ setzen und mit dem Debuggen beginnen (F5). Sobald die Anwendung startet, sollte bei jedem Klick auf den von uns gesetzten Haltepunkt erreicht werden.

Während dies ein triviales Beispiel ist, funktionieren alle anderen Debug-Funktionen wie Ausdrucksauswertung, Überwachungsfenster und automatisches Fenster ebenfalls mit dieser Erfahrung.


Abschluss

Dieser Blog soll Ihnen einen Einblick in die Arbeit geben, die das Visual Studio-Team in Partnerschaft mit Xamarin geleistet hat, um eine reibungslose Erfahrung beim Erstellen von nativen Xamarin-Android-Anwendungen zu ermöglichen. Wir würden uns freuen, wenn Sie diese Erfahrung ausprobieren und Ihr Feedback geben. Zusätzlich Wenn Sie möchten, dass wir über ein bestimmtes Thema in unseren Blogs sprechen, teilen Sie uns dies bitte mit. Zur Erinnerung:Ziel dieser CTP-Version ist es, Feedback zu sammeln und von Ihnen zu lernen. Wir erwägen auch die zukünftige Unterstützung für andere Plattformen und Ihr Feedback ist entscheidend für die Gestaltung der Richtung unseres Produkts.

Das Teilen von Feedback ist einfach! Machen Sie Funktionsvorschläge für UserVoice, protokollieren Sie Fehler, die Sie auf unserer Connect-Site finden, und senden Sie uns ein Lächeln oder ein Stirnrunzeln aus der IDE heraus. Sie können auch unten Kommentare hinterlassen. Wenn Sie außerdem ein direktes Gespräch mit unserem Produktteam zu diesem Thema führen möchten, wenden Sie sich bitte per E-Mail an uns ([email protected]). Wir würden gerne mehr erfahren und mit Ihnen in Kontakt treten.

XamarinNativeExample.zip