إنشاء إصدار Android

اتّبِع التعليمات الواردة في هذه الصفحة لإنشاء Android.

إعداد بيئة الإصدار

من داخل دليل العمل، شغِّل النص البرمجي envsetup.sh لإعداد بيئة الإنشاء:

source build/envsetup.sh

يستورد هذا النص البرمجي عدة أوامر تتيح لك العمل مع رمز المصدر لنظام Android، بما في ذلك الأوامر المستخدَمة في هذه الصفحة. للاطّلاع على مصدر النص البرمجي، يُرجى الرجوع إلى platform/build/envsetup.sh. لعرض المساعدة المضمّنة، اكتب hmm.

اختيار هدف

قبل إنشاء Android، يجب تحديد هدف لإنشائه. يمثّل الهدف المنصة المستهدفة التي يتم إنشاء التطبيق لها. لتحديد الهدف الذي تريد إنشاءه، استخدِم الأمر lunch متبوعًا بسلسلة تمثّل الهدف. على سبيل المثال:

lunch aosp_cf_x86_64_only_phone-aosp_current-userdebug

من المفترض أن يظهر لك ملخّص للهدف وبيئة الإصدار:

============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================

تتّبع السلسلة التي تمثّل الهدف التنسيق التالي:

lunch product_name-release_config-build_variant

مكوّنات هذه السلسلة هي:

  • product_name هو اسم المنتج الذي تريد إنشاءه، مثل aosp_cf_x86_64_only_phone أو aosp_husky. يمكن أن يتّبع product_name تنسيقًا خاصًا بجهازك، ولكن التنسيق الذي تستخدمه Google لأجهزتها يتضمّن المكوّنات التالية:

    • يشير aosp إلى "منصة Android المفتوحة المصدر".
    • (اختياري) يتم تضمين cf عندما يكون الهدف هو التشغيل داخل محاكي Cuttlefish.
    • البنية والأجهزة (الاسم الرمزي)، مثل x86_64_only_phone أو husky، وهو الاسم الرمزي لهاتف Pixel 8 Pro للاطّلاع على قائمة بالأسماء الرمزية لأجهزة Google، يُرجى الرجوع إلى الأسماء الرمزية للأجهزة.
  • تم ضبط release_config على إعداد إصدار، مثل إعداد إصدار التطوير المسمّى aosp_current. تحدّد إعدادات الإصدار ميزات معيّنة ورموزًا برمجية تقع خلف علامات تشغيل الميزات، ويتم تفعيلها أو إيقافها في إصدار معيّن. لمزيد من المعلومات حول إعدادات الإصدار، اطّلِع على ضبط قيم إطلاق علامات الميزات.

  • يمكن أن يكون الجزء build_variant من السلسلة إحدى القيم الثلاث في الجدول التالي:

    build_variant الوصف
    user يوفّر هذا النوع من الإصدار إمكانية وصول محدودة إلى الأمان وهو مناسب لما يلي:
    الإنتاج. userdebug يساعد تنويعة التصميم هذه مطوّري الأجهزة

    فهم أداء الإصدارات التي لا تزال قيد التطوير وقوتها عند التطوير باستخدام إصدار userdebug، اتّبِع إرشادات userdebug. ‫eng: تتضمّن تنويعة التصميم هذه مدّة تصميم أسرع وهي الأنسب للتطوير اليومي إذا لم يكن الأداء واستهلاك الطاقة مهمَّين بالنسبة إليك.

إذا شغّلت lunch بدون أي وسيطات، سيتم تقديم قائمة بالأهداف الشائعة. يمكنك أيضًا إنشاء سلاسل استهداف خاصة بك من خلال تجميع عناصر سلسلة الاستهداف باستخدام المعلومات الواردة في هذه الصفحة وأسماء الرموز التي تمثّل أجهزة Google معيّنة في أسماء رموز الأجهزة.

