Bạn có thể phát triển các ứng dụng Linux với Xamarin không?


81

Có thể phát triển và xây dựng các ứng dụng Linux với Xamarin với cùng một cơ sở mã không?

Sau một vài năm với Ubuntu, hệ điều hành chính của tôi bây giờ lại là Windows. Nhưng không phải là không thể mà tôi có thể chuyển sang Mac.

Hiện tại tôi có một chút kinh nghiệm với Qt và không có kinh nghiệm với Xamarin. Với Qt, bạn có thể phát triển trên Windows, Linux, Mac và cho Windows, Linux, Mac, iOS, Android, Windows Mobile, ... Họ khá rõ ràng về điều đó.

Vì Xamarin hiện là mã nguồn mở miễn phí và tôi vẫn chưa có nhiều kinh nghiệm về Qt nên tôi đang cân nhắc dùng thử Xamarin để phát triển nền tảng chéo thay vì Qt.

Không thể phát hành phần mềm của tôi cho Linux sẽ là một yếu tố phá vỡ thỏa thuận đối với tôi. Có thể phát triển trên Linux sẽ rất tốt, nhưng là tùy chọn. Nhưng sau tất cả nghiên cứu trên Google, tôi chỉ có thể tìm thấy thông tin và những người yêu cầu hỗ trợ để phát triển trên Linux chứ không phải cho Linux.

Theo như tôi biết, điều này không thành vấn đề với Mono. Nhưng theo như tôi biết Xamarin> Mono và tôi không nhận được mọi thứ trong Mono mà tôi có thể nhận được trong Xamarin.

Tôi cũng không chắc Mono sẽ được hỗ trợ tốt như thế nào trong tương lai. Đối với tôi, có vẻ như Xamarin quan trọng đối với Microsoft hơn nhiều so với bản thân Mono.

Tôi không chắc liệu điều đó có khả thi không, vì Xamarin dựa trên Mono, nhưng có khả năng một lúc nào đó Microsoft sẽ quyết định không hỗ trợ Mono với khả năng tương thích .NET theo cách tương tự như Xamarin, hoặc thậm chí hủy bỏ Mono hoàn toàn độc lập. ?

Vì vậy, tôi đang tìm kiếm một khuôn khổ duy nhất cho tất cả các nền tảng máy tính để bàn và di động mà tôi có thể dựa vào và tôi muốn biết liệu Xamarin và / hoặc Mono và và / hoặc Xamarin + Mono có thể là một sự thay thế cho Qt trước khi tôi đi sâu hơn vào bất kỳ của các giải pháp đó.

Câu trả lời:


61

Đề phòng trường hợp có người khác đi ngang qua q / a này: tình hình đã thay đổi. Với Xamarin.Forms 3.0, Gtk # được hỗ trợ (dưới dạng bản xem trước, tại thời điểm này). Do đó, hỗ trợ Linux GUI đầy đủ được bật.

Vì vậy, Xamarin hiện bao gồm:

Điều duy nhất còn lại để mong ước: Nền tảng mục tiêu JS / HTML5 Web App, như một phần của Xamarin :)


Những điều khác cần mong ước trong Xamarin: khả năng thực sự gọi và trả về các hàm c # từ js ...
Alexander

1
Tôi nghĩ Xamarin.Mac cũng bao gồm macOS?
Franklin Yu

1
không chắc liệu có thể bao hàm "nền tảng đích JS / HTML5 Web App" mong muốn của bạn theo cách thích hợp hay không, vì vậy nội dung vẫn là HTML sạch và có thể được xử lý bởi webcrawler và những thứ tương tự. nhưng giao diện người dùng JS / HTML5 / WebAssembly chỉ "hoạt động bằng cách nào đó" sẽ là một lợi ích. để có được thực kinh nghiệm HTML mẹ đẻ bạn nên kiểm Blazor
Thomas Haller

1
GTK # không được hỗ trợ (bởi microsoft), đây là nỗ lực chỉ của cộng đồng mà Microsoft không đóng góp hoặc quan tâm đến. Không thể phát triển nó trên linux, chỉ có thể sử dụng nó trên linux sau khi bạn xây dựng nó trên windows. Trình thiết kế giao diện người dùng Xamarin.Forms hoàn toàn không có sẵn trên linux. Microsoft chỉ đơn giản là không quan tâm đến điều này.
trampster

46

Không, Xamarin không khả dụng cho Linux. Đây là một quyết định có ý thức của nhóm Xamarin vài năm trước:

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

Chúng tôi phải đối mặt với một vấn đề QA ở đây.

Vấn đề với việc hỗ trợ Linux là chúng ta cần tạo một bao bì Mono riêng cho tất cả các bit mà chúng tôi vận chuyển vì hầu hết các bản phân phối Linux đều hơi khác khi nói đến Mono.

Điều đó cũng có nghĩa là nếu chúng tôi quảng cáo "Linux", chúng tôi sẽ cần QA một tá sự kết hợp khác nhau do các bản phân phối Linux khác nhau và các phiên bản khác nhau của mỗi bản phân phối.

Có lẽ chúng tôi sẽ chỉ hỗ trợ một bản phân phối và một phiên bản duy nhất, điều này gần với những gì chúng ta phải làm trên Windows / Mac ngày nay.

Để làm rõ, dòng sản phẩm Xamarin không khả dụng trên Linux (Xamarin Studio, Xamarin.iOS và Xamarin.Android) nhưng MonoDevelop, nền tảng của Xamarin Studio và Mono, thời gian chạy .NET đa nền tảng, chắc chắn là như vậy.

