در حال دانلود منبع

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

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

راه اندازی یک مشتری Repo

پس از نصب Repo Launcher ، کلاینت خود را برای دسترسی به مخزن منبع Android تنظیم کنید:

  1. یک دایرکتوری خالی برای نگهداری فایل های کاری خود ایجاد کنید. هر اسمی که دوست دارید بذارید:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. Git را با نام واقعی و آدرس ایمیل خود پیکربندی کنید. برای استفاده از ابزار بازبینی کد Gerrit، به آدرس ایمیلی نیاز دارید که با یک حساب Google ثبت شده مرتبط باشد. اطمینان حاصل کنید که این یک آدرس زنده است که می توانید پیام ها را دریافت کنید. نامی که در اینجا ارائه می‌کنید در اسناد ارسالی کد شما نشان داده می‌شود.

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. repo init را اجرا کنید تا آخرین نسخه Repo را با جدیدترین رفع اشکال آن دریافت کنید. شما باید یک URL برای مانیفست تعیین کنید، که مشخص می کند مخازن مختلف موجود در منبع Android در کجای فهرست کاری شما قرار می گیرند.

    repo init -u https://android.googlesource.com/platform/manifest
    

    برای بررسی شعبه اصلی:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    برای بررسی شاخه ای غیر از master ، آن را با -b مشخص کنید. برای فهرستی از شاخه‌ها، برچسب‌ها و ساخت‌های کد منبع را ببینید.

    برای پایتون 2

    برای پایتون 3

    اگر پیام خطای " /usr/bin/env 'python' no such file or directory " را دریافت کردید، از یکی از راه حل های زیر استفاده کنید:

    اگر Ubuntu 20.04.2 LTS شما یک نسخه لینوکس تازه نصب شده (در مقابل ارتقا یافته) است:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    اگر از Git نسخه 2.19 یا بالاتر استفاده می کنید، می توانید هنگام اجرای repo init ، --partial-clone را مشخص کنید. این باعث می‌شود از قابلیت کلون جزئی Git برای دانلود اشیاء Git فقط در صورت نیاز به جای دانلود همه چیز استفاده شود. از آنجا که استفاده از کلون های جزئی به این معنی است که بسیاری از عملیات ها باید با سرور ارتباط برقرار کنند، اگر توسعه دهنده هستید و از شبکه ای با تاخیر کم استفاده می کنید، از موارد زیر استفاده کنید:

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    فقط برای سیستم عامل ویندوز: اگر پیام خطایی دریافت کردید مبنی بر اینکه پیوندهای نمادین نمی توانند ایجاد شوند و باعث می شود که repo init با شکست مواجه شود، برای ایجاد این پیوندها یا فعال کردن پشتیبانی از آنها به اسناد GitHub Symbolic Links مراجعه کنید. برای افراد غیر سرپرست، به بخش اجازه دادن به غیر سرپرستان برای ایجاد پیوندهای نمادین مراجعه کنید .

یک مقداردهی اولیه موفقیت آمیز با پیامی به پایان می رسد که Repo در فهرست کاری شما مقداردهی اولیه شده است. دایرکتوری مشتری شما اکنون حاوی یک فهرست .repo است که در آن فایل هایی مانند مانیفست نگهداری می شوند.

دانلود درخت منبع اندروید

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

repo sync

برای سرعت دادن به همگام‌سازی‌ها، پرچم‌های -c (شاخه فعلی) و -j threadcount را ارسال کنید:

repo sync -c -j8

فایل های منبع اندروید در فهرست کاری شما با نام پروژه دانلود می شوند.

برای سرکوب خروجی، پرچم -q (آرام) را ارسال کنید. برای همه گزینه ها به مرجع Repo Command مراجعه کنید.

با استفاده از احراز هویت

به طور پیش فرض، دسترسی به کد منبع اندروید ناشناس است. برای محافظت از سرورها در برابر استفاده بیش از حد، هر آدرس IP با یک سهمیه مرتبط است.

هنگام به اشتراک گذاری یک آدرس IP با سایر کاربران (به عنوان مثال، هنگام دسترسی به مخازن منبع از فراتر از فایروال NAT)، سهمیه ها می توانند حتی برای الگوهای استفاده معمولی فعال شوند (به عنوان مثال، اگر بسیاری از کاربران مشتریان جدید را از همان آدرس IP در یک آدرس IP همگام کنند. دوره کوتاه).

