قد يبدو إنشاء نسختك الخاصة من Android بمثابة مهمة مخصصة للمطورين ذوي الخبرة العالية، ولكن الحقيقة هي أنه مع التحضير المناسب وبعض الصبر، يمكن لأي شخص لديه المعرفة الأساسية البدء في إنشاء ROM مخصص. سواء كنت تحاول تعديل ميزات النظام، أو إطالة عمر الجهاز، أو ببساطة التحدي الفني، فإن بناء Android يعد تجربة مجزية وتعليمية للغاية.
في هذا الدليل التفصيلي سوف نشرح العملية بأكملها من الصفر.:من كيفية إعداد بيئة التطوير الخاصة بك إلى خطوات تجميع نظام التشغيل على جهاز معين. سنستخدم أفضل المصادر المتاحة لهذا الموضوع: وثائق مشروع Android مفتوح المصدر (AOSP) الرسمية، والتجارب الشخصية المنشورة على GitHub من قبل المستخدمين الخبراء، والأدوات التي تجعل العملية أسهل.
ما الذي تحتاجه قبل البدء في بناء نسختك الخاصة من Android؟
قبل البدء، من الضروري توضيح أن تجميع Android إنه ليس شيئًا يتم إنجازه في خمس دقائق. إنها تتطلب تحضيرًا جيدًا وبعض الأدوات الأساسية. وبالطبع، إذا كنت منظمًا واتبعت الخطوات بشكل صحيح، فإن النتيجة ستكون تستحق العناء.
- جهاز كمبيوتر يعمل بنظام لينكس 64 بت، ويفضل أن يكون به ذاكرة وصول عشوائي (RAM) بحجم 16 جيجابايت على الأقل ومساحة خالية كبيرة على القرص (أكثر من 100 جيجابايت لتكون آمنًا).
- جافا (JDK)، في الإصدار الموصى به لإصدار Android الذي تنوي تجميعه. تتطلب الإصدارات الأقدم مثل Android 8.0 إصدارًا محددًا من Java للعمل بشكل صحيح.
- أدوات مثل Git وccache وPython وسيكون ذلك ضروريًا أيضًا أثناء العملية.
- أدوات SDK ومنصة Android، مثل ADB (Android Debug Bridge)، والذي يمكنك تثبيته من مستودعات التوزيعة الخاصة بك أو تنزيله من الموقع الرسمي.
إعداد البيئة الأولية عند بناء إصدار Android الخاص بك
بمجرد أن يصبح نظامك جاهزًا، فإن الخطوة الأولى هي تكوين بيئة البناء الخاصة بك. للقيام بذلك، يقترح AOSP استخدام البرنامج النصي المسمى envsetup.sh
. يقوم هذا البرنامج النصي باستيراد العديد من الأوامر المفيدة ويقوم بإعداد البيئة للعمل مع كود Android.
من الدليل الجذر لكود المصدر الذي قمت بتنزيله، قم بتشغيل الأمر التالي:
source build/envsetup.sh
يجب القيام بهذه الخطوة في كل محطة طرفية جديدة تفتحها.، نظرًا لأن البرنامج النصي يقوم بتكوين المتغيرات الحرجة التي ستكون ضرورية طوال العملية.
حدد هدف البناء
قبل تجميع أي شيء، عليك إخبار النظام ما هو الجهاز الذي ستقوم بالتجميع له؟. يُعرف هذا باسم اختيار "الهدف". للقيام بذلك، استخدم الأمر lunch
، متبوعًا بسلسلة تحدد المنتج والتكوين ومتغير البناء.
مثال على الاستخدام النموذجي للغداء:
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
يؤدي هذا إلى تحديد جهاز محاكي بهندسة x86_64، وهو مثالي للاختبار الأولي.
اختياريا يمكنك استخدام:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
سيوضح لك هذا الإعدادات التي قمت بتحديدها حاليًا للتأكد من صحتها.
متغيرات التجميع: المستخدم، و userdebug، و eng
يمكن أن يحتوي جزء أمر الغداء الذي يحدد المتغير على ثلاث قيم:
- مستخدم: إصدار موجه للإنتاج، بدون الوصول إلى الجذر أو أدوات التصحيح.
- تصحيح أخطاء المستخدم: مماثل للإصدار السابق ولكن مع تفعيل أدوات التصحيح. مثالي للمطورين.
- الإنجليزية: متغير للتطوير الداخلي. أسرع في التجميع وأقل تحسينًا.
تنزيل الكود المصدري
يعتبر كود مصدر Android ضخمًا. يتم تنزيله باستخدام أداة تسمى repo
. على سبيل المثال، لتنزيل كود LineageOS 17.1، يجب عليك تشغيل الأمر التالي:
repo init -u https://github.com/LineageOS/android.git -b lineage-17.1
repo sync
قد تستغرق هذه الخطوة ساعات، اعتمادًا على اتصالك بالإنترنت. بالإضافة إلى ذلك، قد يتعطل البرنامج أحيانًا، لذا إذا حدث ذلك، فما عليك سوى إعادة تشغيله. repo sync
حتى ينتهي الأمر.
تثبيت الكتل الملكية
لتجميع ROM لجهاز معين، ستحتاج إلى كتل خاصة إذا لم يصدر المصنع كافة التعليمات البرمجية. هذه الكتل عبارة عن ملفات ثنائية تحتوي على وظائف خاصة بالأجهزة.
المصدر الشائع للكتل هو مستودع الدمى المتحركة على GitHub. يمكنك تنزيلها يدويًا باستخدام:
mkdir -p vendor/motorola
cd vendor
git clone https://github.com/TheMuppets/proprietary_vendor_motorola motorola
تهيئة البيئة للجهاز
بمجرد تنزيل العناصر، قم بتشغيلها مرة أخرى:
breakfast evert
حيث ذبح سيكون الاسم الداخلي لجهازك (في هذه الحالة، Moto G6 Plus).
تحسين العملية باستخدام ccache
لتقليل وقت التجميع في المستقبل، يمكنك تمكين ccache:
export USE_CCACHE=1
export CCACHE_EXEC=/usr/bin/ccache
ccache -M 50G
ccache -o compression=true
تجميع أندرويد
مع كل شيء جاهز، حان وقت التجميع. قم بتشغيل الأمر:
brunch evert
سيؤدي هذا إلى بدء عملية التجميع. قد يستغرق الأمر عدة ساعات اعتمادًا على جهازك.. من المستحسن أن يكون لديك 16 جيجابايت من ذاكرة الوصول العشوائي على الأقل.
يتم عادةً العثور على مخرجات التجميع في:
out/target/product/evert/
ستجد هناك ملف .zip مع ROM جاهزًا للتثبيت على جهازك.
أدوات اختيارية: ScriBt
خيار مثير للاهتمام لأولئك الذين يتطلعون إلى تسهيل العملية هو استخدام سكريبت، وهي أداة تقوم بأتمتة أجزاء من تطوير ROM المخصص.
يسمح ScriBt بـ:
- إنشاء مستودعات البيانات ومزامنتها
- تثبيت التبعيات الضرورية تلقائيًا مثل Java وADB
- إنشاء بيئة عمل أكثر توجيهًا للمطورين الجدد
ومع ذلك، يتطلب ScriBt معرفة مسبقة معينة والرمز المصدر للجهاز. ولكن إذا كنت تلبي المتطلبات، يمكن أن يوفر لك ساعات عديدة.
تجميع لأجهزة توجيه الخيوط على نظام Android
هناك حالة محددة أخرى تم تناولها في الوثائق الرسمية وهي بناء جهاز توجيه حدودي يعتمد على الخيوط. للقيام بذلك، ستحتاج إلى إعداد HAL (طبقة تجريد الأجهزة) الخاصة بك والحصول على إمكانية الوصول إلى كود مصدر شريحة شبكة Thread.
على أجهزة مثل Cuttlefish (محاكي Android)، يمكنك بالفعل اختبار هذه الميزات باستخدام عمليات المحاكاة والأدوات مثل ot-cli-ftd
y ot-ctl
، والتي تسمح لك بالتحكم في الراديو افتراضيًا.
كما يوضح بالتفصيل كيفية تخصيص وحدة APEX للعمل مع أجهزة راديو Thread الحقيقية باستخدام UART أو SPI أو المقابس. هذا الجزء أكثر تقدمًا ويتطلب تعديل ملفات XML والأذونات ونصوص تهيئة النظام.
الاختبار والشهادة
بمجرد حصولك على ROM مجمع، يمكنك التحقق من وظائفه باستخدام اختبارات مخصصة واختبارات التوافق الرسمية:
- خدمة حركة المرور: التحقق من تشغيل HAL.
- CTS: التحقق من أن واجهات برمجة التطبيقات تحترم قواعد نظام Android.
- اندماج: اختبار وظيفي على النظام الكامل.
يمكنك أيضًا استخدام التطبيق تطبيق ThreadNetworkDemo لإجراء اختبارات بصرية في بيئة رسومية.
قم بتجميعها بنفسك نسخة أندرويد إنها عملية صعبة ولكنها مثرية للغاية. بدءًا من إعداد البيئة الخاصة بك واختيار الأجهزة المستهدفة وتنزيل الكود المصدر الخاص بك، وحتى تخصيص تكوينات محددة أو استخدام أدوات مثل ScriBt أو ccache، فإن كل خطوة مهمة.
على الرغم من أن الأمر يتطلب الوقت والانضباط واتباع العديد من الخطوات الفنية، إلا أنه مع التوجيه الجيد يمكنك تحقيق نتائج مذهلة حتى لو لم تكن خبيرًا. والجزء الأفضل: سيكون لديك ذاكرة ROM مصممة خصيصًا لتناسب أذواقك واحتياجاتك. قم بمشاركة هذا الدليل حتى يتمكن المزيد من المستخدمين من معرفة كيفية تجميع إصدارهم الخاص من Android..