مقابلة مع مطوري SaberMod و Hyper Toolkins

لتجميع أي مشروع Android مثل kernel أو ROM ، يحتاج المطورون إلى استخدام toolchain. وفقًا لـ elinux.org ، تعد toolchain عبارة عن مجموعة من أدوات تطوير البرامج المتميزة التي يتم ربطها (أو تقييدها) معًا بمراحل محددة مثل GCC ، binutils و glibc (جزء من GNU Toolchain). قد تحتوي أدوات الأدوات على مصحح أخطاء أو برنامج التحويل البرمجي للغة برمجة معينة مثل C ++ أو غيرها. غالبًا ما تكون سلسلة الأدوات المستخدمة للتطوير المضمن عبارة عن سلسلة أدوات متقاطعة ، أو أكثر شيوعًا باسم مترجم متقاطع. تعمل جميع البرامج (مثل GCC) على نظام مضيف لهيكل معين (مثل x86) ولكنه ينتج كودًا ثنائيًا (ملفات قابلة للتنفيذ) ليتم تشغيله على بنية مختلفة (مثل ARM).

أداة المفاتيح الأكثر استخدامًا هي دول مجلس التعاون الخليجي ، التي تم إصدارها في البداية منذ ما يقرب من 20 عامًا. يتم استخدام دول مجلس التعاون الخليجي المعدلة بشكل خفيف بواسطة Google أثناء عملية إنشاء AOSP. في حين تعتبر دول مجلس التعاون الخليجي من Google أكثر أدوات الأدوات استقرارًا ، إلا أنها تضم ​​بعض المنافسين اللائقين مثل Linaro و SaberMod. من المعروف أن هذه المشاريع تعزز أداء النظام بشكل كبير على العديد من الأجهزة. دعونا نلقي نظرة سريعة لمعرفة خلفية هذه المشاريع.

تأسست مؤسسة Linaro في منتصف عام 2010 ، وبدأ مطوروها على الفور في العمل على العديد من المشاريع ، بما في ذلك مجموعات الأدوات القائمة على دول مجلس التعاون الخليجي لـ ARM. بدأ إصدار أندرويد Android الذي تم تجميعه مع Linaro في الظهور بعد بضعة أشهر. منذ تأسيس مجموعة Linaro ، امتدح المستخدمون ذلك لتحسينات الأداء اللائقة والفتنة الشاملة. يستخدم لينارو حلوله الخاصة ويتم تحديثه باستمرار. يمكنك تنزيل أحدث إصدار من toolchain مباشرةً من صفحة الويب.

بعد بضع سنوات ، في عام 2013 ، أنشأ مطور يدعى بول بيلير مشروع SaberMod. في البداية تم استخدام المشروع على SaberMod ROM لطراز Nexus 7 WiFi (2013). استمر هذا في Nexus 4 و Nexus 5 من خلال مساعدة تبرعات المستخدمين. تستند مجموعات الأدوات إلى GNU GCC 4.8 و 4.9 و 5.0 مع تصحيحات AOSP المقدمة إلى GNU GCC. يوفر SaberMod أيضًا ميزات تحسين إضافية بخلاف سلسلة أدوات Google ، والتي توفر خيارات لبعض التعديلات في ROM نفسها لإضافة المزيد من مكاسب الأداء ، مثل تحسينات تحويل حلقة الجرافيت. يتتبع SaberMod الأدوات المساعدة الأخرى من GNU في مكونات مصدر سلسلة الأدوات والتي تكون بشكل عام أكثر حداثة من الأدوات AOSP أو Linaro ، ويتتبع دائمًا فروع تطوير GNU GCC للحصول على أحدث التصحيحات وإصلاحات الأخطاء. يختلف النظام الإيكولوجي لمجموعة الأدوات في SaberMod عن نظام AOSP ، حيث يستخدم نصوصًا معقدة لتزويد سلاسل أدوات سريعة ومحدثة. لقد تم تعديل المصادر الأخرى لسلسلة الأدوات مثل مستودع بناء سلسلة الأدوات المستند إلى AOSP بشكل كبير للعمل لصالح الطريقة التي يتم بها إنتاج سلاسل أدوات SaberMod. لقد اتصلت ببعض المطورين toolchain لطرح بعض الأسئلة.

