Google متعهد به پیشبرد برابری نژادی برای جوامع سیاه است. ببینید چگونه.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

ساخت آندروید

برای شروع ساخت Android ، این دستورالعمل ها را دنبال کنید.

تنظیم محیط

در ابتدا محیط را با اسکریپت envsetup.sh کنید:

source build/envsetup.sh

یا

. build/envsetup.sh

برای توصیف دستورات مربوطه ، از جمله lunch برای انتخاب اهداف دستگاه و tapas برای ساختن برنامه های بدون بسته ، مانند برنامه مرجع تلویزیون ، اسکریپت را در platform / build / envsetup.sh مشاهده کنید.

برای انتخاب هرگونه تغییر در آن اسکریپت ، باید پس از هر بار repo sync مجدد ، این دستور را دوباره صادر کنید. توجه داشته باشید که جایگزین source با . (یک نقطه واحد) چند کاراکتر را ذخیره می کند ، و فرم کوتاه معمولاً در اسناد استفاده می شود.

اسکریپت envsetup.sh دستورات متعددی را وارد می کند که به شما امکان می دهد با کد منبع Android از جمله دستورات استفاده شده در این تمرین کار کنید. در اینجا چند مثال مهم فرمان وجود دارد:

  • lunch - lunch product_name - build_variant product_name به عنوان محصولی برای ساختن انتخاب می کند ، و build_variant به عنوان نوعی برای ساخت انتخاب می کند ، و آن دسته از انتخاب ها را در محیط ذخیره می کند تا با build_variant های بعدی m و سایر دستورات مشابه خوانده شود.
  • m - ساختمانی از بالای درخت. این بسیار مفید است زیرا شما می توانید اجرا make از درون زیرشاخه. اگر مجموعه متغیر محیط TOP را دارید ، از آن استفاده می کند. اگر این کار را نکنید ، به نظر می رسد درخت از فهرست موجود ، سعی در یافتن قسمت بالای درخت دارد. می توانید با اجرای m بدون استدلال ، کل درخت کد منبع را بسازید یا با مشخص کردن نام آنها ، اهداف خاصی بسازید.
  • mma - تمام ماژول های موجود در فهرست فعلی و وابستگی آنها را می سازد.
  • mmma - تمام ماژول ها را در دایرکتوری های عرضه شده و وابستگی های آنها ایجاد می کند.
  • croot - cd به بالای درخت.

برای دیدن لیست کامل دستورات موجود ، اجرا کنید:

hmm

یک هدف را انتخاب کنید

کدام lunch برای ساختن lunch . پیکربندی دقیق می تواند به عنوان یک آرگومان منتقل شود. به عنوان مثال ، دستور زیر به ساخت کاملی برای شبیه ساز اشاره دارد و همه اشکال زدایی فعال است:

lunch aosp_arm-eng

اگر بدون استدلال اجرا شود ، lunch از شما خواسته می شود از منو هدف مورد نظر خود را انتخاب کنید. به انتخاب دستگاه ساخت برای تنظیمات ساخت همه دستگاههای موجود مراجعه کنید.

تمام اهداف BUILD-BUILDTYPE از فرم BUILD-BUILDTYPE ، جایی که BUILD یک کد نام تجاری است که به ترکیب ویژگی خاص آن اشاره دارد. BUILDTYPE یکی از موارد زیر است.

سازنده استفاده کنید
کاربر دسترسی محدود؛ مناسب برای تولید
userdebug مانند کاربر اما با قابلیت دسترسی ریشه و اشکال زدایی؛ برای اشکال زدایی ترجیح داده است
موتور پیکربندی توسعه با ابزارهای اشکال زدایی اضافی

ساخت userdebug باید همانند کاربر سازنده رفتار کند ، با این امکان وجود دارد که اشکال زدایی اضافی را که معمولاً مدل امنیتی سکو را نقض می کند ، ایجاد کند. این امر باعث می شود که کاربرپرداخت برای آزمایشات کاربر با قابلیت تشخیص بیشتر ، از مزیت خوبی برخوردار باشد. هنگام توسعه با ساخت userdebug ، دستورالعمل های استفاده کاربر را دنبال کنید.

