مدیریت نرم افزار اندروید

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

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

مدیریت کد AOSP

نمودار زیر مفاهیم مدیریت کد AOSP و انتشار را نشان می دهد.

نمودار خط کد
شکل 1. کد AOSP و انتشار
  1. در هر لحظه، آخرین نسخه فعلی از پلتفرم اندروید وجود دارد. این معمولا به شکل یک شاخه در درخت است.
  2. سازندگان دستگاه و مشارکت‌کنندگان با آخرین نسخه فعلی، رفع اشکال‌ها، راه‌اندازی دستگاه‌های جدید، آزمایش ویژگی‌های جدید و غیره کار می‌کنند.
  3. به موازات آن، گوگل به صورت داخلی بر روی نسخه بعدی پلتفرم و فریم ورک اندروید با توجه به نیازها و اهداف محصول کار می کند. ما نسخه بعدی اندروید را با همکاری با یک شریک دستگاه بر روی دستگاهی پرچمدار که مشخصات آن برای سوق دادن اندروید به سمتی که فکر می کنیم باید برود انتخاب شده است، توسعه می دهیم.
  4. هنگامی که نسخه n+1 آماده شد، در درخت منبع عمومی منتشر می شود و به آخرین نسخه جدید تبدیل می شود.

شرایط و اخطارها

  • یک نسخه مربوط به یک نسخه رسمی از پلتفرم اندروید، مانند 1.5 یا 8.1 است. انتشار پلتفرم مربوط به نسخه در قسمت SdkVersion فایل‌های AndroidManifest.xml است و در frameworks/base/api در درخت منبع تعریف شده است.
  • پروژه بالادستی یک پروژه منبع باز است که پشته اندروید کد را از آن استخراج می کند. علاوه بر پروژه هایی مانند هسته لینوکس و WebKit، ما همچنان به مهاجرت برخی از پروژه های نیمه مستقل اندروید مانند ART، ابزار Android SDK و Bionic برای کار به عنوان پروژه های بالادستی ادامه می دهیم. به طور کلی، این پروژه ها به طور کامل در درخت عمومی توسعه یافته است. برای برخی از پروژه های بالادستی، توسعه دهندگان مستقیماً به پروژه بالادستی کمک می کنند. برای جزئیات، پروژه های Upstream را ببینید. در هر دو مورد، عکس‌های فوری به صورت دوره‌ای به نسخه‌ها کشیده می‌شوند.
  • همیشه، یک کد انتشار (که ممکن است از بیش از یک شاخه در git تشکیل شده باشد) تنها کد منبع متعارف برای یک نسخه پلتفرم اندروید معین در نظر گرفته می شود. OEM ها و سایر دستگاه های ساخت گروه باید فقط از یک شاخه رهاسازی خارج شوند.
  • خطوط کد آزمایشی برای ثبت تغییرات از جامعه ایجاد شده‌اند تا بتوان آنها را با چشم‌اندازی به سمت ثبات تکرار کرد.
  • تغییراتی که ثابت می‌شوند در نهایت به یک شاخه انتشار کشیده می‌شوند. این فقط برای رفع اشکال، بهبود برنامه‌ها و سایر تغییراتی که بر APIهای پلتفرم تأثیر نمی‌گذارند، اعمال می‌شود.
  • در صورت لزوم، تغییرات در شاخه‌های انتشار پروژه‌های بالادستی (از جمله پروژه‌های بالادستی Android) انجام می‌شود.
  • نسخه n+1 (نسخه اصلی بعدی APIهای چارچوب و پلتفرم) توسط Google به صورت داخلی توسعه داده شده است. برای جزئیات، خطوط کد خصوصی را ببینید.
  • در صورت لزوم، تغییرات از شاخه های بالادستی، انتشاری و آزمایشی به شاخه خصوصی Google کشیده می شود.
  • هنگامی که API های پلتفرم برای نسخه بعدی تثبیت شدند و به طور کامل آزمایش شدند، Google نسخه پلتفرم بعدی (مخصوصاً SdkVersion جدید) را قطع می کند. این مربوط به خط کد داخلی در حال تبدیل شدن به یک شعبه انتشار عمومی و خط کد جدید پلت فرم فعلی است.
  • هنگامی که یک نسخه پلت فرم جدید بریده می شود، یک کد آزمایشی مربوطه در همان زمان ایجاد می شود.

خطوط کد خصوصی

استراتژی مدیریت منبع در بالا شامل یک کد است که Google آن را خصوصی نگه می دارد تا توجه خود را بر روی نسخه عمومی فعلی اندروید متمرکز کند.

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

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

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