در این صورت، می‌توانید از دسترسی احراز هویت شده استفاده کنید، که سپس از یک سهمیه جداگانه برای هر کاربر، صرف نظر از آدرس IP استفاده می‌کند.

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

سپس، با استفاده از URI مانیفست https://android.googlesource.com/a/platform/manifest ، دسترسی تأیید شده را مجبور کنید. توجه کنید که چگونه پیشوند فهرست /a/ احراز هویت اجباری را راه اندازی می کند. با دستور زیر می توانید یک کلاینت موجود را به استفاده از احراز هویت اجباری تبدیل کنید:

repo init -u https://android.googlesource.com/a/platform/manifest

عیب یابی مشکلات شبکه

هنگام بارگیری از پشت پراکسی (که در برخی از محیط‌های شرکتی رایج است)، ممکن است لازم باشد پروکسی را برای استفاده از Repo مشخص کنید:

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

به ندرت، کلاینت‌های لینوکس مشکلات اتصال را تجربه می‌کنند و در وسط دانلودها گیر می‌کنند (معمولاً در هنگام دریافت اشیا ). تنظیم تنظیمات پشته TCP/IP و استفاده از دستورات غیر موازی می تواند وضعیت را بهبود بخشد. برای تغییر تنظیمات TCP باید دسترسی ریشه داشته باشید:

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

استفاده از آینه محلی

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

این دستورالعمل ها فرض می کنند که آینه در /usr/local/aosp/mirror ایجاد شده است. ابتدا خود آینه را ایجاد و همگام کنید. به پرچم --mirror توجه کنید که فقط هنگام ایجاد یک کلاینت جدید می توانید آن را مشخص کنید:

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

وقتی آینه همگام‌سازی می‌شود، می‌توانید مشتریان جدیدی از آن ایجاد کنید. توجه داشته باشید که باید یک مسیر مطلق را مشخص کنید:

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

در نهایت، برای همگام سازی یک کلاینت با سرور، آینه را با سرور و سپس کلاینت را با آینه همگام کنید:

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

این امکان وجود دارد که آینه را روی یک سرور LAN ذخیره کنید و از طریق NFS، SSH یا Git به آن دسترسی داشته باشید. همچنین می توان آن را روی یک درایو قابل جابجایی ذخیره کرد و آن درایو را بین کاربران یا ماشین ها منتقل کرد.

تایید تگ های Git

کلید عمومی زیر را در پایگاه داده کلید GnuPG بارگیری کنید. این کلید برای امضای برچسب های حاشیه نویسی که نشان دهنده انتشار هستند استفاده می شود.

gpg --import

کلید زیر را کپی و پیست کنید، سپس EOF ( Ctrl-D ) را تایپ کنید تا ورودی پایان یابد و کلیدها پردازش شوند.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

پس از وارد کردن کلیدها، می توانید هر برچسبی را با استفاده از:

git tag -v TAG_NAME

باینری های اختصاصی را بدست آورید

AOSP را نمی توان فقط از کد منبع خالص استفاده کرد و برای اجرا به کتابخانه های اختصاصی مرتبط با سخت افزار اضافی مانند شتاب گرافیک سخت افزاری نیاز دارد. برای لینک های دانلود و باینری های دستگاه برای منابع بیشتر به بخش های زیر مراجعه کنید.

دانلود باینری های اختصاصی

می‌توانید باینری‌های رسمی را برای دستگاه‌های پشتیبانی‌شده که دارای شاخه‌های انتشار برچسب‌شده AOSP هستند از درایورهای Google دانلود کنید. این باینری ها دسترسی به قابلیت های سخت افزاری اضافی را با کد منبع غیر باز اضافه می کنند. برای ساختن شاخه اصلی AOSP، به جای آن از پیش نمایش باینری ها استفاده کنید. هنگام ساختن شاخه اصلی برای یک دستگاه، از باینری ها برای آخرین نسخه شماره گذاری شده یا با آخرین تاریخ استفاده کنید.

استخراج باینری های اختصاصی

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

پاک کردن

برای اطمینان از اینکه باینری های تازه نصب شده پس از استخراج به درستی در نظر گرفته می شوند، خروجی موجود هر بیلد قبلی را با استفاده از:

make clobber