Halo, Habr! Hari ini kami akan memberi tahu Anda apa yang disukai pengguna tentang Xamarin, alat pengembangan aplikasi seluler lintas platform kami. Selain itu, kami akan menyentuh kekurangan platform. Omong-omong, di bawah potongan Anda akan menemukan banyak kode dan contoh ilustrasi, dan bukan hanya teks dengan enumerasi. Bergabunglah sekarang!
Artikel ini disiapkan oleh mitra kami, orang-orang dari EGO.Xamarin adalah toolkit praktis untuk mengembangkan aplikasi mobile lintas platform di C # menggunakan .NET. Ini mendukung iOS, Android dan Windows Phone.
Untuk mengembangkan aplikasi berbasis Xamarin, Anda tidak perlu mengetahui bahasa-bahasa spesifik dari masing-masing platform. Selain itu, ketika bekerja dengan platform apa pun, Anda akan memiliki akses penuh ke kemampuan SDK dan mekanisme bawaan untuk membuat antarmuka pengguna.
Dengan demikian, Xamarin memungkinkan Anda untuk membuat aplikasi yang hampir tidak berbeda dari rekan asli mereka, yang berarti mereka cukup cocok untuk distribusi melalui toko resmi (misalnya, Google Play dan App Store).
Selain itu, menurut pengembang Xamarin, solusi turnkey tidak akan kalah secara signifikan dalam hal kinerja.
Pertimbangkan komponen Xamarin.
- Xamarin.IOS adalah pustaka kelas C # yang memberikan pengembang akses ke SDK iOS.
- Xamarin.Android adalah pustaka kelas C # yang memberikan pengembang akses ke Android SDK.
- Kompiler C #.
- .NET Framework
- Alat IDE (dibangun dalam Visual Studio untuk Mac OS dan Windows).
Artikel ini merinci tujuh alasan penting untuk menggunakan Xamarin untuk pengembangan lintas platform.
Bahan tambahan: perbandingan Xamarin dan PhoneGap .1. Mudah dipelajari
Apa yang harus Anda perhatikan saat memilih platform? Tentu saja kompleksitas perkembangannya. Tidak mungkin bahwa akan ada banyak orang yang ingin menghabiskan waktu menguasai sintaks (misalnya, untuk cukup percaya diri dalam Angular, Anda perlu mempelajari platform ini setidaknya selama beberapa bulan). Oleh karena itu, jika pembuatan kode berkualitas tinggi memerlukan persiapan yang sangat serius, maka banyak pemula yang tidak dapat sepenuhnya menguasai lingkungan pengembangan. Tetapi memulai dengan Xamarin itu mudah: Anda tidak perlu mempelajari bahasa Xamarin atau yang semacam itu.
using Xamarin.Forms; RootPage.Children.Add(new ContentPage { Content = new Label { Text = "Sketches in Forms", BackgroundColor = Color.Yellow, TextColor = Color.Blue, Font = Font.SystemFontOfSize(NamedSize.Large), VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, } });
Sudah cukup untuk mengetahui bahasa C # dengan gaya program penulisan yang imperatif, merasa bebas untuk merasakan di lingkungan .NET dan mempelajari beberapa kelas yang terkait dengan platform tertentu.
using System.Diagnostics; using Foundation; using UIKit; namespace NeonPlayerConcept.iOS { [Register("AppDelegate")] public class AppDelegate : UIApplicationDelegate { public override UIWindow Window { get; set; } public static void Main(string[] args) { UIApplication.Main(args, null, "AppDelegate"); } } }
SumberUntuk membuat aplikasi yang sepenuhnya "asli" untuk platform tertentu, Anda harus memiliki pengetahuan yang cukup tentang Java (dalam hal Android) atau Objective-C / Swift (untuk iOS). Dalam beberapa kasus, ini bisa menjadi kendala serius. Mari kita lihat bagaimana tugas yang sama, yang melibatkan pembuatan string atribut, diselesaikan di Objective-C dan di C #.
Dalam Objective-C:
CFStringRef stringKeys[] * { kCTFontAttributeName, kCTForegroundColorAttributeName }; CFTypeRef stringValues[] * { myListFontRef, COColorGetConstantColor(kCOColorWhite) }; attr = CFDictionaryCreate (kCGAllocatorDefault, (const void **) &stringKeys, (const void **) &stringValues, sizeof(stringKeys) / sizeof(stringKeys[0]), &kCFTypeDictionaryKeyCallbacks, &kCFTypeDictionaryValueCallbacks); astr = CFAttributedStringCreate(kCFAllocatorDefault, CFSTR(“Hello from ego team!”), attr);
Dalam C #:
var stringAttributes = new CFStringAttributes { Font = myFont, ForegroundColor = UIColor.White.CGColor }; var myString = new NSAttributedString (“Hello from EGO team!”, attrs);
Jika Anda tidak menggunakan kemampuan pengembangan lintas-platform Xamarin, maka untuk membuat proyek komersial yang akan memiliki kinerja yang cukup pada kedua platform, Anda mungkin perlu menggunakan dua pendekatan berbeda sekaligus. Ini berarti bahwa biaya hampir dua kali lipat.
2. Mengurangi biaya proyek
Berdasarkan keuntungan yang dijelaskan di atas, dapat dicatat bahwa pengembangan lintas platform menggunakan Xamarin membutuhkan waktu sekitar 1,5 kali lebih sedikit (dan uang) daripada membuat proyek khusus yang terpisah untuk setiap platform.
Tentu saja, beberapa bagian kode (misalnya, komponen utilitas) akan sama di kedua versi, dan beberapa lainnya (khususnya, logika bisnis yang tidak menggunakan fungsi khusus perangkat pengguna) hanya akan memerlukan perubahan kecil. Namun, situasi keseluruhan sedikit lebih rumit. Beberapa komponen aplikasi Anda pasti harus ditulis dari awal untuk setiap OS. Saat membuat dan menggunakan dua aplikasi untuk dua platform, hampir selalu diperlukan untuk merekrut dua tim pengembangan. Menggunakan Xamarin jauh lebih sederhana:
Berkat API platform-independen, sekitar 70% dari kode akan ditulis dalam format universal.Dalam contoh ini, kelas MainPage menggunakan antarmuka ITextToSpeech untuk memilih fungsi yang diinginkan pada platform tertentu:
ITextToSpeech.cs: public interface ITextToSpeech { void Speak (string text); } TextToSpeech_Android.cs: [assembly: Dependency (typeof (TextToSpeech_Android))] namespace UsingDependencyService.Android { public class TextToSpeech_Android : Java.Lang.Object, ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { \\Android-specific code } } } TextToSpeech_iOS.cs: [assembly: Dependency (typeof (TextToSpeech_iOS))] namespace UsingDependencyService.iOS { public class TextToSpeech_iOS : ITextToSpeech { TextToSpeech speaker; string toSpeak; public TextToSpeech_Android () {} public void Speak (string text) { … \\iOS-specific code } } } MainPage.cs: public class MainPage : ContentPage { public MainPage [] { var speak = new Button { Text = “Hello, world!”, VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, }; speak.Clicked += (sender, e) => { DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms"); }; Content = speak; } }
3. Kemampuan untuk membuat antarmuka pengguna seperti "asli"
Salah satu alasan utama pengembang menghindari alat pengembangan lintas-platform adalah bahwa alat tersebut tidak memungkinkan Anda untuk menggunakan berbagai kemampuan lingkungan tertentu. Ini terutama berkaitan dengan desain (Desain Flat di iOS, Desain Material di Android) dan kemampuan intelektual perangkat pengguna (akses ke kontak, kamera, data GPS, dll.).
Solusi lintas-platform terakhir tidak akan memiliki kinerja tinggi (kelemahan ini melekat pada hampir semua aplikasi yang dibuat menggunakan alat web lintas-platform) dan tidak akan dapat mengambil keuntungan dari platform tertentu (yang berarti bahwa beberapa fitur yang awalnya direncanakan oleh pencipta proyek mungkin tidak sepenuhnya diimplementasikan).
Namun, semuanya berbeda ketika menggunakan alat Xamarin untuk pengembangan lintas-platform aplikasi "asli". Dalam hal ini, Anda tidak akan menemui masalah di atas. Tidak hanya standar. NET kelas tersedia untuk pengembang: mereka dapat dengan mudah menghubungkan kelas yang didukung oleh platform seluler tertentu (mereka terkandung dalam perpustakaan C # untuk Xamarin.Android dan Xamarin.iOS, masing-masing). Ini berarti bahwa ketika menggunakan Xamarin untuk mengembangkan aplikasi untuk iOS dan Android, Anda dapat menggunakan berbagai kemampuan dari platform ini. Anda tidak perlu menggunakan alat pihak ketiga (dan biasanya berbayar).
4. Kondisi optimal untuk pengujian
Menguji produk yang sedang disiapkan untuk rilis bukanlah tugas yang sepele, terutama ketika datang ke platform Android. Format layar perangkat iOS pengguna didefinisikan dengan jelas dan diketahui sebelumnya, tetapi perangkat Android sangat berbeda. Jika aplikasi belum diuji pada perangkat tertentu, antarmuka dalam beberapa kasus mungkin "bubar". Pencipta Xamarin telah mengusulkan solusi untuk masalah ini.
Secara khusus,
Test Cloud juga tersedia untuk pengguna platform, yang memungkinkan meniru lebih dari 2000 perangkat. Keputusan ini tidak gratis, tetapi biayanya akan dibenarkan.

Bahan tambahan:
sembilan alat pengujian aplikasi seluler terbaik untuk iOS dan Android .
5. Kompatibilitas sempurna dengan perangkat IoT
Jika Anda ingin aplikasi Anda menerima data tentang lokasi pengguna, giroskop, akselerometer, atau sensor bawaan lainnya, maka Xamarin akan menjadi pilihan yang tepat.
private void Instance_Ranged(object sender, System.Collections.Generic.IEnumerable<IBeacon> e) { Try { var data = string.Empty; foreach (var beacon in e) { data = $@”region id: {beacon} } _labelContent.Text = data; LogStatus(@”Ranged”); } catch (Exception exception) { LogStatus(exception.ToString()); } }
Lingkungan pengembangan ini sepenuhnya kompatibel dengan perangkat IoT (misalnya, dengan
Estimote ) yang memungkinkan Anda menerima data lokasi, yang berarti bahwa Anda tidak harus mengonfigurasi integrasi dengan solusi pihak ketiga (terutama karena ini pada prinsipnya tidak mungkin dilakukan).
6. Dokumentasi yang berkualitas dan komunitas yang luas
Dokumentasi yang terorganisir dengan
baik tersedia untuk Xamarin dengan contoh-contoh praktis, cuplikan kode, dan petunjuk langkah demi langkah.
Tentu saja, beberapa pertanyaan tidak dapat dijawab di dalamnya. Dalam hal ini, komunitas online akan membantu Anda. Ada dua komunitas Xamarin resmi: di situs web resmi platform dan di portal StackOverflow.
Jika Anda masih tidak bisa mendapatkan informasi yang Anda butuhkan (beberapa pengembang mengeluh bahwa pakar komunitas tidak terlalu aktif), Anda dapat menghubungi layanan dukungan teknis pribadi yang tersedia untuk pemegang lisensi bisnis Xamarin. Spesialis akan menjawab Anda dalam beberapa jam dan tidak hanya menawarkan serangkaian prosedur standar yang jarang membantu menyelesaikan masalah secara menyeluruh, tetapi petunjuk langkah demi langkah yang terperinci untuk menyelesaikan masalah khusus Anda.
7. Integrasi sempurna dengan Microsoft Windows
Hampir setiap perusahaan IT memiliki infrastruktur perangkat lunak bekas yang dikembangkan pada platform Windows.
Untuk semua edisi Visual Studio (untuk Mac OS dan Windows) sejak musim semi 2016, Xamarin juga disediakan sebagai bagian dari langganan. Jika Anda sudah menggunakan Visual Studio untuk pengembangan, Anda tidak perlu membayar ekstra.
Kerugian Xamarin
Kami mencoba untuk berbicara secara rinci tentang kekuatan Xamarin dan memeriksa sejumlah keunggulannya. Namun, kami ingin menjadikan ulasan ini lebih objektif, jadi kami beralih ke kelemahan solusi. Faktanya, hanya satu kekurangan yang perlu diperhatikan: ukuran aplikasi yang ditulis menggunakan Xamarin biasanya sedikit melebihi volume dari mitra asli. Meskipun demikian, optimasi tidak pernah berlebihan.
Jadi seberapa efektifkah Xamarin?
Xamarin memiliki beberapa keunggulan dan sangat baik untuk proyek skala besar untuk mengembangkan aplikasi lintas platform yang kompleks dalam hal arsitektur, mirip dengan solusi asli.