عرض الاستهداف الحالي

للاطّلاع على إعدادات الغداء الحالية، نفِّذ ما يلي:

$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"

إنشاء الرمز البرمجي

نفِّذ الأمر التالي لإنشاء هدفك. استنادًا إلى مواصفات محطة العمل، قد تستغرق عملية الإنشاء الأولى أقل من ساعة أو ما يصل إلى بضع ساعات. تستغرق عمليات الإنشاء اللاحقة وقتًا أقل بكثير.

m

يظهر ناتج عملية الإنشاء في $OUT_DIR. في حال إنشاء إصدارات مختلفة من التطبيق، سيظهر كل إصدار في $OUT_DIR.

ينشئ الأمر m من أعلى الشجرة، لذا يمكنك تشغيل m من داخل الدلائل الفرعية. إذا كان متغيّر البيئة TOP مضبوطًا، سيستخدم الأمر m هذا المتغيّر. إذا لم يتم ضبط TOP، يبحث الأمر m في الشجرة بدءًا من الدليل الحالي، محاولاً العثور على أعلى الشجرة.

يمكن للأمر m التعامل مع المهام المتوازية باستخدام الوسيطة -jN. إذا لم تقدّم وسيطة -j، سيختار نظام الإنشاء تلقائيًا عدد المهام المتوازية الذي يراه الأنسب لنظامك.

يمكنك إنشاء وحدات معيّنة بدلاً من صورة الجهاز الكاملة من خلال إدراج أسماء الوحدات في سطر الأوامر m. بالإضافة إلى ذلك، يوفّر الأمر m بعض الأهداف الوهمية، التي تُعرف باسم الأهداف. على سبيل المثال، لا ينشئ الأمر m nothing أي شيء، ولكنه يحلّل بنية الإصدار ويتحقّق من صحتها. للحصول على قائمة بالأهداف الصالحة، اكتب m help.

تحديد مشاكل أخطاء الإصدار وحلّها (الإصدار 17 من نظام التشغيل Android أو إصدار أحدث)

يحتوي هذا القسم على تعليمات للتعامل مع أخطاء القراءة فقط الناتجة عن محاولة تعديل قاعدة الرموز البرمجية للقراءة فقط في AOSP أثناء الإنشاء.

محاولة إنشاء نتائج تؤدي إلى حدوث أخطاء في نظام الملفات للقراءة فقط

أثناء الإنشاء، يكون مصدر شجرة AOSP للقراءة فقط. إذا حاول الإصدار الذي تستخدمه تعديل شجرة المصدر أثناء إعداد المنتج أو أي جزء آخر من عملية الإنشاء، قد تفشل عملية الإنشاء ويتم عرض أخطاء في نظام الملفات للقراءة فقط. يمكن استخدام هذه الخيارات لتغيير شجرة المصدر مؤقتًا إلى وضع القراءة والكتابة:

  • لتغيير شجرة المصدر بأكملها إلى وضع القراءة والكتابة أثناء الإنشاء، أضِف BUILD_BROKEN_SRC_DIR_IS_WRITABLE=true إلى بيئة الإنشاء.

  • لتغيير جزء من شجرة القراءة والكتابة أثناء الإنشاء، استخدِم BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ..."

    يجب أن تكون المسارات هي مسارات الأدلة التي يجب السماح بالكتابة فيها، بالنسبة إلى أعلى مساحة العمل.

تحديد مشاكل أخطاء الإصدار وحلّها (الإصدار 8.0 أو الإصدارات الأقدم)

إذا كنت بصدد إنشاء الإصدار 8 من AOSP أو إصدار أقدم، قد يتم إيقاف m عند مواجهة مشكلة في إصدار Java. على سبيل المثال، قد تتلقّى الرسالة التالية:

************************************************************
You are attempting to build with the incorrect version
of java.

Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.

Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************

في ما يلي الأسباب والحلول المحتملة: