اتّبِع التعليمات الواردة في هذه الصفحة لإنشاء 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 بدون أي وسيطات، ستوفّر lunch قائمة بالأهداف الشائعة. لإنشاء سلاسل استهداف مخصّصة، ادمج عناصر سلسلة الاستهداف مع أسماء الرموز للأجهزة. للاطّلاع على قائمة بأسماء الرموز، يُرجى الانتقال إلى أسماء رموز الأجهزة.
عرض الهدف الحالي
للاطّلاع على إعدادات الغداء الحالية، نفِّذ ما يلي:
$ 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 للقراءة فقط. إذا حاول الإصدار الذي تستخدمه تعديل شجرة المصدر أثناء إعداد المنتج أو أي جزء آخر من عملية الإنشاء، قد تفشل عملية الإنشاء ويتم تسجيل أخطاء في نظام الملفات للقراءة فقط. يمكنك استخدام هذه الخيارات لتغيير شجرة المصدر مؤقتًا إلى وضع القراءة والكتابة:
لتغيير شجرة المصدر بأكملها إلى وضع القراءة والكتابة أثناء الإنشاء، أضِف
BUILD_BROKEN_SRC_DIR_IS_WRITABLE=trueإلى بيئة الإنشاء.لتغيير جزء من الشجرة إلى وضع القراءة والكتابة أثناء الإنشاء، استخدِم
BUILD_BROKEN_SRC_DIR_RW_ALLOWLIST="path1, path2, ...". يجب أن تكون المسارات هي مسارات الأدلة التي يجب السماح بالكتابة فيها، وذلك بالنسبة إلى أعلى مساحة العمل.
إصدار Java غير صحيح (الإصدار 8.0 من نظام التشغيل Android والإصدارات الأقدم)
إذا كنت تستخدم الإصدار 8.0 من نظام التشغيل Android (المستوى 26 من واجهة برمجة التطبيقات) أو إصدارًا أقدم، قد يتم إيقاف 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
************************************************************
في ما يلي الأسباب والحلول المحتملة:
- لم يتم تثبيت حزمة تطوير Java الصحيحة. لمزيد من المعلومات، يُرجى الاطّلاع على إعداد بيئة تطوير AOSP (الإصدارات من 2.3 إلى 8.0).
- يظهر JDK آخر تم تثبيته سابقًا في مسارك. أضِف JDK الصحيح في بداية المسار أو أزِل JDK الذي يسبب المشكلة.