قوانین خط‌کشی ChromeOS در اندروید استودیو

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

سیستم عامل کروم (ChromeOS) در طول سال‌ها با ظهور چالش‌های جدید، تکامل یافته است. یکی از این چالش‌ها، شناسایی زودهنگام و مکرر مسائل حیاتی برای مهندسان است. قوانین Lint در قلب کیفیت قرار دارند، زیرا سیگنال‌های هشداردهنده‌ای را برای توسعه‌دهندگان در مورد مسائلی که در صورت عدم رفع، بروز خواهند کرد، فراهم می‌کنند. قوانین Lint به‌روزرسانی‌شده ما، به توسعه‌دهندگان دید بیشتری در مورد نحوه اجرای برنامه‌هایشان در ChromeOS می‌دهد و مشکلاتی را، چه نرم‌افزاری و چه سخت‌افزاری، که بدون شک باعث ایجاد مشکل برای برنامه‌های اندرویدی که روی هر دستگاه ChromeOS اجرا می‌شوند، می‌شوند، به نمایش می‌گذارد.

برای کسب اطلاعات بیشتر در مورد وجود این قوانین Lint و اهمیت آنها، پست وبلاگ ما را مطالعه کنید.

این قوانین مربوط به پرز کجاست؟

ما چند ماهی است که در حال توسعه فعال هستیم. با توجه به برنامه انتشار اندروید استودیو، برخی از قوانین lint با نسخه‌های Electric Eel Canary معرفی می‌شوند. تعدادی از این قوانین lint اکنون در نسخه‌های Flamingo Canary نیز موجود هستند. ما به تلاش خود برای داشتن این موارد در نسخه‌های پایدار اندروید استودیو در ماه‌های آینده ادامه خواهیم داد.

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

قوانین جدید خط تیره (به‌روزرسانی‌شده از Flamingo Canary 3)

پشتیبانی از ABI در معماری‌های x86/x86_64

اکثر کروم‌بوک‌ها بر روی معماری اینتل اجرا می‌شوند، بنابراین آنها را به یک پلتفرم معماری عمدتاً x86 تبدیل می‌کند. برای اینکه ChromeOS به درستی پشتیبانی شود، زمانی که کد NDK به عنوان بخشی از فایل باینری گنجانده شده است، داشتن x86 به دلیل حذف ترجمه مورد نیاز از کتابخانه‌های ARM، یک افزایش عملکرد است. بنابراین، اکیداً توصیه می‌شود که تیم توسعه شما پشتیبانی از معماری x86 یا ترجیحاً x86_64 را اضافه کند، زیرا این امر یک مزیت عملکردی برای هر کد بومی در ChromeOS یا هر دستگاه Intel خواهد بود.

چاره

در صورت امکان، x86 و x86_64 را داخل abiSplits خود در build.gradle اضافه کنید. همچنین، مطمئن شوید که کد را به پوشه‌های مناسب برای پشتیبانی از این ABIها اضافه می‌کنید. برای کسب اطلاعات بیشتر، به مستندات مربوط به ABIهای اندروید و بحث مربوط به پشتیبانی از ABI از ADS مراجعه کنید.

نکته: مطمئن شوید که هر کتابخانه شخص ثالثی که استفاده می‌شود، دارای فایل‌های باینری x86 و x86_64 نیز باشد.

محدودیت سخت‌افزاری ChromeOS

اکثر دستگاه‌های ChromeOS در مقایسه با گوشی‌های اندروید، با مجموعه کوچک‌تری از حسگرهای سخت‌افزاری و سایر ویژگی‌ها عرضه می‌شوند. هدف از این قانون، علامت‌گذاری به توسعه‌دهندگان است که اگر از پرچم <uses-feature> با android:required=true استفاده می‌کنید، برنامه شما در فروشگاه Google Play در ChromeOS در دسترس نخواهد بود. یک توصیه اکید برای اطمینان از دسترسی به برنامه شما در حداکثر تعداد دستگاه‌های ممکن، این است که مطمئن شوید ویژگی سخت‌افزاری به طور پیش‌فرض مورد نیاز نیست. در عوض، می‌توانید کد دفاعی را برای بررسی سخت‌افزار خاص در زمان اجرا اضافه کنید. نمونه‌ای از این مورد می‌تواند باشد.

<uses-feature android:name="android.hardware.camera" android:required="true">

چاره

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

فعالیت‌های غیرقابل تغییر اندازه

به طور پیش‌فرض، Android Runtime برای ChromeOS، که اندروید R یا بالاتر را روی کروم‌بوک‌ها اجرا می‌کند، یک برنامه اندروید را در نسخه تلفن یا تبلت برنامه، بر اساس حالت پیش‌فرض رابط کاربری، اجرا می‌کند. با این حال، گزینه سومی نیز وجود دارد که تجربه بهتری برای کاربران ChromeOS است، حالت Resizable. با فعال کردن این پرچم به عنوان بخشی از Activity شما، کاربرانی که می‌توانند از برنامه شما در هر محیط چند پنجره‌ای استفاده کنند، می‌توانند از تغییر اندازه برنامه شما به اندازه مناسب بهره‌مند شوند. این تغییرات به کاربران امکان می‌دهد تا رابط کاربری را متناسب با نیازهای خود مقیاس‌بندی کنند. پس از افزودن این تغییرات به Manifest خود، برنامه خود را در برابر شبیه‌ساز دسکتاپ که در زیر به آن اشاره شده است، آزمایش کنید.

برنامه خود را در شبیه‌ساز دسکتاپ آزمایش کنید

چاره

ویژگی resizableActivity="true" را به Activity خود در فایل AndroidManifest.xml اضافه کنید. برای کسب اطلاعات بیشتر، به مستندات مربوط به محدودیت‌های صفحه نمایش بزرگ مراجعه کنید.

تغییرات پیکربندی

یک نکته‌ی مهم در مورد صفحات نمایش با قابلیت تغییر اندازه این است که هر بار که کاربر اندازه‌ی برنامه را تغییر می‌دهد، متد onConfigurationChanged() فراخوانی می‌شود. اگر برنامه‌ی شما در حال اجرای یک redraw کامل درون آن متد باشد، پیامدهای عملکردی مرتبط با آن وجود خواهد داشت. در حال حاضر، ما در حال بررسی این موضوع هستیم که finish() درون onConfigurationChanged فراخوانی نشود، زیرا شما باید savedInstanceState را با جزئیات بیشتری مدیریت کنید تا اینکه مجبور به اعمال یک redraw کامل شوید. ما به یافتن مواردی که در آن‌ها افت عملکرد رخ می‌دهد ادامه خواهیم داد و این قانون را بر این اساس به‌روزرسانی خواهیم کرد.

چاره

مطمئن شوید که finish() در داخل API onConfigurationChanged() در Activityها و Fragments شما فراخوانی نشده باشد. برای کسب اطلاعات بیشتر، به مستندات مربوط به مدیریت تغییرات پیکربندی مراجعه کنید.

پشتیبانی از صفحه کلید و ماوس

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

چاره

androidx.compose.foundation:foundation را به حداقل نسخه ۱.۲ به‌روزرسانی کنید. برای کسب اطلاعات بیشتر، به یادداشت‌های انتشار نسخه compose مراجعه کنید.

نکته: ۹۰٪ از کاربران با استفاده از صفحه کلید و ماوس با برنامه‌ها در کروم‌بوک‌ها تعامل دارند. (منبع: داده‌های داخلی گوگل ۲۰۲۲* )

بازخورد

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

ارائه کادر گفتگوی بازخورد در اندروید استودیو