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

پروژه منبع باز 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 اغلب اطلاعات محرمانه اشخاص ثالث را در اختیار دارد و باید تا زمان ایمن سازی حفاظت های مناسب از افشای ویژگی های حساس خودداری کند. علاوه بر این، اگر تعداد زیادی نسخه پلتفرم در یک زمان موجود باشد، خطرات واقعی برای پلتفرم وجود دارد. به این دلایل، ما ساختار پروژه منبع باز (از جمله مشارکت های شخص ثالث) را به گونه ای طراحی کرده ایم که بر روی نسخه پایدار فعلی عمومی اندروید تمرکز کند. توسعه عمیق در نسخه بعدی پلتفرم به صورت خصوصی انجام می شود تا زمانی که آماده تبدیل شدن به یک نسخه رسمی شود.

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