ساخت برای ChromeOS

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

فایل مانیفست برنامه خود را به‌روزرسانی کنید

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

از نسخه M53 سیستم عامل کروم، تمام برنامه‌های اندروید که صراحتاً به ویژگی android.hardware.touchscreen نیاز ندارند، روی دستگاه‌های ChromeOS که از ویژگی android.hardware.faketouch پشتیبانی می‌کنند نیز کار می‌کنند. با این حال، برای اینکه برنامه شما روی همه کروم‌بوک‌ها کار کند، فایل مانیفست خود را به‌روزرسانی کنید تا ویژگی android.hardware.touchscreen مورد نیاز نباشد، همانطور که در مثال زیر نشان داده شده است.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

دستگاه‌های سخت‌افزاری مختلف به مجموعه‌های مختلفی از حسگرها مجهز شده‌اند و کروم‌بوک‌ها ممکن است تمام حسگرهای موجود در دستگاه‌های دستی اندروید، مانند GPS و شتاب‌سنج، را نداشته باشند. با این حال، در برخی موارد، عملکرد یک حسگر به روش دیگری ارائه می‌شود. به عنوان مثال، کروم‌بوک‌ها ممکن است حسگر GPS نداشته باشند، اما داده‌های مکانی را بر اساس اتصالات Wi-Fi ارائه می‌دهند. برای کسب اطلاعات بیشتر در مورد حسگرهایی که پلتفرم اندروید پشتیبانی می‌کند، به نمای کلی حسگرها مراجعه کنید.

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

برخی از ویژگی‌های نرم‌افزاری در کروم‌بوک‌ها پشتیبانی نمی‌شوند. برای مثال، برنامه‌هایی که IMEهای سفارشی، ویجت‌های برنامه، تصاویر پس زمینه زنده و لانچرهای برنامه ارائه می‌دهند، پشتیبانی نمی‌شوند و نمی‌توان آنها را روی کروم‌بوک‌ها نصب کرد. برای مشاهده لیست کاملی از ویژگی‌های نرم‌افزاری که در کروم‌بوک‌ها پشتیبانی نمی‌شوند، به ویژگی‌های نرم‌افزاری ناسازگار مراجعه کنید.

SDK هدف خود را به‌روزرسانی کنید

برای بهره‌مندی از تمام پیشرفت‌های پلتفرم اندروید، ویژگی targetSdkVersion برنامه خود را به آخرین سطح API موجود به‌روزرسانی کنید. پیشرفت‌های پلتفرم اندروید را در نسخه‌های مختلف مرور کنید.

بررسی الزامات شبکه

کروم‌بوک‌ها کل سیستم عامل اندروید را در یک کانتینر، مشابه Docker یا LXC، اجرا می‌کنند. این بدان معناست که اندروید دسترسی مستقیم به رابط LAN سیستم ندارد. در عوض، ترافیک IPv4 از طریق یک لایه داخلی ترجمه آدرس شبکه (NAT) عبور می‌کند و ترافیک unicast IPv6 از طریق یک hop اضافی مسیریابی می‌شود.

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

به عنوان یک استثنا برای محدودیت چندپخشی، ChromeOS سرویسی را اجرا می‌کند که ترافیک mDNS را بین اندروید و رابط LAN هدایت می‌کند، بنابراین APIهای استاندارد کشف سرویس شبکه ، روش پیشنهادی برای کشف سایر دستگاه‌های موجود در بخش LAN هستند. پس از یافتن دستگاهی در LAN، یک برنامه اندروید می‌تواند از سوکت‌های استاندارد TCP یا UDP unicast برای ارتباط با آن استفاده کند.

اتصالات IPv4 که از اندروید سرچشمه می‌گیرند، از آدرس IPv4 میزبان ChromeOS استفاده می‌کنند. در داخل، برنامه اندروید یک آدرس IPv4 خصوصی را که به رابط شبکه اختصاص داده شده است، می‌بیند. اتصالات IPv6 که از اندروید سرچشمه می‌گیرند، از آدرسی متفاوت از میزبان ChromeOS استفاده می‌کنند، زیرا کانتینر اندروید دارای یک آدرس IPv6 عمومی اختصاصی است.

از فضای ذخیره‌سازی ابری و محلی به طور مؤثر استفاده کنید

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

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

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

موارد آزمایشی جدیدی برای برنامه خود ایجاد کنید

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

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

اگر به نحوه‌ی مدیریت دستگاه‌های ورودی خاص برای دسته‌های خاصی از دستگاه‌ها علاقه‌مند هستید، android.hardware.type.pc را برای غیرفعال کردن حالت سازگاری ورودی مشخص کنید.

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

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

چند پنجره‌ای بودن و تغییر جهت‌گیری

محیط چند پنجره‌ای ChromeOS می‌تواند مشکلات مربوط به پایداری وضعیت و فراخوانی را آشکارتر کند. از ViewModel برای ذخیره و بازیابی وضعیت خود در صورت لزوم استفاده کنید.

برای آزمایش پایداری وضعیت، برنامه خود را برای مدتی کوچک کنید، یک فرآیند فشرده دیگر را شروع کنید و برنامه خود را بازیابی کنید تا تأیید شود که به وضعیتی که آن را در آن رها کرده‌اید، برمی‌گردد.

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

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

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

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