إذا كنت تستطيع وصف SaberMod بكلمة واحدة ، فماذا سيكون ذلك ولماذا؟

جو (frap129) : التحسين. أقول هذا لأنه هدفنا (فريق SaberMod) الرئيسي ، وليس بالضرورة السرعة. على الرغم من أن التحسين يمكن أن يوفر قدراً كبيراً من الأداء وزيادة السرعة ، إلا أنه يمكن أيضًا القيام بأشياء مثل تقليص الكود أو إضافة تعديلات معينة تسمح باستخدام أفضل لجهاز الجهاز.

مجموعة الأدوات ليست سهلة التطوير بشكل خاص. هل يمكن أن تخبرني ما هي اللغات والأدوات اللازمة لتجميع مشروع مثل SaberMod؟

Joe : هناك حاجة إلى الكثير من البرامج قبل إنشاء أداة سلسلة ، تمامًا مثل Android. أشياء مثل bison و libpython-dev ، هي البرامج التي تراها فقط في دليل حول إعداد آلة إنشاء لتجميع ROM ثم نسيانها. كما هو الحال مع Android ، هناك حاجة إلى العديد من مشاريع repos والمشروعات ، والرمز الخليجي الأساسي و BinUtils و GDB و MPFR و MPC هي الحد الأدنى ، لكن بالنسبة للميزات والأداء الإضافي ، نضيف مشاريع ومكتبات أخرى مثل GMP و CLooG و ISL و OSL و وبيثون. قد يبدو هذا كله مثل الهراء ، ولكن فكر في هذه الأشياء مثل المجلد الخارجي في مصدر بناء Android ، والأشياء الموجودة في الخلفية التي تجعله يعمل.

Adin (YoshiShaPow) : بالنسبة إلى اللغات ، لا يتطلب التطوير الطلاقة الكاملة لأي لغة ترميز (على الرغم من أنها تساعد كثيرًا بالتأكيد). يمكن فقط معرفة بنية التعليمات البرمجية وبناء الجملة الأساسي مساعدة شخص ما في إنتاج عمل رائع!

هل يمكن أن تخبرنا لماذا اخترت الأدوات؟ وما هو أصعب موقف واجهته حتى الآن؟

بول : في البداية كنت مهتمًا بسلسلة أدوات Linaro ، لكنني وجدت أن هناك عددًا قليلاً من الأخطاء التي لم تكن موجودة في مجموعات أدوات AOSP. لذلك تم اتخاذ القرار لإنشاء سلسلة أدوات جديدة تعتمد بشكل صارم على GNU GCC ، ومصادر سلسلة أدوات AOSP ، مع تصحيحات Linaro ROM لتحسينات jellybean. هكذا ولد صابر مود. تم إجراء المزيد من التعديلات في مجموعات الأدوات ومصدر نظام android في السنوات التالية. أصعب شيء هو جعل سلاسل الأدوات تتشابه مع طريقة عمل AOSP ، ومعرفة ما هي إصدارات أدوات غنو (binutils ، gdb وما إلى ذلك) التي كانت ضرورية لجعل سلاسل الأدوات مترجمة بشكل صحيح.

SaberMod ليس المشروع الوحيد الذي تعمل عليه. هل يمكن أن تخبرنا شيئًا عن Hyper Toolchains؟

Joe : Hyper Toolchains كانت في الأصل مجرد صفحة قمت بإنشائها على GitHub للمساعدة في تنظيم سلاسل الأدوات الخاصة بي ، بحيث لا يتم تشويشها ورميها مع بقية مواقع إعادة الشراء الخاصة بي ، ولكن بعد أن بدأت العبث مع سلاسل الأدوات أكثر وأكثر ، انتهى الأمر بصنع الأشياء التي كانت مختلفة تمامًا عن أدوات SaberMod القياسية أو Linaro أو AOSP GCC. أدى مزج جوانب Linaro و SaberMod إلى توسيع نطاق الأشياء التي يمكن للمطورين القيام بها فقط باستخدام سلاسل الأدوات. هذا هو الوقت الذي قررت فيه إنشاء سلسلة رسائل ، بحيث يمكن لـ devs التحكم بشكل أكبر في سرعة وسلاسة مشاريعهم ، وليس فقط سرعة SaberMod واستجابتها أو نعومة Linaro.

