سوالات متداول AOSP (پرسش متداول)

این سند شامل پاسخ به سوالات عمومی در مورد پلتفرم متن‌باز اندروید (AOSP) است.

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

چرا نمی‌توانم در aosp-main ثبت نام کنم؟

شما نمی‌توانید به aosp-main ارسال کنید زیرا آن شاخه اکنون فقط خواندنی است.

کجا باید تغییرات را در AOSP پیشنهاد دهم؟

شما باید تغییرات جدید را در android-latest-release (هنگام استفاده از Repo) یا در شاخه‌ی ویرایش پیش‌فرض مشخص‌شده در android-latest-release manifest (هنگام استفاده‌ی مستقیم از Git) پیشنهاد دهید. تغییرات پیشنهادی موجود در شاخه‌های دیگر (مانند aosp-main ) نیازی به انتقال ندارند.

برای اطلاعات بیشتر، به «بارگذاری تغییر برای بررسی» مراجعه کنید.

با کدام شاخه باید همگام‌سازی کنم؟

  • هنگام استفاده از Repo، با استفاده از دستور زیر android-latest-release همگام‌سازی کنید:

    repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifest
  • هنگام استفاده مستقیم از گیت، با شاخه ویرایش پیش‌فرض مشخص شده در android-latest-release manifest همگام‌سازی کنید.

برای جزئیات بیشتر در مورد همگام‌سازی شاخه‌ها، به «مقداردهی اولیه کلاینت مخزن» مراجعه کنید.

آیا کد android-latest-release با aosp-main ادغام خواهد شد؟

خیر، کد با aosp-main که از تاریخ ۲۷ مارس ۲۰۲۵ یک شاخه فقط خواندنی است، ادغام نخواهد شد.

کد نسخه بعدی کجا قرار داده شده است؟

گوگل کد نسخه بعدی را به آخرین شاخه انتشار عمومی ارسال می‌کند و مانیفست android-latest-release را به‌روزرسانی می‌کند تا به آن شاخه اشاره کند.

آیا درخواست تغییر من از شاخه آخرین نسخه اندروید به شاخه داخلی Gerrit منتقل می‌شود؟

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

چطور بفهمم که درخواست تغییر من پذیرفته شده است؟

تغییرات پذیرفته‌شده و گلچین‌شده در یک انتشار در آینده به شاخه انتشار در میزبان اندروید نمایش داده می‌شوند و می‌توانند با استفاده از android-latest-release با مخزن همگام‌سازی شوند. هیچ مکانیزم اعلانی برای زمان پذیرش یا رد تغییر پیشنهادی وجود ندارد.

روند کلی کار از زمانی که یک تغییر توسط یک مشارکت‌کننده خارجی پیشنهاد می‌شود تا زمانی که در آخرین شاخه انتشار ادغام می‌شود، چگونه است؟

  1. یک مشارکت‌کننده خارجی تغییری را در android-latest-release (هنگام استفاده از Repo) یا در شاخه latest release مشخص شده در android-latest-release (هنگام استفاده مستقیم از Git) پیشنهاد می‌دهد.

  2. گوگل تغییر را بررسی می‌کند. اگر تغییر:

    • پذیرفته شده، گوگل مواردی را که تغییر می‌کنند انتخاب می‌کند و آن را در شاخه توسعه داخلی ادغام می‌کند.

    • پذیرفته نشده، گوگل این تغییر را گزینشی انجام نمی‌دهد.

  3. مشارکت‌کننده خارجی تغییرات خود را در android-latest-release بررسی می‌کند.

اگر دیگر به تغییر پیشنهادی‌ام نیازی نداشته باشم، چه می‌شود؟

اگر دیگر به تغییر پیشنهادی خود نیازی ندارید، نمی‌خواهید تغییر ادغام شود، یا می‌دانید که گوگل قبلاً تغییر را بررسی کرده است، تغییر را رها کنید تا در تاریخچه تغییر پیشنهادی در میزبان اندروید باقی بماند.

سوالات متن باز

چرا گوگل کد منبع اندروید را باز کرد؟

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

اندروید چه نوع پروژه متن‌بازی است؟

گوگل بر توسعه هسته AOSP نظارت دارد و برای ایجاد جوامع قوی توسعه‌دهندگان و کاربران تلاش می‌کند. در بیشتر موارد، کد منبع اندروید تحت مجوز سهل‌گیرانه Apache 2.0، به جای مجوز کپی‌لفت، منتشر می‌شود. ما مجوز Apache 2.0 را انتخاب کردیم زیرا معتقدیم که این مجوز، پذیرش گسترده نرم‌افزار اندروید را تشویق می‌کند. برای جزئیات بیشتر، به بخش مجوزها مراجعه کنید.

چرا گوگل مسئول اندروید است؟

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

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

با اطمینان از موفقیت اندروید در بین کاربران، به حفظ حیات اندروید به عنوان یک پلتفرم و یک پروژه متن‌باز کمک می‌کنیم. گذشته از همه اینها، چه کسی کد منبع یک محصول ناموفق را می‌خواهد؟

هدف ما تضمین یک اکوسیستم موفق پیرامون اندروید است. ما کد منبع اندروید را باز کرده‌ایم تا هر کسی بتواند نرم‌افزار را برای رفع نیازهای خود تغییر داده و توزیع کند.

استراتژی کلی گوگل برای توسعه محصولات اندرویدی چیست؟

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

