اتبع هذه التعليمات لبدء إنشاء 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
هي واحدة مما يلي.
نوع البناء | يستخدم |
---|---|
مستخدم | وصول محدود؛ مناسبة للإنتاج |
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
. إذا لم تقدم وسيطة a -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
، والذي يجب تضمينه في مسارك بعد بناء ناجح. انظر وميض الجهاز للحصول على الإرشادات.
محاكاة جهاز Android
تتم إضافة المحاكي إلى مسارك تلقائيًا من خلال عملية الإنشاء. لتشغيل المحاكي ، اكتب:
emulator
فهم بناء بصمات الأصابع
لتتبع المشكلات المرتبطة ببنية Android معينة والإبلاغ عنها ، من المهم فهم بصمة الإصدار. بصمة الإصدار عبارة عن سلسلة فريدة يمكن للبشر قراءتها وتحتوي على معلومات الشركة المصنعة الصادرة لكل إصدار. راجع وصف FINGERPRINT داخل قسم معلمات الإنشاء في مستند تعريف توافق Android (CDD) للحصول على البنية الدقيقة.
تمثل بصمة البناء عملية تنفيذ ومراجعة خاصة لنظام Android. يسمح هذا المفتاح الفريد لمطوري التطبيقات وغيرهم بالإبلاغ عن المشكلات المتعلقة بإصدارات معينة من البرامج الثابتة. راجع الإبلاغ عن الأخطاء لعملية الإبلاغ عن مشكلات Android.
تضم بصمة الإصبع جميع تفاصيل تطبيق Android:
- واجهات برمجة التطبيقات: Android والسلوكيات الأصلية ، وكذلك سلوكيات واجهة برمجة التطبيقات اللينة
- Core API وبعض سلوك واجهة المستخدم للنظام
- متطلبات التوافق والأمن المحددة في العناية الواجبة بشأن العميل
- مواصفات المنتج وإعدادات ميزة الاستخدامات التي تستخدمها التطبيقات لاستهداف الأجهزة التي تلبي المتطلبات المتوقعة
- تطبيقات مكونات الأجهزة والبرامج
راجع 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 بالتكوين الجديد.