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.
Ich bin Mobile-Enthusiast mit großer Begeisterung für die Entwicklung von Cross-Plattform-Apps mit Xamarin, .NET MAUI und .NET. Mein Ziel sind glückliche Apps und zufriedene Anwender. Als Geschäftsführer der Cayas Software GmbH genieße ich die Freiheiten der neuen Plattform-Vielfalt und die sich daraus ergebenden Möglichkeiten.
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 is no official support in MAUI yet, I want to show you a way to display maps via custom handler.
During a current project we needed to evaluate possibilities to easily set up a Continuous Integration and Deployment system. For several reasons we normally would suggest an In-House solution with TeamCity, but the customer preferred a cloud solution to shorten the procurement and installation process. In this post I explain why and how we set up Bitrise.
An important feature in the mobile area are maps capabilities. There isn't any app in the market that won't improve their value without a map. Apple and Google doing a great job with there Map-SDKs, but sometimes you hit a spot where they won't suit your needs. Maybe for legal reasons or because you hit a bug inside of them. The later was my case, which is happily resoleved with iOS 10. But I needed an alternative that works offline too.