مهندسین ساخت و ساز در اولویت کارایی مهندسی برای مهندسینی است که روی این سکو کار می کنند. eng build بهینه سازی های مختلفی را برای ارائه یک تجربه کاربری خوب خاموش می کند. در غیر این صورت ، eng eng رفتاری مشابه کاربر و کاربر ایجاد کننده دارد ، به گونه ای که توسعه دهندگان دستگاه می توانند ببینند که کد در آن محیط چگونه رفتار می کند.

برای اطلاعات بیشتر در مورد ساخت و کار با سخت افزار واقعی ، به Running Builds مراجعه کنید.

ساخت کد

این بخش خلاصه سریع است تا اطمینان حاصل شود که تنظیم کامل است.

همه چیز را با m . m می تواند وظایف موازی را با یک آرگومان -jN دهد. اگر یک استدلال -j ارائه ندهید ، سیستم ساخت اتوماتیک یک تعداد کار موازی را انتخاب می کند که فکر می کند برای سیستم شما بهینه است.

m

همانطور که در بالا توضیح داده شد ، می توانید با قرار دادن نام آنها در خط فرمان m خود ، به جای تصویر کامل دستگاه ، ماژول های خاصی بسازید. علاوه بر این ، m مقادیر شبه ویژه ای را برای اهداف خاص ارائه می دهد. برخی از نمونه ها عبارتند از:

  • droid - m droid ساخت طبیعی است. این هدف اینجاست زیرا هدف پیش فرض به یک نام نیاز دارد.
  • all - m all چیزهایی را که m droid انجام می دهد ایجاد می کند ، به علاوه همه چیزهایی که برچسب droid . سرور build این کار را انجام می دهد تا مطمئن شود هر آنچه در درخت است و دارای یک فایل Android.mk است ساخته شده است.
  • clean - m clean تمام فایلهای خروجی و واسطه را برای این پیکربندی حذف می کند. این همان rm -rf out/ .

راهنمایی m help برای دیدن چیزهای دیگر pseudotargets m فراهم می کند.

آن را اجرا کنید!

می توانید ساخت خود را بر روی یک شبیه ساز اجرا کنید یا آن را بر روی یک دستگاه فلش کنید. از آنجا که شما قبلاً هدف ساخت خود را با lunch اید ، بعید است بتوانید با هدف متفاوتی نسبت به آنچه برای آن ساخته شده است اجرا شود.

چشمک زن با fastboot

برای چشمک زدن به دستگاه ، از fastboot استفاده کنید که باید پس از ساخت موفق در مسیر شما قرار بگیرد. برای راهنمایی ، به یک دستگاه چشمک زن مراجعه کنید.

شبیه سازی یک دستگاه Android

شبیه ساز با فرآیند ساخت به طور خودکار به مسیر شما اضافه می شود. برای اجرای شبیه ساز ، نوع:

emulator

عیب یابی خطاهای معمول ساخت

نسخه جاوا اشتباه است

اگر شما در حال تلاش برای ساخت یک نسخه از آندروید که مغایر با نسخه خود را از جاوا، 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
************************************************************

در اینجا دلایل و راه حل های احتمالی آورده شده است:

پایتون نسخه 3

Repo بر اساس قابلیت های خاص از Python 2.x ساخته شده است و با پایتون 3 ناسازگار است. برای استفاده از Repo ، Python 2.x را نصب کنید:

apt-get install python

پرونده پرونده غیر حساس

اگر در حال ایجاد سیستم فایل HFS در macOS هستید ، ممکن است با خطایی مانند:

************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************

دستورالعمل های ایجاد تصویر دیسک حساس به مورد را دنبال کنید.

اجازه USB ندارید

به طور پیش فرض در بیشتر سیستم های لینوکس ، کاربران غیر شخصی نمی توانند به درگاه های USB دسترسی داشته باشند. اگر خطای محروم از اجازه را دیدید ، در پیکربندی دسترسی USB دستورالعمل ها را دنبال کنید.

اگر [adb] (adb.md) قبلاً اجرا شده بود و نمی تواند بعد از تنظیم آن قوانین به دستگاه وصل شود ، می توانید آن را با adb kill-server . این دستور باعث می شود adb با پیکربندی جدید مجدداً راه اندازی شود.