در عمل، این بدان معناست که تیم مهندسی اندروید بر روی تعداد کمی از دستگاه‌های «پرچمدار» تمرکز می‌کند و نسخه بعدی نرم‌افزار اندروید را برای پشتیبانی از عرضه این محصولات توسعه می‌دهد. این دستگاه‌های پرچم‌دار بخش زیادی از ریسک محصول را جذب می‌کنند و مسیری را برای جامعه گسترده تولیدکنندگان اصلی تجهیزات (OEM) هموار می‌کنند، که به دنبال آن دستگاه‌های بیشتری با بهره‌گیری از ویژگی‌های جدید عرضه می‌شوند. به این ترتیب، ما اطمینان حاصل می‌کنیم که پلتفرم اندروید مطابق با نیازهای دستگاه‌های دنیای واقعی تکامل می‌یابد.

نرم‌افزار اندروید چگونه توسعه داده می‌شود؟

هر نسخه پلتفرم اندروید (مانند ۱.۵ یا ۸.۱) یک شاخه متناظر در درخت متن‌باز دارد. جدیدترین شاخه، نسخه پایدار فعلی در نظر گرفته می‌شود که android-latest-release به آن اشاره دارد. این شاخه‌ای است که تولیدکنندگان به دستگاه‌های خود پورت می‌کنند. این شاخه همیشه برای انتشار مناسب نگه داشته می‌شود.

در نهایت، گوگل همزمان با توسعه یک دستگاه پرچمدار، روی نسخه بعدی پلتفرم اندروید کار می‌کند.

چرا بخش‌هایی از اندروید به صورت خصوصی توسعه داده می‌شوند؟

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

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

چه زمانی نسخه‌های کد منبع منتشر می‌شوند؟

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

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

انتشار کد منبع برای نسخه جدید اندروید شامل چه مواردی می‌شود؟

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

وقتی انتشار توسط تنظیم‌کنندگان و اپراتورها تأیید شود، تولیدکننده تولید انبوه دستگاه‌ها را آغاز می‌کند و ما شروع به انتشار کد منبع می‌کنیم.

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

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

از زمانی که تولید انبوه آغاز می‌شود، فرآیند انتشار نرم‌افزار معمولاً حدود یک ماه طول می‌کشد، بنابراین انتشار کد منبع اغلب تقریباً همزمان با رسیدن دستگاه‌ها به دست کاربران اتفاق می‌افتد.

AOSP چه ارتباطی با برنامه سازگاری اندروید دارد؟

AOSP نرم‌افزار اندروید را نگهداری و نسخه‌های جدید را توسعه می‌دهد. از آنجایی که متن‌باز است، می‌توان از این نرم‌افزار برای هر هدفی استفاده کرد، از جمله توسعه دستگاه‌هایی که با سایر دستگاه‌های مبتنی بر همان منبع سازگار نیستند.

وظیفه برنامه سازگاری اندروید، تعریف یک پیاده‌سازی پایه از اندروید است که با برنامه‌های شخص ثالث نوشته شده توسط توسعه‌دهندگان سازگار باشد. دستگاه‌هایی که با اندروید سازگار هستند، واجد شرایط شرکت در اکوسیستم اندروید، از جمله گوگل پلی، هستند؛ دستگاه‌هایی که الزامات سازگاری را برآورده نمی‌کنند، خارج از آن اکوسیستم قرار دارند.

به عبارت دیگر، برنامه سازگاری اندروید روشی است که ما دستگاه‌های سازگار با اندروید را از دستگاه‌هایی که صرفاً مشتقات کد منبع را اجرا می‌کنند، جدا می‌کنیم. ما از همه کاربردهای کد منبع اندروید استقبال می‌کنیم، اما برای شرکت در اکوسیستم اندروید، یک دستگاه باید توسط برنامه به عنوان سازگار با اندروید شناسایی شود.

چطور می‌توانم در اندروید مشارکت کنم؟

شما می‌توانید اشکالات را گزارش دهید، برای اندروید برنامه بنویسید یا کد منبع را به AOSP ارائه دهید.

محدودیت‌هایی در انواع مشارکت‌های کدی که ما می‌پذیریم وجود دارد. به عنوان مثال، ممکن است کسی بخواهد یک API برنامه جایگزین، مانند یک محیط کاملاً مبتنی بر C++، ارائه دهد. ما این مشارکت را رد می‌کنیم، زیرا اندروید برنامه‌ها را تشویق می‌کند که در زمان اجرای ART اجرا شوند. به طور مشابه، ما مشارکت‌هایی مانند کتابخانه‌های GPL یا LGPL را که با اهداف صدور مجوز ما ناسازگار هستند، نمی‌پذیریم.

از علاقه‌مندان به مشارکت در کد منبع دعوت می‌کنیم تا قبل از شروع هرگونه کاری، از طریق کانال‌های ذکر شده در انجمن اندروید با ما تماس بگیرند. برای جزئیات بیشتر، به بخش مشارکت مراجعه کنید.

چگونه می‌توانم یک کامیتِر اندروید شوم؟

AOSP واقعاً مفهومی از کامیت‌کننده (عامل اعمال تغییرات) ندارد. تمام مشارکت‌ها (از جمله آن‌هایی که توسط کارمندان گوگل نوشته می‌شوند) از طریق یک سیستم مبتنی بر وب به نام Gerrit که بخشی از فرآیند مهندسی اندروید است، انجام می‌شود. این سیستم در کنار سیستم مدیریت کد منبع Git برای مدیریت پاکیزه مشارکت‌های کد منبع کار می‌کند.

یک تأییدکننده تعیین‌شده باید تمام تغییرات پیشنهادی را بررسی و بپذیرد. تأییدکنندگان معمولاً کارمندان گوگل هستند، اما همان تأییدکنندگان مسئول تمام موارد ارسالی، صرف نظر از مبدأ آنها، هستند.

برای جزئیات، به ارسال وصله‌ها مراجعه کنید.