چند روز پیش فرصت پیدا کردم دو گوشی از سری جدید Huawei nova را که بهتازگی وارد بازار شدهاند، از نزدیک بررسی کنم. در نگاه اول، با یک گوشی هوشمند مدرن روبهرو بودم با یک رابط کاربری آشنا، برنامههای سیستمی اختصاصی هواوی، فروشگاه نرمافزاری AppGallery و تعدادی پوشه (Folder) روی لانچر. اما چند نکته توجهام را جلب کرد: EMUI، خدمات HMS، برنامههایی مانند Huawei Assistant و Huawei HiAI و در نهایت امکان نصب و اجرای برنامههای اندرویدی. سؤال اولیه ساده بود: آیا این گوشی واقعاً اندرویدی است؟ اگر اندرویدی است، چرا سرویسهای گوگل را ندارد؟ و اگر هواوی سیستمعامل اختصاصی خودش، یعنی HarmonyOS، را توسعه داده است، EMUI چه جایگاهی دارد؟ این شد که تصمیم گرفتم این مطلب را در وبلاگ رایبُن منتشر کنم.
برای پاسخ، باید چند مفهوم را از یکدیگر تفکیک کنیم؛ مفاهیمی که در بازار موبایل گاهی بهجای یکدیگر استفاده میشوند، در حالی که از نظر فنی یکسان نیستند. در دنیای موبایل، عبارت «سیستمعامل گوشی» گاهی چند لایهی متفاوت را در بر میگیرد:
- سیستمعامل پایه: اجزای اصلی سیستم، کرنل، مدیریت حافظه و فرایندها (و مجوزها)، راهاندازها (Driver) و زیرساخت ارتباطی داخلی برنامهها (Binder IPC)
- رابط و تجربهی کاربری: ظاهر سیستم، تنظیمات، صفحهی اصلی، اعلانها، پویانماییها و امکانات اختصاصی سازنده
- چارچوب (Framework) اجرای برنامهها: واسطهای برنامهنویسی (API) که برنامکها از طریق آن با سیستم تعامل میکنند
- خدمات سکو (پلتفرم): قابلیتهایی مانند ورود به حساب کاربری، اعلانهای ارسالی از سوی کارگزار (Push Notification)، نقشه، مکانیابی و پرداخت
- ابزارها، امکانات و قوانین توسعه برنامکها: فروشگاهها، خدمات ابری، جعبه ابزار توسعه (SDK)، دستورالعملها و راهنماها به همراه سیاستهای انتشار نرمافزار
این لایهها به هم مرتبط هستند اما لزوماً از یک شرکت یا یک پروژه نمیآیند. برای مثال AOSP زیرساخت متنباز اندروید را فراهم میکند. سازندگان میتوانند این زیرساخت را متناسب با سختافزار و نیازهای خود سفارشیسازی کنند. در مقابل GMS مجموعهای جداگانه از خدمات، چارچوب و برنامکهای گوگل است و نباید آن را با خود AOSP یکی دانست. بنابراین، نبودن GMS در یک دستگاه به تنهایی به معنای غیـراندرویدی بودن یک گوشی نیست.
رابط کاربری (یا پلتفرم) EMUI دقیقاً چیست؟
رابط کاربری یا پلتفرم EMUI نام نرمافزار هواوی برای گوشیها و تبلتهای این شرکت است که در نسلهای مختلف، بر پایهی اندروید توسعه یافته است. EMUI صرفاً یک پوستهی گرافیکی نیست برای همین نمیتوان گفت صرفا یک رابط کاربری است؛ چرا که این پلتفرم شامل تغییرات سیستمی، برنامههای اختصاصی، سرویسهای پسزمینه، بهینهسازیهای سختافزاری و قابلیتهای یکپارچهسازیشده با اکوسیستم هواوی است. شمارهی نسخهی EMUI را نباید مستقیماً معادل شمارهی نسخهی اندروید در نظر گرفت. برای نمونه، مشخصات رسمی Huawei nova 15 Max در وبسایت هواوی، سیستمعامل این مدل را EMUI 14.2 معرفی میکند که احتمالا مبتنی بر اندروید ۱۲ توسعه یافته است. این نکته هنگام بررسی سازگاری یک برانامک از دید توسعهدهندگان اهمیت زیادی دارد (API Level).
رابطهی EMUI و HarmonyOS چیست؟
اینجا یکی از مهمترین بخشهای داستان است که انگیزهای شد برای نوشتن این مطلب و انتشار آن در وبلاگ رایبُن. هواوی در طول زمان دو مسیر نرمافزاری با نامهای EMUI و HarmonyOS را دنبال کرده است. از این رویکرد میتوان یک درس مهم برای توسعهی نرمافزار گرفت: طراحی ماژولار و تفکیک منطق اصلی برنامه از وابستگیهای پلتفرمی، امکان استفادهی مجدد از قابلیتها و توسعهی نرمافزار برای چند سکوی مختلف. برای مثال، استفاده از سرویسهایی مانند HMS Core در پلتفرمهای پشتیبانیشده، میتواند بخشی از این راهبرد باشد؛ البته که میزان استفادهی مشترک از کد و واسطهای برنامهنویسی (API) به قابلیت موردنظر و الزامات هر پلتفرم بستگی دارد.
پس چرا گوشی هواوی بدون سرویسهای گوگل همچنان برنامههای اندرویدی را اجرا میکند؟
پاسخ در تفاوت میان سازگاری با اندروید و وابستگی به سرویسهای گوگل نهفته است. بسیاری از برنامههای عمومی اندرویدی به APIهای استاندارد اندروید و کتابخانههای همراه خود متکیاند و وابستگی به GMS ندارند (چنین برنامههایی میتوانند بدون نصب GMS نیز اجرا شوند). اما بعضی برنامهها برای عملکرد کامل به سرویسهایی نیاز دارند که در GMS ارائه میشوند؛ برای مثال، برخی روشهای ورود با حساب گوگل، اعلانهای مبتنی بر Firebase Cloud Messaging و واسطهای برنامهنویسی خاص مکانیابی (که البته برای اینها هم روشهایی وجود دارد تا همچنان در یک گوشی هواوی بدون GMS دارای عملکرد نه چندان کامل باشند). بنابراین، اگر قرار است یک اپلیکیشن روی دستگاههای هواوی عرضه شود، باید وابستگیهای آن به GMS شناسایی و در صورت نیاز، با سرویسهای جایگزین یا پیادهسازیهای سازگار مدیریت شوند.
مجموعه HMS چیست و چه تفاوتی با GMS دارد؟
هواوی برای ارائهی سرویسهای پلتفرمی خود، مجموعهای به نام Huawei Mobile Services یا HMS را توسعه داده است. یکی از اجزای مهم این اکوسیستم، HMS Core است. طبق مستندات رسمی هواوی، HMS Core قابلیتهایی مانند موارد زیر را در اختیار توسعهدهندگان قرار میدهد:
- قابلیتهای مرتبط با حساب کاربری
- قابلیتهایی برای ارسال اعلانها
- قابلیتهای نقشه و مکانیابی
- قابلیتهایی برای پرداخت درونبرنامهای
- قابلیتهای یادگیری ماشین و هوش مصنوعی
از نظر معماری، HMS Core را میتوان مجموعهای از خدمات و واسطهای (API) پلتفرمی دانست که در زیستبوم هواوی نقش مشابهی با بخشی از قابلیتهای ارائهشده توسط Google Play services دارند. نکتهی جالب و مهمتر اینکه HMS Core میتواند روی دستگاههای مبتنی بر AOSP و اندروید اجرا شود و از برنامههای اندرویدی پشتیبانی کند. در نتیجه، وجود HMS روی یک گوشی به معنی آن نیست که گوشی الزاماً از HarmonyOS استفاده میکند. به عنوان جمعبندی میتوان گفت HMS و HarmonyOS دو مفهوم متفاوتاند و در عمل HMS مجموعهای از خدمات پلتفرمی و HarmonyOS یک سیستمعامل است.