Czy możesz tworzyć aplikacje dla systemu Linux za pomocą platformy Xamarin?


81

Czy możliwe jest tworzenie i tworzenie aplikacji dla systemu Linux za pomocą platformy Xamarin z tą samą bazą kodu?

Po kilku latach z Ubuntu moim głównym systemem operacyjnym jest teraz znowu Windows. Ale nie jest wykluczone, że mogłem przejść na Maca.

W tej chwili mam trochę doświadczenia z Qt i nie mam doświadczenia z Xamarin. Z Qt możesz rozwijać się na Windowsie, Linuksie i Macu, a także na Windowsie, Linuksie, Macu, iOS, Androidzie, Windows Mobile ...

Ponieważ Xamarin jest teraz darmowy i open source, a ja nadal nie mam dużego doświadczenia w Qt, rozważam wypróbowanie Xamarin do programowania międzyplatformowego zamiast Qt.

Brak możliwości wydania mojego oprogramowania dla Linuksa byłby dla mnie przełomem. Możliwość programowania na Linuksie byłaby fajna, ale jest opcjonalna. Ale po wszystkich moich badaniach w Google mogłem znaleźć tylko informacje i osoby proszące o wsparcie przy tworzeniu na Linuksie, a nie na Linuksie.

O ile wiem, w przypadku samego Mono nie powinno to stanowić problemu. Ale o ile wiem, Xamarin> Mono i nie mam wszystkiego w Mono, co mogłem uzyskać w Xamarinie.

Nie jestem też pewien, jak dobrze obsługiwane będzie Mono w przyszłości. Dla mnie wygląda na to, że Xamarin jest znacznie ważniejszy dla firmy Microsoft niż samo Mono.

Nie jestem pewien, czy to w ogóle możliwe, ponieważ Xamarin jest oparty na Mono, ale czy jest możliwe, że Microsoft w pewnym momencie zdecyduje się nie obsługiwać Mono z kompatybilnością .NET w taki sam sposób jak Xamarin, lub nawet całkowicie anuluje Mono jako samodzielny ?

Dlatego szukam jednej platformy dla wszystkich platform stacjonarnych i mobilnych, na których mogę polegać, i chcę wiedzieć, czy Xamarin i / lub Mono i / lub Xamarin + Mono mogą być alternatywą dla Qt, zanim przejdę głębiej w jakiekolwiek tych rozwiązań.

Odpowiedzi:


62

Na wypadek, gdyby ktoś inny natknął się na to pytanie: sytuacja się zmieniła. W przypadku Xamarin.Forms 3.0, Gtk # jest obsługiwany (jako wersja zapoznawcza w tym momencie). Dlatego jest włączona pełna obsługa GUI Linuksa.

Tak więc Xamarin obejmuje teraz:

Jedyne, czego można sobie życzyć: platforma docelowa aplikacji internetowej JS / HTML5 w ramach Xamarin :)


Inne rzeczy do życzenia w Xamarinie: możliwość rzeczywistego wywoływania i zwracania funkcji C # z js ...
Alexander

1
Myślę, że Xamarin.Mac obejmuje również macOS?
Franklin Yu

1
Nie jestem pewien, czy możliwe jest pokrycie Twojego życzenia „platformy docelowej aplikacji internetowej JS / HTML5” we właściwy sposób, więc treść jest nadal czystym kodem HTML i może być przetwarzana przez robota internetowego i tym podobne. ale interfejs JS / HTML5 / WebAssembly, który po prostu „jakoś działa”, byłby już zaletą. aby doświadczyć prawdziwego natywnego HTML, powinieneś sprawdzić Blazor
Thomas Haller

1
GTK # nie jest obsługiwany (przez Microsoft), jest to wysiłek społeczności, do którego Microsoft nie wnosi ani nie dba. Nie można go opracować w systemie Linux, tylko po to, aby używać go w systemie Linux po zbudowaniu go w systemie Windows. Projektant interfejsu użytkownika platformy Xamarin.Forms nie jest w ogóle dostępny w systemie Linux. Microsoft po prostu się tym nie przejmuje.
trampster

46

Nie, platforma Xamarin nie jest dostępna dla systemu Linux. To była świadoma decyzja podjęta przez zespół Xamarin kilka lat temu:

Miguel de Icaza 04.08.2011 11:52:37 UTC

Mamy tutaj problem z kontrolą jakości.

Problem z obsługą Linuksa polega na tym, że musielibyśmy stworzyć samodzielne opakowanie Mono dla wszystkich dostarczanych przez nas bitów, ponieważ większość dystrybucji Linuksa jest nieco nieaktualna, jeśli chodzi o Mono.

Oznacza to również, że jeśli reklamujemy „Linuksa”, musielibyśmy poddać kontroli jakości kilkanaście różnych kombinacji z powodu różnych dystrybucji Linuksa i różnych wydań każdej dystrybucji.

Być może wspieralibyśmy tylko jedną dystrybucję i jedną wersję, co jest bliższe temu, co musimy zrobić dzisiaj na Windows / Mac.

