اتّبِع التعليمات الواردة في هذه الصفحة لإنشاء 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
************************************************************
في ما يلي الأسباب والحلول المحتملة:
- تعذّر تثبيت JDK الصحيح كما هو موضّح في أقسام JDK ضمن الإعداد لتطوير AOSP (الإصدارات من 2.3 إلى 8.0) .
- يظهر JDK آخر تم تثبيته سابقًا في مسارك. أضِف JDK الصحيح في بداية المسار أو أزِل JDK الذي يسبب المشكلة.