بناء أندرويد

اتبع هذه التعليمات لبدء إنشاء 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 بالتكوين الجديد.