Können Sie Linux-Anwendungen mit Xamarin entwickeln?

81

Ist es möglich, Linux-Anwendungen mit Xamarin mit derselben Codebasis zu entwickeln und zu erstellen?

Nach ein paar Jahren mit Ubuntu ist mein Hauptbetriebssystem jetzt wieder Windows. Aber es ist nicht unmöglich, dass ich zu Mac wechseln könnte.

Im Moment habe ich ein bisschen Erfahrung mit Qt und keine Erfahrung mit Xamarin. Mit Qt können Sie entwickeln auf Windows, Linux und Mac und für Windows, Linux, Mac, iOS, Android, Windows Mobile, ... Sie sind ziemlich klar darüber.

Da Xamarin jetzt kostenlos und Open Source ist und ich noch nicht viel Erfahrung mit Qt habe, denke ich darüber nach, Xamarin für die plattformübergreifende Entwicklung anstelle von Qt auszuprobieren.

Meine Software für Linux nicht veröffentlichen zu können, wäre für mich ein Deal Breaker. Unter Linux entwickeln zu können wäre schön, ist aber optional. Aber nachdem alle meine Google Forschung, konnte ich nur Informationen und Menschen um Hilfe bitten Sie zu entwickeln , auf Linux und nicht für Linux.

Soweit ich weiß, sollte dies mit Mono allein kein Problem sein. Aber soweit ich Xamarin> Mono kenne und ich nicht alles in Mono bekomme, was ich in Xamarin bekommen könnte.

Ich bin mir auch nicht sicher, wie gut Mono in Zukunft unterstützt wird. Für mich scheint Xamarin für Microsoft viel wichtiger zu sein als Mono selbst.

Ich bin mir nicht sicher, ob es überhaupt möglich ist, da Xamarin auf Mono basiert, aber es ist möglich, dass Microsoft irgendwann beschließt, Mono nicht mit .NET-Kompatibilität auf die gleiche Weise wie Xamarin zu unterstützen oder Mono sogar vollständig als eigenständiges System abzubrechen ?

Daher suche ich nach einem einzigen Framework für alle Desktop- und Mobilplattformen, auf die ich mich verlassen kann, und möchte wissen, ob Xamarin und / oder Mono und / oder Xamarin + Mono eine Alternative zu Qt sein könnten, bevor ich mich näher mit einer befasse dieser Lösungen.

JuSchu
quelle

Antworten:

62

Nur für den Fall, dass jemand anderes auf dieses Q / A stößt: Die Situation hat sich geändert. Mit Xamarin.Forms 3.0 wird Gtk # unterstützt (derzeit als Vorschau). Daher ist die vollständige Unterstützung der Linux-GUI aktiviert.

Xamarin behandelt nun:

Das einzige, was Sie sich noch wünschen können: JS / HTML5 Web App-Zielplattform als Teil von Xamarin :)

hardyVeles
quelle
Andere Dinge, die man sich in Xamarin wünschen sollte: Fähigkeit, c # -Funktionen von js tatsächlich aufzurufen und zurückzugeben ...
Alexander
1
Ich denke, Xamarin.Mac deckt auch macOS ab?
Franklin Yu
1
Ich bin mir nicht sicher, ob es möglich ist, Ihren Wunsch "JS / HTML5 Web App-Zielplattform" ordnungsgemäß abzudecken. Daher ist der Inhalt immer noch sauberes HTML und kann von Webcrawler und dergleichen verarbeitet werden. Eine JS / HTML5 / WebAssembly-Benutzeroberfläche, die nur "irgendwie funktioniert", wäre jedoch bereits von Vorteil. Um echte native HTML-Erfahrung zu erhalten, sollten Sie Blazor
Thomas Haller
1
GTK # wird nicht unterstützt (von Microsoft). Es handelt sich um eine Community-Aktion, zu der Microsoft weder beiträgt noch sich darum kümmert. Es ist nicht möglich, es unter Linux zu entwickeln, sondern es nur unter Linux zu verwenden, nachdem Sie es unter Windows erstellt haben. Der Xamarin.Forms-UI-Designer ist unter Linux überhaupt nicht verfügbar. Microsoft kümmert sich einfach nicht darum.
Trampster
46

Nein, Xamarin ist für Linux nicht verfügbar. Dies war eine bewusste Entscheidung des Xamarin-Teams vor einigen Jahren:

Miguel de Icaza 2011-08-04 11:52:37 UTC

Wir haben hier ein QS-Problem.

Das Problem bei der Unterstützung von Linux besteht darin, dass wir für alle von uns gelieferten Bits ein eigenständiges Mono-Paket erstellen müssen, da die meisten Linux-Distributionen in Bezug auf Mono geringfügig abweichen.

Dies bedeutet auch, dass wir, wenn wir für "Linux" werben, aufgrund unterschiedlicher Linux-Distributionen und unterschiedlicher Editionen jeder Distribution ein Dutzend verschiedener Kombinationen überprüfen müssen.

Vielleicht würden wir nur eine einzige Distribution und eine einzige Version unterstützen, was näher an dem liegt, was wir heute unter Windows / Mac tun müssen.

Zur Verdeutlichung ist die Xamarin-Produktreihe unter Linux (Xamarin Studio, Xamarin.iOS und Xamarin.Android) nicht verfügbar, aber MonoDevelop, die Grundlage von Xamarin Studio, und Mono, die plattformübergreifende .NET-Laufzeit, sind es definitiv.

