اتبع هذه التعليمات لبدء إنشاء Android.
تهيئة البيئة
قم بتهيئة البيئة باستخدام البرنامج النصي envsetup.sh
:
source build/envsetup.sh
أو
. build/envsetup.sh
راجع البرنامج النصي على Platform/build/envsetup.sh للحصول على أوصاف الأوامر ذات الصلة، بما في ذلك الغداء لتحديد أهداف الأجهزة والتاباس لإنشاء تطبيقات غير مجمعة، مثل تطبيق التلفزيون المرجعي .
تحتاج إلى إعادة إصدار هذا الأمر بعد كل repo sync
لالتقاط أي تغييرات على هذا البرنامج النصي. لاحظ أن استبدال source
بـ .
(نقطة واحدة) تحفظ بضعة أحرف، والنموذج القصير أكثر شيوعًا في التوثيق.
يقوم البرنامج النصي envsetup.sh
باستيراد العديد من الأوامر التي تمكنك من العمل باستخدام كود مصدر Android، بما في ذلك الأوامر المستخدمة في هذا التمرين.
لرؤية القائمة الكاملة للأوامر المتاحة، قم بتشغيل:
hmm
اختيار الهدف
غداء
اختر الهدف الذي تريد بناءه مع lunch
. lunch product_name - build_variant
product_name باعتباره المنتج المراد إنشاؤه، و build_variant باعتباره المتغير المراد إنشاؤه، ويخزن تلك التحديدات في البيئة ليتم قراءتها من خلال الاستدعاءات اللاحقة لـ m
والأوامر المماثلة الأخرى.
يمكن تمرير التكوين الدقيق كوسيطة. على سبيل المثال، يشير الأمر التالي إلى إنشاء كامل للمحاكي، مع تمكين كافة عمليات تصحيح الأخطاء:
lunch aosp_arm-eng
إذا تم التشغيل بدون وسائط، فسيطالبك lunch
باختيار هدف من القائمة، لكن لاحظ أن القائمة لا تتضمن كل الاحتمالات. راجع تحديد إصدار الجهاز لتكوينات الإصدار لجميع الأجهزة المدعومة في AOSP، أو تحدث مع الأشخاص في فريقك حول الغداء الصحيح للجهاز الذي تعمل عليه.
جميع أهداف البناء تأخذ النموذج BUILD-BUILDTYPE
، حيث BUILD
هو اسم رمزي يشير إلى مجموعة ميزات معينة. BUILDTYPE
هو واحد مما يلي.
نوع البناء | يستخدم |
---|---|
مستخدم | وصول محدود؛ مناسبة للإنتاج |
com.userdebug | مثل المستخدم ولكن مع إمكانية الوصول إلى الجذر وتصحيح الأخطاء؛ قريب جدًا من أداء الإنتاج |
م | تكوين التطوير مع وقت بناء أسرع؛ الأكثر ملاءمة للتطوير اليومي |
يجب أن يتصرف إصدار userdebug
بنفس سلوك إصدار user
، مع القدرة على تمكين تصحيح الأخطاء الإضافي الذي ينتهك عادةً نموذج أمان النظام الأساسي. وهذا يجعل تصميم userdebug
جيدًا لفهم الأداء والقوة التي يستخدمها الإصدار. عند التطوير باستخدام الإصدار userdebug
، اتبع إرشادات userdebug .
يعطي البناء eng
الأولوية للإنتاجية الهندسية للمهندسين الذين يعملون على النظام الأساسي. يقوم التصميم eng
بإيقاف تشغيل التحسينات المختلفة المستخدمة لزيادة أداء وقت التشغيل. بخلاف ذلك، فإن الإصدار eng
يشبه إلى حد كبير إصدار user
وإصدار userdebug
بحيث يتمكن مطورو الأجهزة من رؤية كيفية تصرف التعليمات البرمجية في تلك البيئات.
لرؤية إعدادات الغداء الحالية، قم بتشغيل الأمر:
echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
لمزيد من المعلومات حول إنشاء الأجهزة الفعلية وتشغيلها، راجع الأجهزة الوامضة .
تاباس
يقوم أمر tapas
بتكوين إنشاء التطبيقات غير المجمعة. فهو يختار التطبيقات الفردية التي سيتم إنشاؤها بواسطة نظام بناء Android. على عكس lunch
، لا يتطلب tapas
بناء صور لجهاز.
قم بتشغيل tapas help
للحصول على مزيد من المعلومات حول الأمر.
بناء الكود
يعد هذا القسم ملخصًا سريعًا لضمان اكتمال الإعداد.
بناء كل شيء مع m
. يمكن لـ m
التعامل مع المهام المتوازية باستخدام وسيطة -jN
. إذا لم تقم بتوفير الوسيطة -j
، فسيقوم نظام الإنشاء تلقائيًا بتحديد عدد المهام المتوازية الذي يعتقد أنه الأمثل لنظامك.
m
كما هو موضح أعلاه، يمكنك إنشاء وحدات نمطية محددة بدلاً من صورة الجهاز الكاملة عن طريق إدراج أسمائها في سطر الأوامر m
الخاص بك. بالإضافة إلى ذلك، يوفر m
بعض الأهداف الزائفة لأغراض خاصة. بعض الأمثلة هي:
-
droid
-m droid
هو البناء العادي. هذا الهدف موجود هنا لأن الهدف الافتراضي يتطلب اسمًا. -
all
-m all
يبني كل ما يفعلهm droid
، بالإضافة إلى كل شيء لا يحتوي على علامةdroid
. يقوم خادم الإنشاء بتشغيل هذا للتأكد من إنشاء كل شيء موجود في الشجرة ويحتوي على ملفAndroid.mk
. -
m
- يبني من أعلى الشجرة. يعد هذا مفيدًا لأنه يمكنك تشغيلmake
من داخل الدلائل الفرعية. إذا كان لديك مجموعة متغيرات البيئةTOP
، فإنه يستخدم ذلك. إذا لم تقم بذلك، فإنه يبحث عن الشجرة من الدليل الحالي، ويحاول العثور على الجزء العلوي من الشجرة. يمكنك إما إنشاء شجرة التعليمات البرمجية المصدر بأكملها عن طريق تشغيلm
بدون وسيطات أو إنشاء أهداف محددة عن طريق تحديد أسمائها. -
mma
- يبني كافة الوحدات الموجودة في الدليل الحالي وتبعياتها. -
mmma
- يبني كافة الوحدات الموجودة في الدلائل المتوفرة وتبعياتها. -
croot
-cd
إلى أعلى الشجرة. -
clean
-m clean
يحذف كافة ملفات الإخراج والملفات الوسيطة لهذا التكوين. هذا هو نفسrm -rf out/
.
قم بتشغيل m help
لمعرفة ما m
الأهداف الزائفة الأخرى.
تشغيل البناء
يمكنك إما تشغيل الإصدار الخاص بك على المحاكي أو تثبيته على الجهاز. نظرًا لأنك قمت بالفعل بتحديد هدف البناء الخاص بك مع lunch
، فمن غير المرجح أن يعمل على هدف مختلف عما تم تصميمه من أجله.
وامض مع Fastboot
لفلاش جهاز، استخدم fastboot
، والذي يجب تضمينه في المسار الخاص بك بعد نجاح عملية الإنشاء. راجع وميض الجهاز للحصول على التعليمات.
محاكاة جهاز أندرويد
تتم إضافة المحاكي إلى المسار الخاص بك تلقائيًا من خلال عملية الإنشاء. لتشغيل المحاكي اكتب:
emulator
فهم بناء بصمات الأصابع
لتتبع المشكلات المرتبطة بإصدار Android معين والإبلاغ عنها، من المهم فهم بصمة الإصدار. بصمة الإصدار عبارة عن سلسلة فريدة يمكن قراءتها بواسطة الإنسان وتحتوي على معلومات الشركة المصنعة الصادرة لكل إصدار. راجع وصف FINGERPRINT ضمن قسم Build Parameters في مستند تعريف توافق Android (CDD) للحصول على الصيغة الدقيقة.
تمثل بصمة البناء تنفيذًا ومراجعة معينة لنظام Android. يسمح هذا المفتاح الفريد لمطوري التطبيقات وغيرهم بالإبلاغ عن المشكلات المتعلقة بإصدارات محددة من البرامج الثابتة. راجع الإبلاغ عن الأخطاء لعملية الإبلاغ عن مشكلات Android.
تتضمن بصمة البناء جميع تفاصيل تنفيذ Android:
- واجهات برمجة التطبيقات: Android والأصلية، بالإضافة إلى سلوكيات واجهة برمجة التطبيقات الناعمة
- واجهة برمجة التطبيقات الأساسية وبعض سلوكيات واجهة مستخدم النظام
- متطلبات التوافق والأمان المحددة في CDD
- مواصفات المنتج وإعدادات ميزات الاستخدام التي تستخدمها التطبيقات لاستهداف الأجهزة التي تلبي المتطلبات المتوقعة
- تنفيذ مكونات الأجهزة والبرامج
راجع CDD للحصول على التفاصيل الكاملة وإضافة جهاز جديد للحصول على إرشادات حول إنشاء جهاز Android جديد تمامًا.
استكشاف أخطاء البناء الشائعة وإصلاحها
نسخة جافا خاطئة
إذا كنت تحاول إنشاء إصدار من Android غير متوافق مع إصدار Java لديك، make
بالإجهاض برسالة مثل:
************************************************************ 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 . تأكد من اتباع الخطوات الواردة في إعداد البيئة واختيار الهدف .
- يظهر JDK آخر تم تثبيته مسبقًا في المسار الخاص بك. قم بإضافة JDK الصحيح إلى بداية المسار الخاص بك أو قم بإزالة JDK الذي به مشكلة.
لا يوجد إذن USB
بشكل افتراضي في معظم أنظمة Linux، لا يمكن للمستخدمين غير المميزين الوصول إلى منافذ USB. إذا رأيت خطأ رفض الإذن، فاتبع الإرشادات الواردة في تكوين الوصول إلى USB .
إذا كان ADB قيد التشغيل بالفعل ولا يمكنه الاتصال بالجهاز بعد إعداد هذه القواعد، فيمكنك إيقافه باستخدام adb kill-server
. يؤدي هذا الأمر إلى إعادة تشغيل ADB بالتكوين الجديد.