تم تطوير SaberMod و Hyper Toolchains بواسطة فريق من المطورين. هل يمكنك أن تخبرنا قليلاً عن أنفسكم؟

بول : اهتمامي في android بدأ بـ G1 قبل 4 سنوات تقريبًا. لم يكن لدي أي خبرة في الترميز. كنت مهتمًا بمصدر مفتوح ، لكن لم يكن لدي أي فكرة من أين أبدأ بصنع ROM أو kernel أو أي شيء في هذا الشأن. لقد بدأت بتجربة استخدام البرمجة النصية للباش android for apps2sdext الأصلي بناءً على عمل مطورين من firerat. سمح ذلك بتخزين أكبر للتطبيقات التي كانت محدودة للغاية في ذلك الوقت (500 ميجابايت للنظام والتطبيقات). بعد ذلك واصلت هذا الأمر مع Evo shift 4g لأعلى حتى جهاز Nexus 7 عندما لم تعد هناك حاجة إلى التعديل من قيود التخزين. لقد بدأت أيضًا تطوير kernel مع Evo Shift 4G من خلال تضمين برامج جدولة القرص الأخرى مثل BFS التي لم يقم بها أي شخص آخر للجهاز في ذلك الوقت. واصلت تطوير kernel إلى Nexus 7. لكن تطوير kernel الخاص بي لا يزال منخفضًا بخلاف تعديل الأشياء هنا وهناك لجعل kernels تتوافق مع أدوات SaberMod والأدوات المحسنة. أنا أملك حاليًا جهاز Nexus 5.

جو : حسنًا ، لقد بدأت العمل على تطوير مواد منذ أكثر من عامين بقليل من الخبرة في الترميز أو Linux أو Android. عندما كنت مراهقًا قام بالترقية من جهاز iPod القديم المكسور إلى الجيل الأول الجديد المتميز Nexus 7 ، قررت أن أتجول مع Android قدر المستطاع ، وأجمع في نهاية المطاف تصميماتي الليلية الخاصة مع التطبيقات والبرامج النصية وإضافات التعديل. بعد فترة توقفت عند تحطيم جهاز Nexus 7 الخاص بي بشكل مأساوي (تمزق في القطع). بمجرد أن قمت بحفظ ما يكفي للحصول على GS3 مستعمل ، قمت بتنزيل أحدث مصدر وبدأت العمل مع مصدر ROM وبدأت في إنشاء الكثير من البرامج على جهاز الكمبيوتر الخاص بي أيضًا. حصلت مؤخرًا على OnePlus One ، مما جعل التطوير أسهل كثيرًا ومنحني المزيد من الحافز.

Adin : تم إنشاء أول مشروع يعمل بنظام Android خلال فترة ارتجاجي وخرجت من المدرسة في أبريل 2014. عندما حصلت أخيرًا على موافق على التواجد في مجال الإلكترونيات ، قررت تجربة مشروع android وانتهى بي الأمر بتخصيص kernel for the Moto G. لم يكن لدي أي علم بالتشفير ولينكس في ذلك الوقت. يقول بعض الناس أنه من الجنون أن يبلغ الطفل من العمر 15 عامًا القيام بهذه الأشياء ، لكني أرى أن ذلك دافع للسعي نحو الأفضل. مع ذلك ، أنشأنا أنا وجو سلسلة من TGM-Hybrid Kernels. يمكنني أيضًا حل مكعب روبيك 3 × 3 في 15 ثانية في المتوسط. برنامج التشغيل اليومي الحالي هو برنامج OnePlus One.

شكرا لك على وقتك وحظا سعيدا في مشاريعك!

يمكن العثور على أدوات SaberMod و Hyper Tool على GitLab. تأكد من إلقاء نظرة خاطفة عليها إذا كنت تخطط لإصدار ROM مخصص. ما هي سلسلة الأدوات المفضلة لديك ولماذا؟ شارك أفكارك في التعليقات أدناه.