Aby wyjaśnić, gama produktów Xamarin nie jest dostępna w systemie Linux (Xamarin Studio, Xamarin.iOS i Xamarin.Android), ale MonoDevelop, podstawa Xamarin Studio i Mono, wieloplatformowe środowisko uruchomieniowe .NET, zdecydowanie jest.

Możesz zbudować oprogramowanie komputerowe za pomocą MonoDevelop. Witryna MonoDevelop zawiera wiele instrukcji dotyczących rozpoczęcia:


Dzięki. Oczywiście teraz byłoby interesujące, czego mi brakuje, kiedy używam Mono? Wygląda na to, że Mono obsługuje również systemy Android i iOS. Czy zaletą Xamarina jest po prostu jego IDE (w tym przypadku jest to zaleta) i coś w rodzaju Xamarin Test Cloud?
JuSchu

A może byłoby możliwe użycie platformy Xamarin do wszystkiego, do czego może być używany, a następnie skompilowanie go dla systemu Linux z tą samą bazą kodu?
JuSchu

5
@JuSchu Mono nie obsługuje systemów iOS i Android. Dlatego Xamarin zmienił nazwę MonoTouch na Xamarin.iOS i Mono dla systemu Android na Xamarin.Android. A .NET / Mono nie ma na celu umożliwienia używania jednej bazy kodu do obsługi wszystkich platform. Możesz udostępniać kod, ale nie marz o udostępnianiu wszystkich linii.
Lex Li

1
@JuSchu tak, logikę biznesową można udostępniać wszędzie, chociaż mechanizm udostępniania jest teraz w dużym stopniu zmieniony (z PCL na .NET Standard Library), jeśli już sprawdzasz powiązane sesje kompilacji.
Lex Li,

7
Wygląda na to, że ekipa Miguela de Icazy zdecydowała się na wsparcie Xamarina dla linuxa :)
Upol Ryskulova

9

Wygląda na to, że istnieje szansa, że ​​Xamarin Forms będzie działać na dystrybucjach systemu Linux. W tym wątku reddit Miguel de Icaza mówi:

Niektórzy członkowie naszego zespołu faktycznie rozwijają się w systemie Linux. Powodem, dla którego nigdy nie wypuściliśmy narzędzi Linuksa, jest to, że pobieraliśmy dużo pieniędzy i ludzie słusznie oczekiwaliby, że oprogramowanie będzie w pełni obsługiwane. Mieliśmy dość zadowolenia naszych użytkowników komputerów Mac i Windows, a dodanie nieznanej liczby dystrybucji Linuksa brzmiało jak trudne zadanie. Teraz, gdy otwieramy źródła SDK i nie będę już czuć się źle, jeśli coś nie działa w określonej konfiguracji Linuksa, z przyjemnością wypuszczę wersje Linuksa.

To znaczy: fakt, że Forms jest narzędziem open source, obecnie otwiera taką możliwość.


5

Tak, od połowy 2018 r. Możliwe jest tworzenie wieloplatformowych aplikacji GUI przeznaczonych dla systemów Windows / mac / linux / android / ios przy użyciu biblioteki „Xamarin.Forms”. Zasadniczo masz jeden projekt biblioteki współdzielonej z kodu międzyplatformowego (UI i inne elementy międzyplatformowe) i jeden projekt na platformę dla kodu specyficznego dla platformy (Xamarin.Forms mają jedną implementację zaplecza dla każdej platformy. W systemie Linux jest to użycie GTK ).

Jednak dzięki MonoDevelop możesz opracować / zbudować tylko projekt wieloplatformowy i projekt aplikacji specyficzny dla systemu Linux. Nadal będziesz musiał używać programu Visual Studio lub Rider do opracowywania / kompilowania dla innych platform.

Zobacz następującą odpowiedź: https://stackoverflow.com/a/53317021/298005


4

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

Jak powiedział Matthewrdev, Xamarin.Studio, Xamarin.iOS i Xamarin.Android nie są „oficjalnie” obsługiwane; jednak Xamarin.iOS i tak używa wirtualnego emulatora (i nie sądzę, że będzie obejście dla Xamarin.iOS działającego w systemie Linux), ale dla Xamarin Studio (MonoDevelop na Linuksie lub Jetbrain's Riders (jak uruchomić go na Linuksie bez oficjalnego wsparcia jest również podana w linku) Może działać w systemie Linux jako alternatywa dla Xamarin.Studio, a ten link, który udostępniłem, wyjaśnia, jak zainstalować Xamarin.Android w systemie Linux, więc tylko w przypadku Xamarin.iOS będziesz musiał przeprowadzić migrację lub podwójny rozruch lub coś, mam nadzieję, że to pomoże! (Przestałem używać Xamarin samodzielnie, jednak to środowisko pomaga w tworzeniu oprogramowania dla platformy Xamarin w systemie Linux!)


2
Cześć, utrzymuję, że ten przewodnik jest połączony; przez jakiś czas zepsuł się, ponieważ niektóre ścieżki zostały zmienione, na dzień dzisiejszy został zaktualizowany i potwierdzono, że działa.
n3n7

Mogę potwierdzić, że nadal działa. Jedyny problem dotyczył błędów libzip.so.4. Nie miałem go w pierwszej kolejności, więc musiałem go zainstalować przez: sudo apt-get install libzip4
ignacardel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.