Xamarin Components sind kleine Module mit deren Hilfe man seine App sehr einfach um Funktionen wie Barcode-Scannen oder Cloud-Service-Anbindung erweitern kann. Eine Übersicht über bereits existierende Module oder Komponenten gibt es unter components.xamarin.com.
Anhand meiner eigenen Xamarin.Android ShowcaseView Komponente möchte ich zeigen wie man eine Komponente erstellt und worauf man achten sollte damit die Freischaltung schnell erfolgen kann. Wer gar nicht weiß wie man seine App um solche kleinen Helferlein erweitern kann liest am Besten hier weiter.
Xamarin stellt unter https://github.com/xamarin/component-template ein Template mit der grundsätzlichen Struktur für eine Komponente bereit. Der erste Schritt sollte nun darin bestehen alle benötigten Informationen zu sammeln.
Im bin-Verzeichnis werden alle Assemblies abgelegt, die für die Komponente notwendig sind. Neben der eigentlichen ShowcaseView.dll ist das auch die Xamarin.Android.Support.v4.dll, da diese innerhalb der ShowcaseView.dll referenziert ist. Hat ein Entwickler diese Assembly nicht zur Verfügung bekommt er sie auf diese Weise bereit gestellt. Die ShowcaseView.xml soll den Entwickler durch IntelliSense-Unterstützung den Einstieg erleichtern. Unbedingt notwendig wäre sie nicht.
Die Xamarin.Android.Support.v4 Referenz hätte auch durch die von Xamarin bereitgestellte Komponente ersetzt werden können. Auf diese Weise wird sie beim Anwender automatisch heruntergeladen, wenn sie nicht bereits vorhanden ist. Zum Einreichungszeitpunkt von ShowcaseView war das noch nicht klar.
Jede Komponente kommt mit mindestens einer Beispiel-Applikation je unterstützter Plattform, um Entwickler den Einstieg im Umgang mit der Komponente zu erleichtern. In der Regel testet man, seine eigene Komponenten, ohnehin mit einer Demo-App. Die kopiert man nun einfach in das samples-Verzeichnis und passt die Referenzen zur Komponente an.
Beide Dateien sind wichtig, weil ihr Inhalt auf der Website zur Komponente angezeigt wird. Den idealen Aufbau habe ich für mich noch nicht gefunden.
Grundsätzlich jedoch sollte in der Details.md beschrieben werden was die Komponente tut. Anders als der Name vielleicht vermuten lässt ist sie das "Deckblatt" im Xamarin Component Store.
In der GettingStarted.md gibt man Hilfestellung und weiterführende Informationen im Umgang mit der Komponente.
Die Rakefile Datei ist der Punkt an dem alle Informationen der Komponente zusammenlaufen. Mit einem Texteditor kann man die Datei öffnen und die Informationen entsprechend anpassen.
Hinweisen möchte ich an dieser Stelle lediglich auf --library="PLATTFORM"
, welches mehrfach verwendet werden kann. Das Template hat nur einen Eintrag für iOS und Android, was gerade bei der ersten eigenen Komponenten mit mehreren Dateien im bin-Verzeichnis für Verwirrung sorgen kann.
COMPONENT = "ShowcaseView-1.0.xam"
mono xamarin-component/xamarin-component.exe create-manually #{COMPONENT} \
--name="ShowcaseView for Xamarin.Android" \
--summary="Add an Android-like showcase view to your Xamarin.Android apps and help your user to getting started faster." \
--publisher="Cayas Software" \
--website="http://www.cayas.de" \
--details="Details.md" \
--license="License.md" \
--getting-started="GettingStarted.md" \
--icon="icons/ShowcaseView_128x128.png" \
--icon="icons/ShowcaseView_512x512.png" \
--library="android":"bin/ShowcaseView.dll" \
--library="android":"bin/ShowcaseView.xml" \
--library="android":"bin/Xamarin.Android.Support.v4.dll" \
--sample="Android Sample. Demonstrates the use of ShowcaseView on Xamarin.Android":"samples/Sharp Showcase View.sln"
Wie das Rakefile für ShowcaseView zeigt, kann --library="PLATTFORM"
entsprechend oft verwendet werden.
Nach dem jetzt alle wichtigen Informationen zusammengetragen und entsprechend eingebunden wurden ist es an der Zeit alles zu einem Paket zu schnüren. Dazu wechselt man im Terminal unter OS X in das Verzeichnis und ruft anschließend rake
auf. Am Ende liegt im Verzeichnis eine xam-Datei, die im Grunde nichts anderes als ein umbenanntes zip-Archiv ist.
Es emfpiehlt sich das Archiv zu entpacken und daraus die Beispielanwendung zu öffnen. Wenn alles funktioniert, dann ist die Komponente bereit für den Upload zu Xamarin.
Damit die Komponente Interessenten zur Verfügung gestellt werden kann, muss diese unter https://components.xamarin.com/submit/ hochgeladen werden. Eine Einteilung um welche Art von Komponente es sich handelt ist vorzunehmen. Im Falle von ShowcaseView ist das die Kategorie "User Interface".
Es können noch weitere Angaben hinterlegt werden. Zum Beispiel kann man entscheiden, ob die Komponenten kostenpflichtig ist. In diesem Fall wird sich Xamarin bezüglich Kostenstruktur und Provision melden.
Sind alle Einstellungen vorgenommen wird Xamarin prüfen und gegebenenfalls Verbesserungsvorschläge machen. Wenn die folgenden Empfehlungen berücksichtigt werden, steht einer schnellen Freigabe jedoch nichts im Wege.
Für eine schnellere Freigabe der Komponente durch Xamarin empfehle ich folgendes im Vorfeld bereits zu berücksichtigen:
Gerade der letzte Punkt führt dazu, dass das Beispielprojekt unter Android auf einem echten Gerät oder dem Emulator sofort getestet werden kann.
Leider habe ich Punkt zwei und drei für ShowcaseView nicht berücksichtig. Für den Namen ist es nicht so schlimm. Aber für die Versionsnummer ist es im Update-Fall schon ärgerlich.
Weiterführende Informationen findet man auch in den Xamarin Component Guidelines.
Als Mobile-Enthusiast und Geschäftsführer der Cayas Software GmbH ist es mir ein großes Anliegen, mein Team und unsere Kunden zu unterstützen, neue potenziale zu entdecken und gemeinsam zu wachsen. Hier schreibe ich vor allem zur Entwicklung von Android und iOS-Apps mit Xamarin und .NET MAUI.
Like what you read? Come work with us.
Learn why your Xamarin Android build fails with "Error executing task Aapt: VersionCode is outside 0, 65535 interval" and how to workaround that issue.
I am currently working on porting a Xamarin Forms app to DOTNET MAUI. The app also uses maps from Apple or Google Maps to display locations. Even though there was no official support in MAUI until the release of .NET 7, I want to show you a way to display maps via custom handler.
Matt Goldman revived #XamarinUIJuly and renamed it to #MAUIUIJuly, where each day in July someone from the .NET MAUI community publishes a blog post or video showing some incredible UI magic in MAUI. In this contribution I will show you how to combine Lottie animations with gestures and scrollable containers to spice up your .NET MAUI App UI!