Wie funktioniert Xamarin iOS und Android?
Ich versuche zu verstehen, wie Xamarin.iOS (MonoTouch) und Xamarin.Android (Mono for Android) arbeiten.
Ich schrieb eine kleine App, und schaute in die .app und .apk-Datei.
Innerhalb der .app-Datei (iOS) gibt es viele .dll-Dateien. Aber warum?
Auf jede Seite und post lese ich, dass Sie sagen: Die App ausgeführt wird, native und nichts interpretiert.
Kann jemand mir erklären, was die xamarin-Entwickler bedeuten, mit "native"?
Innerhalb der .apk-Datei wird nicht eine einzige .dll Datei..
Kommentar zu dem Problem
die dll in der iOS-bundle sind einfach die Metadaten für die Reflexion, nicht ausführbaren code. Siehe stackoverflow.com/questions/10741319/how-secure-is-monotouch
InformationsquelleAutor der Frage sTaX | 2013-06-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Xamarin definition von "native" beinhaltet, ist aber nicht beschränkt auf:
http://www.mono-project.com/AOT
(Beachten Sie, dass Xamarin.Android nutzt noch JIT, http://xamarin.com/how-it-works)
Zugang zu Plattform-nativen Typen /API ist vollständig geöffnet, so sind Sie nicht beschränkt auf eine kleine Gruppe von API-aufrufen (wenn Sie mit HTML5 /JavaScript, Sie wissen, welche Art von Einschränkungen gibt es).
Die Benutzeroberfläche design ist an die native API ausgesetzt, die von iOS (Cocoa-Touch) oder Android (Skia). Es gibt keine Zwischenschicht, die Leistung beeinträchtigen oder schauen und fühlen.
Als auf das, was innen ist .ipa oder .apk, who cares? Natürlich @Jason ' s Kommentar zeigt uns einige interne Implementierungsdetails.
InformationsquelleAutor der Antwort Lex Li
Zunächst Xamarin funktioniert auf zwei verschiedene Laufzeiten zur gleichen Zeit:
Einige Beispiel. Wenn Sie erstellen Sie Ihre eigenen C# - Klasse in Visual Studio Instanz dieser Klasse läuft unter Mono. Auch, wenn Sie das herunterladen von Newton.Json-Paket von nuget, das läuft in Mono zu. Dies ist der Grund, warum wir alle cool .NET-Zeug. Allerdings, wenn Sie Erben von Java.Lang.Objekt (Android) oder NSObject (iOS) oder einen custom controll, Instanzen dieser Klassen wird ausführen unter native runtime.
Sekunde alle, Sie haben gemerkt, dass wir brauchen, binden, diese beiden Welten irgendwie. Mal schauen, welchen Typ von Objekten haben wir.
Peer-Objekte, die Instanzen von Xamarin SDKs Klassen (zum Beispiel Aktivitäten, view controls, UILabels, TextViews und so weiter), Instanzen Ihrer eigenen Erben von Java.Lang.Objekt, NSObject, Fragment oder sogar UISegment Klassen.
Dieser Mechanismus ist eine der wichtigsten Dinge, die von Xamarin.
PS: Eigentlich ist es egal, welche der Zusammenstellung verwenden wir für Xamarin Projekte JIT oder AOT. Es hängt von der Plattform und erlaubt /nicht erlaubt einige features aus .NET-Welt. Nicht beschreiben, wie Xamarin arbeiten.
InformationsquelleAutor der Antwort Denis Gordin
Den Xamarin-compiler bündelt die .NET-runtime und gibt eine native (Binär) ARM ausführbare Datei, verpackt als ein iOS-oder Android-app.
InformationsquelleAutor der Antwort funeralfunk