مرحبا يا هبر! سنخبرك اليوم بما يعجب المستخدمين بشأن Xamarin ، أداة تطوير تطبيقات الجوّال عبر الأنظمة الأساسية. بالإضافة إلى ذلك ، سنتطرق إلى أوجه القصور في النظام الأساسي. بالمناسبة ، تحت القطع ستجد الكثير من التعليمات البرمجية والأمثلة التوضيحية ، وليس فقط النص مع التعداد. انضم الآن!
أعد هذا المقال شركاؤنا ، شباب من EGO.Xamarin عبارة عن مجموعة أدوات مفيدة لتطوير تطبيقات الجوال عبر الأنظمة الأساسية في C # باستخدام .NET. وهو يدعم iOS و Android و Windows Phone.
لتطوير تطبيق يعتمد على Xamarin ، لا تحتاج إلى معرفة اللغات المحددة للمنصات الفردية بدقة. بالإضافة إلى ذلك ، عند العمل مع أي نظام أساسي ، سيكون لديك وصول كامل إلى إمكانات SDK الخاصة به والآليات المدمجة لإنشاء واجهات المستخدم.
وبالتالي ، يتيح لك Xamarin إنشاء تطبيقات لا تختلف تقريبًا عن نظيراتها الأصلية ، مما يعني أنها مناسبة تمامًا للتوزيع من خلال المتاجر الرسمية (على سبيل المثال ، Google Play و App Store).
بالإضافة إلى ذلك ، وفقًا لمطوري Xamarin ، لن يكون الحل الجاهز أقل بكثير من حيث الأداء.
فكر في مكونات Xamarin.
- Xamarin.IOS هي مكتبة فئة C # توفر للمطورين الوصول إلى iOS SDK.
- Xamarin.Android هي مكتبة فئة C # توفر للمطورين الوصول إلى Android SDK.
- مترجم C #.
- برنامج .NET Framework
- أدوات IDE (مضمنة في Visual Studio لنظام التشغيل Mac OS و Windows).
توضح هذه المقالة سبعة أسباب مهمة لاستخدام Xamarin لتطوير عبر الأنظمة الأساسية.
مواد إضافية: مقارنة Xamarin و PhoneGap .1. سهل التعلم
ما الذي يجب الانتباه إليه أولاً عند اختيار منصة؟ بطبيعة الحال ، تعقيد تطورها. من غير المحتمل أن يكون هناك الكثير ممن يريدون قضاء الوقت في إتقان بناء الجملة (على سبيل المثال ، من أجل امتلاك ثقة إلى حد ما لـ Angular ، تحتاج إلى دراسة هذه المنصة لعدة أشهر على الأقل). لذلك ، إذا كان إنشاء رمز عالي الجودة يتطلب إعدادًا جادًا للغاية ، فإن العديد من المبتدئين ببساطة لا يتمكنون من إتقان بيئة التطوير بالكامل. لكن بدء استخدام Xamarin أمر سهل: ليس عليك تعلم لغة Xamarin أو أي شيء من هذا القبيل.
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, } });
يكفي أن تعرف لغة C # من خلال أسلوبها الحتمي في برامج الكتابة ، فلا تتردد في الشعور في بيئة .NET وتعلم العديد من الفصول المتعلقة بمنصات محددة.
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"); } } }
المصدرلإنشاء تطبيق "أصلي" تمامًا لمنصة معينة ، يجب أن يكون لديك معرفة كافية بـ Java (في حالة Android) أو Objective-C / Swift (لنظام iOS). في بعض الحالات ، يمكن أن يكون هذا عقبة خطيرة. دعونا نرى كيف تم حل نفس المهمة ، التي تتضمن إنشاء سلسلة سمة ، في Objective-C و 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);
في C #:
var stringAttributes = new CFStringAttributes { Font = myFont, ForegroundColor = UIColor.White.CGColor }; var myString = new NSAttributedString (“Hello from EGO team!”, attrs);
إذا لم تكن تستخدم إمكانات التطوير عبر الأنظمة الأساسية لـ Xamarin ، فحينئذٍ لإنشاء مشروع تجاري يتمتع بأداء كافٍ على كلا النظامين الأساسيين ، فقد تحتاج إلى استخدام طريقتين مختلفتين في وقت واحد. وهذا يعني أن التكاليف تتضاعف تقريبًا.
2. تخفيض تكاليف المشروع
استنادًا إلى المزايا الموضحة أعلاه ، يمكن ملاحظة أن التطوير عبر الأنظمة الأساسية باستخدام Xamarin يتطلب وقتًا أقل (ومالًا) 1.5 مرة تقريبًا من إنشاء مشروع متخصص منفصل لكل منصة.
بالطبع ، بعض أجزاء الكود (على سبيل المثال ، مكونات الأداة المساعدة) ستكون هي نفسها في كلا الإصدارين ، والبعض الآخر (على وجه الخصوص ، منطق الأعمال الذي لا يستخدم الوظائف المتخصصة لجهاز المستخدم) سيتطلب تغييرات طفيفة فقط. ومع ذلك ، فإن الوضع العام أكثر تعقيدًا قليلاً. يجب حتمًا كتابة بعض مكونات تطبيقك من الصفر لكل نظام تشغيل. عند إنشاء ونشر تطبيقين لمنصتين ، من الضروري دائمًا توظيف فريقين للتطوير. استخدام Xamarin أبسط بكثير:
بفضل واجهات برمجة التطبيقات المستقلة عن النظام الأساسي ، ستتم كتابة 70٪ تقريبًا من الشفرة بتنسيق عالمي.في هذا المثال ، تستخدم فئة MainPage واجهة ITextToSpeech لتحديد الوظيفة المطلوبة على نظام أساسي محدد:
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. القدرة على إنشاء واجهات مستخدم مثل "الأصلي"
أحد الأسباب الرئيسية التي تجعل المطورين يتجنبون أدوات التطوير عبر الأنظمة الأساسية هو أن هذه الأدوات لا تسمح لك باستخدام النطاق الكامل لقدرات بيئات معينة. يتعلق هذا في المقام الأول بالتصميم (تصميم مسطح في iOS وتصميم المواد في Android) والقدرات الفكرية لأجهزة المستخدم (الوصول إلى جهات الاتصال والكاميرا وبيانات GPS وما إلى ذلك).
لن يكون الحل النهائي عبر الأنظمة الأساسية عالي الأداء (هذا العيب متأصل في جميع التطبيقات تقريبًا التي تم إنشاؤها باستخدام أدوات الويب عبر الأنظمة الأساسية) ولن يكون قادرًا على الاستفادة من أنظمة أساسية معينة (مما يعني أن بعض الميزات التي خطط لها منشئ المشروع في البداية قد لم تنفذ بالكامل).
ومع ذلك ، كل شيء مختلف عند استخدام أدوات Xamarin لتطوير الأنظمة الأساسية للتطبيقات "المشتركة". في هذه الحالة ، لن تواجهك المشاكل المذكورة أعلاه. لا تتوفر فقط فئات .NET القياسية للمطورين: يمكنهم بسهولة توصيل الفصول التي يدعمها نظام أساسي متنقل معين (وهي موجودة في مكتبات C # لـ Xamarin.Android و Xamarin.iOS ، على التوالي). هذا يعني أنه عند استخدام Xamarin لتطوير تطبيقات لنظامي التشغيل iOS و Android ، سيكون لديك تحت تصرفك مجموعة كاملة من إمكانيات هذه المنصات. لا تحتاج إلى استخدام أدوات الطرف الثالث (والمدفوعة عادة).
4. الظروف المثلى للاختبار
اختبار المنتج الذي يتم تحضيره للإصدار ليس بالمهمة السهلة ، خاصة عندما يتعلق الأمر بمنصة Android. يتم تحديد تنسيقات شاشة أجهزة iOS الخاصة بالمستخدم بوضوح ومعروفة مسبقًا ، ولكن أجهزة Android مختلفة تمامًا. إذا لم يتم اختبار التطبيق على جهاز معين ، فقد "تتفرق" واجهته في بعض الحالات. اقترح مبدعو Xamarin حلاً لهذه المشكلة.
على وجه الخصوص ، يتوفر
اختبار Cloud أيضًا لمستخدمي النظام الأساسي ، مما يسمح بمحاكاة أكثر من 2000 جهاز. هذا القرار ليس مجانيًا ، ولكن سيتم تبرير التكاليف.

مواد إضافية:
أفضل تسع أدوات لاختبار تطبيقات الجوّال لنظامي التشغيل iOS و Android .
5. التوافق التام مع أجهزة إنترنت الأشياء
إذا كنت تريد أن يتلقى تطبيقك بيانات عن موقع المستخدم أو الجيروسكوب أو مقياس التسارع أو أجهزة استشعار أخرى مدمجة ، فسيكون Xamarin خيارًا رائعًا.
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()); } }
بيئة التطوير هذه متوافقة تمامًا مع أجهزة إنترنت الأشياء (على سبيل المثال ، مع
Estimote ) التي تسمح لك بتلقي بيانات الموقع ، مما يعني أنك لست مضطرًا إلى تكوين التكامل مع حلول الطرف الثالث (خاصة لأن هذا لن يكون ممكنًا من حيث المبدأ).
6. توثيق الجودة ومجتمع كبير
تتوفر
وثائق منظمة جيدًا لـ Xamarin مع أمثلة عملية ومقتطفات التعليمات البرمجية وإرشادات خطوة بخطوة.
بالطبع ، لا يمكن الإجابة على بعض الأسئلة فيه. في هذه الحالة ، سيساعدك المجتمع عبر الإنترنت. هناك مجتمعان رسميان من Xamarin: على الموقع الرسمي للمنصة وعلى بوابة StackOverflow.
إذا كنت لا تزال لا تستطيع الحصول على المعلومات التي تحتاجها (يشكو بعض المطورين من أن خبراء المجتمع ليسوا نشطين للغاية) ، يمكنك الاتصال بخدمة الدعم الفني الخاصة المتاحة لحاملي رخصة Xamarin التجارية. سيجيبك المتخصصون في غضون بضع ساعات ولن يقدموا فقط مجموعة من الإجراءات القياسية التي نادرًا ما تساعد في حل المشكلة تمامًا ، ولكن أيضًا تعليمات تفصيلية خطوة بخطوة لحل مشكلتك الخاصة.
7. التكامل التام مع Microsoft Windows
تمتلك كل شركة تكنولوجيا معلومات تقريبًا بنية أساسية متطورة من البرامج المستخدمة على نظام Windows الأساسي.
بالنسبة لجميع إصدارات Visual Studio (لنظام التشغيل Mac OS و Windows) منذ ربيع عام 2016 ، يتم توفير Xamarin أيضًا كجزء من الاشتراك. إذا كنت تستخدم Visual Studio بالفعل للتطوير ، فلن تحتاج إلى دفع المزيد.
عيوب Xamarin
حاولنا التحدث بالتفصيل عن نقاط قوة Xamarin وفحصنا عددًا من مزاياها الواضحة. ومع ذلك ، نود أن نجعل هذه المراجعة أكثر موضوعية ، لذلك ننتقل إلى نقاط الضعف في الحل. في الواقع ، هناك عيب واحد فقط يستحق الاهتمام: حجم التطبيقات المكتوبة باستخدام Xamarin يتجاوز عادةً حجم نظرائهم الأصليين. ومع ذلك ، فإن التحسين ليس ضروريًا على الإطلاق.
ما مدى فعالية Xamarin؟
يحتوي Xamarin على العديد من المزايا وهو ممتاز للمشاريع واسعة النطاق لتطوير التطبيقات عبر الأنظمة الأساسية المعقدة من حيث الهندسة المعمارية ، على غرار الحلول الأصلية.