Sie können Desktop-Software mit MonoDevelop erstellen. Auf der MonoDevelop-Website finden Sie zahlreiche Anweisungen für den Einstieg:

matthewrdev
quelle
Vielen Dank. Natürlich wäre es jetzt interessant, was mir fehlt, wenn ich nur Mono benutze? Es sieht so aus, als ob Mono auch Android und iOS unterstützt. Ist der Vorteil von Xamarin nur die IDE (für den Fall, dass es ein Vorteil ist) und so etwas wie die Xamarin Test Cloud?
JuSchu
Oder wäre es möglich, Xamarin für alles zu verwenden, wofür es verwendet werden kann, und es dann für Linux mit derselben Codebasis zu erstellen?
JuSchu
5
@JuSchu Mono unterstützt iOS und Android nicht. Aus diesem Grund hat Xamarin MonoTouch in Xamarin.iOS und Mono für Android in Xamarin.Android umbenannt. Und .NET / Mono zielt nicht darauf ab, dass Sie eine Codebasis verwenden, um alle Plattformen zu unterstützen. Sie können Code teilen, aber träumen Sie nicht davon, alle Zeilen zu teilen.
Lex Li
1
@JuSchu yep, die Geschäftslogik kann überall geteilt werden, obwohl sich der Freigabemechanismus jetzt stark ändert (von PCL zu .NET Standard Library), wenn Sie bereits verwandte Build-Sitzungen auschecken.
Lex Li
7
Es scheint, dass Miguel de Icazas Team beschlossen hat, Xamarin für Linux zu unterstützen :)
Upol Ryskulova
9

Es scheint, dass Xamarin Forms möglicherweise unter Linux-Distributionen funktioniert. In diesem reddit Thread sagt Miguel de Icaza:

Einige unserer Teammitglieder entwickeln tatsächlich unter Linux. Der Grund, warum wir die Linux-Tools nie veröffentlicht haben, ist, dass wir viel Geld in Rechnung gestellt haben und die Leute zu Recht erwarten würden, dass die Software vollständig unterstützt wird. Wir hatten genug, um unsere Mac- und Windows-Benutzer zufrieden zu stellen, und das Hinzufügen einer unbekannten Anzahl von Linux-Distributionen klang nach einer schwierigen Aufgabe. Jetzt, da wir Open-Sourcing der SDKs sind und ich mich nicht mehr schlecht fühlen werde, wenn etwas unter einer bestimmten Linux-Konfiguration nicht funktioniert, werde ich gerne die Linux-Builds veröffentlichen.

Das heißt: Die Tatsache, dass Forms ein Open-Source-Tool ist, eröffnet derzeit diese Möglichkeit.

Bruno Peres
quelle
5

Ja, ab Mitte 2018 können plattformübergreifende GUI-Anwendungen für Windows / Mac / Linux / Android / iOS mithilfe der Bibliothek "Xamarin.Forms" entwickelt werden. Grundsätzlich haben Sie ein gemeinsam genutztes Bibliotheksprojekt aus plattformübergreifendem Code (Benutzeroberfläche und andere plattformübergreifende Inhalte) und ein Projekt pro Plattform für plattformspezifischen Code (Xamarin.Forms verfügt über eine Backend-Implementierung für jede Plattform. Unter Linux wird GTK verwendet ).

Mit MonoDevelop können Sie jedoch nur das plattformübergreifende Projekt und das Linux-spezifische Projekt der Anwendung entwickeln / erstellen. Sie müssen weiterhin Visual Studio oder Rider verwenden, um für die anderen Plattformen zu entwickeln / erstellen.

Siehe die folgende Antwort: https://stackoverflow.com/a/53317021/298005

Gabriel Cuvillier
quelle
4

https://github.com/0xFireball/xamarin-android-linux

Wie matthewrdev sagte, werden Xamarin.Studio, Xamarin.iOS und Xamarin.Android nicht "offiziell" unterstützt. Xamarin.iOS verwendet jedoch ohnehin einen virtuellen Emulator (und ich glaube nicht, dass es eine Problemumgehung für Xamarin.iOS unter Linux geben wird), sondern für Xamarin Studio (MonoDevelop unter Linux oder Jetbrains Riders (wie man es unter Linux ausführt) Der Link kann auch unter Linux als Alternative für Xamarin.Studio ausgeführt werden. Dieser Link, den ich geteilt habe, erklärt, wie Xamarin.Android unter Linux installiert wird. Nur für Xamarin.iOS müssen Sie also migrieren oder Dual Boot oder etw, ich hoffe das hilft! (Ich habe Xamarin selbst nicht mehr verwendet, aber diese Umgebung hilft bei der Entwicklung für Xamarin unter Linux!)

Youssef Mohammed
quelle
2
Hallo, ich pflege diesen Leitfaden, den Sie verlinkt haben. es war für einige Zeit kaputt gegangen, weil einige der Pfade geändert worden waren, bis heute wurde es aktualisiert und bestätigt, dass es funktioniert.
n3n7
Ich kann bestätigen, dass es immer noch funktioniert. Das einzige Problem war mit den libzip.so.4-Fehlern. Ich hatte es überhaupt nicht, also musste ich es installieren durch: sudo apt-get install libzip4
ignacardel