Bạn có thể xây dựng phần mềm máy tính để bàn bằng MonoDevelop. Trang MonoDevelop có nhiều hướng dẫn về cách bắt đầu:


Cảm ơn. Tất nhiên bây giờ sẽ rất thú vị khi tôi chỉ sử dụng Mono? Có vẻ như Mono cũng hỗ trợ Android và iOS. Có phải lợi thế của Xamarin chỉ là IDE (trong trường hợp đó là một lợi thế) và một cái gì đó giống như Đám mây thử nghiệm Xamarin?
JuSchu

Hay có thể sử dụng Xamarin cho mọi thứ mà nó có thể được sử dụng và sau đó xây dựng nó cho Linux với cùng một cơ sở mã?
JuSchu

5
@JuSchu Mono không hỗ trợ iOS và Android. Đó là lý do tại sao Xamarin đổi tên MonoTouch thành Xamarin.iOS và Mono cho Android thành Xamarin.Android. Và .NET / Mono không nhằm mục đích cho phép bạn sử dụng một cơ sở mã để hỗ trợ tất cả các nền tảng. Bạn có thể chia sẻ mã nhưng đừng mơ chia sẻ mọi dòng.
Lex Li

1
@JuSchu yep, logic nghiệp vụ có thể được chia sẻ ở mọi nơi, mặc dù cơ chế chia sẻ hiện đang có một sự thay đổi lớn (từ PCL sang .NET Standard Library) nếu bạn đã xem các phiên Xây dựng liên quan.
Lex Li

7
Dường như đội Miguel de Icaza của quyết định hỗ trợ Xamarin cho linux :)
Upol Ryskulova

9

Có vẻ như có khả năng Xamarin Forms hoạt động trên các bản phân phối linux. Trong chủ đề reddit này, Miguel de Icaza nói:

Một số thành viên trong nhóm của chúng tôi thực sự phát triển trong Linux. Lý do tại sao chúng tôi không bao giờ phát hành các công cụ Linux là vì chúng tôi đã tính rất nhiều tiền và mọi người thực sự mong đợi phần mềm được hỗ trợ đầy đủ. Chúng tôi đã có đủ để giữ cho người dùng Mac và Windows của mình hài lòng và việc thêm một số lượng bản phân phối Linux không xác định có vẻ như là một nhiệm vụ khó khăn. Bây giờ chúng tôi đang mở nguồn cung cấp các SDK và tôi sẽ không còn cảm thấy tồi tệ nếu có thứ gì đó không hoạt động trong một cấu hình Linux cụ thể, tôi sẽ rất vui khi phát hành các bản dựng Linux.

Đó là: thực tế là Forms là một công cụ mã nguồn mở hiện đang mở ra khả năng này.


5

Có, kể từ giữa năm 2018, có thể phát triển các ứng dụng GUI đa nền tảng nhắm mục tiêu đến windows / mac / linux / android / ios bằng cách sử dụng thư viện "Xamarin.Forms". Về cơ bản, bạn có một dự án thư viện được chia sẻ từ mã nền tảng chéo (giao diện người dùng và các nội dung đa nền tảng khác) và một dự án trên mỗi nền tảng cho mã nền tảng cụ thể (Xamarin. Forms có một triển khai phụ trợ cho mỗi nền tảng. Trên Linux, điều này đang sử dụng GTK ).

Tuy nhiên, với MonoDevelop bạn chỉ có thể phát triển / xây dựng dự án đa nền tảng và dự án dành riêng cho linux của ứng dụng. Bạn vẫn cần sử dụng Visual Studio hoặc Rider để phát triển / xây dựng cho các nền tảng khác.

Xem câu trả lời sau: https://stackoverflow.com/a/53317021/298005


4

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

Như matthewrdev đã nói, Xamarin.Studio, Xamarin.iOS và Xamarin.Android không được "chính thức" hỗ trợ; tuy nhiên, Xamarin.iOS vẫn sử dụng trình giả lập ảo (và tôi không nghĩ rằng sẽ có giải pháp thay thế cho Xamarin.iOS để chạy trên Linux), nhưng đối với Xamarin Studio (MonoDevelop trên Linux hoặc Jetbrain's Riders (cách chạy trên linux không có hỗ trợ chính thức cũng được cung cấp trong liên kết) Có thể chạy trên Linux như một bản thay thế cho Xamarin.Studio và liên kết đó tôi đã chia sẻ giải thích cách cài đặt Xamarin.Android trên linux, vì vậy chỉ với Xamarin.iOS, bạn sẽ cần phải di chuyển hoặc khởi động kép hoặc sth, tôi hy vọng điều đó sẽ hữu ích! (Tôi đã ngừng sử dụng Xamarin, tuy nhiên, môi trường này giúp phát triển Xamarin trên linux!)


2
Xin chào, tôi duy trì hướng dẫn mà bạn đã liên kết; nó đã bị hỏng một thời gian vì một số đường dẫn đã được thay đổi, tính đến ngày hôm nay nó đã được cập nhật và đã được xác nhận là hoạt động.
n3n7

Tôi có thể xác nhận nó vẫn hoạt động. Chỉ có vấn đề với lỗi libzip.so.4. Tôi không có nó ở nơi đầu tiên vì vậy tôi đã phải cài đặt nó thông qua: sudo apt-get install libzip4
ignacardel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.