موفقیت بلندمدت اپلیکیشن شما از نظر تعداد نصبها و نظرات کاربران، تعامل و ماندگاری.
برای ایجاد یک پایه محکم برای یک برنامه با کیفیت، دستورالعملهای اصلی کیفیت برنامه را دنبال کنید.
این دستورالعملها حداقل کیفیتی را که همه برنامهها باید داشته باشند، تعریف میکنند.
کیفیت تطبیقی برنامه
برنامههای اندروید روی طیف گستردهای از دستگاهها اجرا میشوند - از تلفنهای جمعوجور گرفته تا تبلتها، دستگاههای تاشو، دسکتاپها، نمایشگرهای متصل، سیستمهای سرگرمی خودرو، تلویزیون و واقعیت افزوده. حالتهای پنجرهای مانند تقسیم صفحه و پنجرهای کردن دسکتاپ، برنامهها را قادر میسازد تا در بخشهای قابل تغییر اندازه صفحه اجرا شوند.
دستورالعملهای کیفیت برنامه تطبیقی - همراه با دستورالعملهای کیفیت اصلی برنامه - را دنبال کنید تا:
- برنامههایی بسازید که برای همه فرم فاکتورها و اندازههای صفحه نمایش بهینه شده باشند
- رتبه برنامههای خود را در فهرستها و جستجوهای گوگل پلی بالاتر ببرید
- کاربران بیشتری جذب کنید و نرخ حفظ کاربر را افزایش دهید
دستورالعملها
دستورالعملهای اصلی زیر به شما کمک میکنند تا یک برنامهی پایه و با کیفیت بالا بسازید.
تجربه کاربری
برنامه شما باید الگوهای طراحی بصری و تعاملی استاندارد اندروید را برای یک تجربه کاربری سازگار و شهودی ارائه دهد.
در صورت امکان، به جای اجزای پلتفرم اندروید، از اجزای طراحی متریال برای ایجاد رابط کاربری برنامه خود استفاده کنید. طراحی متریال، ظاهر و حس مدرن اندروید را به همراه سازگاری رابط کاربری در نسخههای مختلف اندروید فراهم میکند.
| شناسه | آزمایشها | توضیحات |
|---|---|---|
| قابلیت استفاده | ||
| قابلیت استفاده: تجربه کاربری | قابلیت استفاده T: هسته ، کارت حافظه T-SD | اپلیکیشن، تجربه کاربری ثابتی را برای همه موارد استفاده از اپلیکیشن در همه فرم فاکتورها فراهم میکند. |
| قابلیت استفاده: تعویض کننده | قابلیت استفاده T: سوئیچر ، کارت حافظه T-SD | وقتی فوکوس روی برنامه دیگری میرود، برنامه به پسزمینه میرود. وقتی از طریق تعویض برنامه اخیر دوباره فعال شود، به پیشزمینه برمیگردد. |
| قابلیت استفاده: خواب | قابلیت استفاده T: خواب ، کارت حافظه T-SD | وقتی برنامه در پیشزمینه باشد، وقتی دستگاه به خواب میرود، متوقف میشود و وقتی دستگاه بیدار میشود، دوباره اجرا میشود. |
| قابلیت استفاده: قفل | قابلیت استفاده T: قفل ، کارت حافظه T-SD | وقتی برنامه در پیشزمینه باشد، وقتی دستگاه قفل میشود، متوقف میشود و وقتی قفل دستگاه باز میشود، دوباره اجرا میشود. |
| رابط کاربری | ||
| رابط کاربری: برابری | T-UI: انتقالها | جهتگیریهای نمایشگر و حالتهای تاشدگی اساساً ویژگیها و عملکردهای یکسانی را نشان میدهند و برابری عملکردی را حفظ میکنند. |
| رابط کاربری: تمام صفحه | T-UI: انتقالها | برنامه پنجره برنامه را در هر دو جهت پر میکند و به دلیل تغییرات پیکربندی، از جمله تاشو و باز شدن دستگاه، کادربندی نشده است. استفاده از حروف بزرگ کوچک برای جبران تغییرات کوچک در هندسه صفحه نمایش قابل قبول است. |
| رابط کاربری: انتقالها | T-UI: انتقالها | این برنامه، انتقال سریع بین جهتهای مختلف نمایشگر و باز و بسته شدن دستگاه را بدون هیچ مشکلی در رندر صفحه نمایش و بدون از دست دادن حالت، مدیریت میکند. |
| کیفیت بصری | ||
| بصری: نمایش | تی-ویژوال: نمایشگر | این برنامه گرافیک، متن، تصاویر و سایر عناصر رابط کاربری را بدون اعوجاج، تاری یا پیکسلبندی قابل توجه نمایش میدهد.
|
| بصری: خوانایی | تی-ویژوال: خوانایی | این برنامه با محدود کردن طول خط به ۴۵ تا ۷۵ کاراکتر (شامل فاصلهها) برای هر یک از زبانهای پشتیبانیشده توسط برنامه، خوانایی متن و بلوکهای متنی را تضمین میکند. |
| ویژوال:تمها | تی-ویژوال: پوستهها | محتوای برنامه و تمام محتوای وب که توسط برنامه قابل دسترسی است، از هر دو تم روشن و تیره پشتیبانی میکند. |
| ناوبری | ||
| ناوبری: دکمه بازگشت | T-Nav: برگشت | این برنامه از ناوبری دکمه بازگشت استاندارد پشتیبانی میکند و از هیچ دکمه بازگشت سفارشی روی صفحه استفاده نمیکند. |
| ناوبری: حرکت به عقب | T-Nav: برگشت | این برنامه از ناوبری حرکتی برای برگشت به عقب و رفتن به صفحه اصلی پشتیبانی میکند. |
| ناوبری:ایالت | T-Nav:ایالت ، T-Nav: برگشت | این برنامه هنگام خروج از پیشزمینه، وضعیت کاربر یا برنامه را حفظ میکند و از از دست رفتن تصادفی دادهها به دلیل بازگشت به عقب و سایر تغییرات وضعیت جلوگیری میکند. هنگام بازگشت به پیشزمینه، برنامه وضعیت حفظشده و هرگونه تراکنش دارای وضعیت در انتظار را بازیابی میکند. نمونههایی از آن شامل تغییرات در فیلدهای قابل ویرایش، پیشرفت بازی، منوها، ویدیوها و سایر بخشهای برنامه است.
|
| اعلانها | ||
| اطلاع رسانی: اطلاعات | T-Notify:اطلاعات | اعلانها اطلاعات مرتبط با برنامه شما را ارائه میدهند.
|
| اطلاع رسانی:پیام رسانی | T-Notify:اطلاعات | برای برنامههای پیامرسان، شبکههای اجتماعی و مکالمات:
|
| دسترسیپذیری | ||
| دسترسی:اهداف | دسترسی به تی: اهداف | حداقل فاصله بین نقاط لمسی ۴۸ نقطه در اینچ است. به دستورالعملهای چیدمان و تایپوگرافی طراحی متریال مراجعه کنید. |
| دسترسی: کنتراست | تی-اکسس: کنتراست | متن برنامه و محتوای پیشزمینه نسبت کنتراست زیر را با پسزمینه برنامه حفظ میکنند:
درباره رنگ و کنتراست بیشتر بدانید. |
| دسترسی: توضیحات | دسترسی به تی: توضیحات | هر عنصر رابط کاربری ، به جز TextView ، را با استفاده از contentDescription توصیف کنید. |
عملکرد
برنامه شما باید رفتار تابعی زیر را پیادهسازی کند.
| شناسه | آزمایشها | توضیحات |
|---|---|---|
| صوتی | ||
| صدا: آغازین | تی-آدیو: شروع | وقتی کاربر پخش صدا را آغاز میکند، برنامه باید یکی از موارد زیر را ظرف یک ثانیه انجام دهد:
|
| صدا: فوکوس | تی-آدیو: فوکوس | برنامه باید هنگام شروع پخش صدا، درخواست فوکوس صوتی کند و هنگام توقف پخش، فوکوس صوتی را رها کند. |
| صدا: وقفه | T-Audio: وقفه | برنامه باید درخواستهای برنامههای دیگر برای فوکوس صوتی را مدیریت کند . برای مثال، یک برنامه ممکن است هنگام پخش گفتار توسط برنامه دیگر، صدای پخش را کاهش دهد. |
| صدا: پسزمینه | تی-آدیو: پسزمینه | برنامه باید از پخش در پسزمینه پشتیبانی کند. |
| صدا: اعلان | تی-آدیو: اعلان | وقتی برنامه در پسزمینه صدا پخش میکند، باید یک اعلان با استایل MediaStyle ایجاد کند. |
| صدا: رزومه | تی-آدیو: رزومه | اگر برنامه در پسزمینه باشد و پخش صدا متوقف شود، پخش صدا با بازگشت برنامه به پیشزمینه از سر گرفته میشود، یا برنامه باید به کاربر اطلاع دهد که پخش در حالت مکث قرار دارد. |
| ویدئو | ||
| ویدئو: پیپی | تی-ویدئو: پیپی | اگر برنامه ویدیو پخش میکند، باید از پخش تصویر در تصویر پشتیبانی کند. |
| ویدئو: رمزگذاری | تی-ویدئو: رمزگذاری | اگر برنامه ویدیو را رمزگذاری میکند، باید این کار را با استفاده از استاندارد فشردهسازی ویدیوی HEVC انجام دهد. |
| اشتراکگذاری | ||
| اشتراکگذاری: برگه | اشتراکگذاری تی: برگه | برنامه باید هنگام اشتراکگذاری محتوا از برگه اشتراکگذاری اندروید استفاده کند. برنامه میتواند اهدافی را پیشنهاد دهد که برای راهحلهای سفارشی در دسترس نیستند. |
| خدمات پس زمینه | ||
| پیشینه: خدمات | پیشینه: خدمات | این برنامه از اجرای سرویسهای غیرضروری و طولانی در پسزمینه جلوگیری میکند تا عملکرد روان دستگاه کاربر تضمین شود. توجه: سیستم محدودیتهای مختلفی را روی سرویسهای پسزمینه اعمال میکند. موارد زیر، استفادههای نادرست از سرویسهای پسزمینه هستند:
برای اطلاعات بیشتر، به نمای کلی وظایف پسزمینه مراجعه کنید. |
عملکرد و پایداری
برنامه شما باید عملکرد، پایداری، سازگاری و پاسخگویی بهینه را ارائه دهد.
| شناسه | آزمایشها | توضیحات |
|---|---|---|
| عملکرد | ||
| عملکرد: راه اندازی | T- عملکرد: راه اندازی | اگر بارگذاری برنامه بیش از دو ثانیه طول بکشد، برنامه به سرعت بارگیری میشود یا بازخوردی روی صفحه به کاربر ارائه میدهد (یک نشانگر پیشرفت یا نشانه مشابه). |
| عملکرد: فریم در ثانیه | عملکرد T: فریم در ثانیه | برنامه هر ۱۶ (یا کمتر) میلیثانیه فریمها را رندر میکند تا حداقل ۶۰ فریم در ثانیه نمایش داده شود. برای کمک به مشکلات رندر، به بخش رندر کند مراجعه کنید. |
| عملکرد: دقیق | عملکرد T: سختگیرانه | با فعال بودن StrictMode (به بخش تست StrictMode مراجعه کنید)، هنگام تست برنامه، هیچ چشمک قرمزی (هشدارهای عملکرد از StrictMode ) قابل مشاهده نیست. |
| پایداری | ||
| پایداری: ANR | پایداری T:ANR | برنامه باعث خرابی یا مسدود شدن رابط کاربری نمیشود که باعث خطاهای ANR (عدم پاسخگویی اندروید) شود. از گزارش پیش از راهاندازی گوگل پلی برای شناسایی مشکلات احتمالی پایداری استفاده کنید. پس از استقرار، صفحه Android Vitals را در کنسول گوگل پلی رصد کنید. |
| SDK | ||
| SDK: پلتفرم | T-SDK:پلتفرم | برنامه روی آخرین نسخه عمومی پلتفرم اندروید اجرا میشود، بدون اینکه از کار بیفتد یا تأثیر شدیدی بر عملکردهای اصلی داشته باشد. |
| SDK: هدف | T-SDK: جدیدترین | برنامه با تنظیم مقدار targetSdk در فایل build.gradle ماژول برنامه، آخرین SDK اندروید مورد نیاز برای هماهنگی با الزامات Google Play را هدف قرار میدهد. |
| SDK: کامپایل | T-SDK: جدیدترین | برنامه با آخرین نسخه SDK اندروید و با تنظیم مقدار compileSdk در فایل build.gradle ماژول برنامه ساخته شده است. |
| SDK:3P | T-SDK:3P T-SDK: غیر | هرگونه SDK گوگل یا شخص ثالث مورد استفاده بهروز است. هرگونه بهبود در این SDKها مربوط به پایداری، سازگاری یا امنیت باید به موقع در دسترس کاربران قرار گیرد. برای SDK های گوگل، در صورت وجود از SDK های ارائه شده توسط خدمات گوگل پلی استفاده کنید. این SDK ها با نسخه های قبلی سازگار هستند، به صورت خودکار بروزرسانی می شوند، اندازه بسته برنامه شما را کاهش می دهند و از منابع دستگاه به طور کارآمد استفاده می کنند. |
| SDK: غیر | T-SDK: غیر | برنامه از رابطهای غیر SDK استفاده نمیکند. |
| SDK: اشکالزدایی | T-SDK: اشکالزدایی | هیچ کتابخانه اشکالزدایی در برنامه اصلی گنجانده نشده است. کتابخانههای اشکالزدایی موجود در برنامه میتوانند باعث مشکلات عملکردی و همچنین امنیتی شوند. |
| باتری | ||
| باتری: مدیریت | باتری T: مدیریت | این برنامه به درستی از ویژگیهای مدیریت مصرف انرژی Doze و App Standby پشتیبانی میکند. برنامهها میتوانند درخواست معافیت از نگهداری برق را داشته باشند. برای سایر موارد استفاده، به پشتیبانی در Optimize for Doze و App Standby مراجعه کنید. |
حریم خصوصی و امنیت
برنامه با خیال راحت دادههای کاربر و اطلاعات شخصی را مدیریت میکند و سطوح مناسبی از مجوزها را ارائه میدهد.
برنامههای منتشر شده در فروشگاه گوگل پلی نیز باید از سیاستهای دادههای کاربر گوگل پلی پیروی کنند تا از حریم خصوصی کاربران محافظت شود.
| شناسه | آزمایشها | توضیحات |
|---|---|---|
| مجوزها | ||
| مجوزها: حداقل | مجوزهای T: حداقل | برنامه فقط حداقل مجوزهای مورد نیاز برای پشتیبانی از مورد استفاده فعلی را درخواست میکند. برای برخی از مجوزها، مانند موقعیت مکانی، برنامه در صورت امکان از مشخصات کلی به جای جزئیات دقیق استفاده میکند. به بخش «درخواستهای مجوز خود را به حداقل برسانید» مراجعه کنید. |
| مجوزها: حساس | مجوزهای T: حساس | برنامه فقط زمانی درخواست دسترسی به دادههای حساس (مانند گروههای مجوز پیامک یا گزارش تماس یا موقعیت مکانی ) یا خدماتی که هزینه دارند (مانند شمارهگیر یا پیامک) را دارد که مستقیماً به موارد استفاده اصلی برنامه مربوط باشند. پیامدهای مربوط به این مجوزها باید به طور واضح برای کاربر افشا شود. بسته به نحوهی استفادهی برنامهی شما از مجوزها، ممکن است روش دیگری برای انجام موارد استفادهی برنامهی شما بدون نیاز به دسترسی به اطلاعات حساس وجود داشته باشد. برای مثال، به جای درخواست مجوزهای مربوط به مخاطبین کاربر، از یک intent ضمنی برای درخواست دسترسی استفاده کنید. |
| مجوزها: زمان اجرا | T-مجوزها: زمان اجرا | برنامه مجوزهای زمان اجرا را زمانی درخواست میکند که عملکرد درخواست شده باشد، نه در هنگام راهاندازی برنامه. |
| مجوزها: توضیح دهید | T-مجوزها: توضیح دهید | برنامه به وضوح توضیح میدهد که چرا مجوزها مورد نیاز هستند . |
| مجوزها: تنزل رتبه | T-مجوزها: تنزل رتبه | وقتی کاربران مجوزی را رد یا لغو میکنند، برنامه به آرامی تنزل رتبه میدهد . برنامه نباید دسترسی کاربر را به طور کامل مسدود کند. |
| دادهها و فایلها | ||
| دادهها: حساس | دادههای T: حساس ، T-Data: مدیریت | تمام دادههای حساس در حافظه داخلی برنامه ذخیره میشوند. |
| داده: گزارش | تی-دیتا: لاگ | هیچ داده شخصی یا حساسی از کاربر در لاگ سیستم یا لاگ مخصوص برنامه ثبت نمیشود. |
| دادهها:شناسهها | دادههای T:شناسهها | این برنامه از هیچ شناسه سختافزاری غیرقابل تنظیم مجدد ، مانند IMEI، برای اهداف شناسایی استفاده نمیکند. |
| هویت | ||
| هویت: نکات | هویت تی: نکات | این برنامه نکاتی را برای تکمیل خودکار اطلاعات حساب کاربری و سایر اطلاعات حساس، مانند اطلاعات کارت اعتباری، آدرس فیزیکی و شماره تلفن، ارائه میدهد. |
| هویت: CredMan | هویت تی: مردِ دارای اعتبار | این برنامه ، مدیریت اعتبارنامه برای اندروید را برای یک تجربه ورود یکپارچه ادغام میکند که پشتیبانی از کلیدهای عبور، هویت یکپارچه و رمزهای عبور را یکپارچه میکند. |
| هویت:بیوگرافی | هویت تی: بیوگرافی | این برنامه از احراز هویت بیومتریک برای محافظت از تراکنشهای مالی یا اطلاعات حساس، مانند اسناد مهم کاربر، پشتیبانی میکند. |
| اجزای برنامه | ||
| قطعات: صادرات | قطعات T: خروجی | برنامه، ویژگی فقط اجزای برنامهای که دادهها را با برنامههای دیگر به اشتراک میگذارند ، یا اجزایی که باید توسط برنامههای دیگر فراخوانی شوند ، صادر میشوند. |
| اجزا: مجوزها | کامپوننتهای T: مجوزها | همه اهداف و پخشها از بهترین شیوهها پیروی میکنند:
|
| قطعات: محافظت | قطعات T: محافظت | تمام کامپوننتهایی که محتوا را بین برنامهها به اشتراک میگذارند، برنامهها نباید به دسترسی به لیستی از بستههای نصبشده متکی باشند. |
| شبکهسازی | ||
| شبکه:ترافیک | شبکه تی: ترافیک | تمام ترافیک شبکه از طریق SSL ارسال میشود. |
| شبکه: پیکربندی | شبکه تی: پیکربندی | برنامه، پیکربندی امنیت شبکه را اعلام میکند. |
| شبکه: پخش | تی-نتورک: پخش | اگر برنامه از سرویسهای گوگل پلی استفاده کند، ارائهدهنده امنیت در هنگام راهاندازی برنامه مقداردهی اولیه میشود . |
| وب ویوها | ||
| وب ویوها: پیکربندی | تی-وبویوز: پیکربندی T-WebViews: ناوبری | برای دسترسی به محتوای محلی setAllowUniversalAccessFromFileURLs() استفاده نکنید. در عوض، از WebViewAssetLoader استفاده کنید. |
| وب ویوها: جاوا اسکریپت | تی-وبویوز: جاوااسکریپت ، T-WebViews: ناوبری | نماهای وب در اندروید ۶.۰ (سطح API ۲۳ و بالاتر)، به جای آن از کانالهای پیام HTML استفاده کنید. |
| اعدام | ||
| اجرا: بستههای نرم افزاری | اجرای T: بستهها | برنامه به صورت پویا کدی را از خارج از APK برنامه بارگذاری نمیکند. از بستههای برنامه اندروید استفاده کنید که شامل Play Feature Delivery و Play Asset Delivery میشود. از آگوست ۲۰۲۱، استفاده از بستههای نرمافزاری اندروید برای همه برنامههای جدید در فروشگاه گوگل پلی الزامی است. |
| رمزنگاری | ||
| رمزنگاری:الگوریتمها | الگوریتمهای تی-کریپتو | این برنامه از رشته، الگوریتمهای رمزنگاری ارائه شده توسط پلتفرم و یک مولد اعداد تصادفی استفاده میکند. همچنین، این برنامه الگوریتمهای سفارشی را پیادهسازی نمیکند. |
گوگل پلی
انتشار برنامه خود را در گوگل پلی فعال کنید.
| شناسه | آزمایشها | توضیحات | |
|---|---|---|---|
| سیاستها | |||
| بازی:سیاستها | تی-پلی:سیاستها | این برنامه کاملاً به شرایط خطمشی محتوای توسعهدهندگان گوگل پلی پایبند است، محتوای نامناسب ارائه نمیدهد و از مالکیت معنوی یا برند دیگران استفاده نمیکند. | |
| بازی:بلوغ | تی-پلی:سیاستها | سطح بلوغ برنامه بر اساس دستورالعملهای رتبهبندی محتوا به طور مناسب تنظیم میشود. | |
| صفحه جزئیات برنامه | |||
| بازی: گرافیک | تی-پلی: گرافیک ، تی-پلی:داراییها | گرافیک ویژگیهای برنامه از دستورالعملهای ذکر شده در این مقاله پشتیبانی پیروی میکند. مطمئن شوید که:
| |
| بازی: غیر اندروید | تی-پلی:داراییها | اسکرینشاتها و ویدیوهای برنامه، دستگاههای غیراندرویدی را نشان نمیدهند یا به آنها اشاره نمیکنند. | |
| بازی: گمراه کننده | تی-پلی:داراییها | اسکرینشاتها یا ویدیوهای برنامه، محتوا و تجربه برنامه شما را به شیوهای گمراهکننده نشان نمیدهند. | |
| پشتیبانی کاربر | |||
| بازی:حشرات | تی-پلی:سیاستها | اشکالات رایج گزارششده توسط کاربران در برگه «بررسیها» در صفحه Google Play در صورتی مورد بررسی قرار میگیرند که قابل تکرار باشند و در دستگاههای مختلف زیادی رخ دهند. اگر اشکالی فقط در چند دستگاه رخ میدهد، اگر آن دستگاهها بهطور خاص محبوب یا جدید باشند، همچنان باید آن را برطرف کنید. | |
محیط آزمایش
یک محیط آزمایشی به صورت زیر تنظیم کنید:
تست شبیهساز: شبیهساز اندروید روشی عالی برای آزمایش برنامه شما تحت نسخههای مختلف اندروید و وضوح صفحه نمایش است. دستگاههای شبیهسازی شده (AVD) را طوری تنظیم کنید که رایجترین فرم فاکتورها و ترکیبهای سختافزار/نرمافزار را برای پایگاه کاربر هدف شما نشان دهند. انواع فرم فاکتورها را با استفاده از شبیهسازهای زیر (حداقل) آزمایش کنید:
- تاشو: ۷.۶ اینچ تاشو با نمایشگر بیرونی (این مورد در بخش تلفنها در AVD Manager فهرست شده است)
- تبلت: پیکسل سی ۹.۹۴ اینچ (۲۵۶۰ پیکسل در ۱۸۰۰ پیکسل)
- تست اعلانهای اپلیکیشن موبایل: جفت کردن یک دستگاه موبایل/شبیهساز با شبیهساز Wear OS: Wear OS Round 1.84"
دستگاههای سختافزاری: محیط آزمایش شما باید شامل تعداد کمی از دستگاههای سختافزاری واقعی باشد که نمایانگر فاکتورهای فرم کلیدی و ترکیبهای سختافزار/نرمافزار موجود برای مصرفکنندگان هستند. نیازی نیست روی هر دستگاهی که در بازار موجود است آزمایش کنید. روی تعداد کمی از دستگاههای نماینده تمرکز کنید، حتی با استفاده از یک یا دو دستگاه در هر فاکتور فرم.
آزمایشگاههای تست دستگاه: همچنین میتوانید از سرویسهای شخص ثالث مانند Firebase Test Lab برای آزمایش برنامه خود در طیف وسیعی از دستگاهها استفاده کنید.
تست با آخرین نسخه اندروید: علاوه بر تست نسخههای اندروید نمونه برای پایگاه کاربری هدف خود، همیشه باید برنامه را با آخرین نسخه اندروید تست کنید تا مطمئن شوید که آخرین تغییرات رفتاری، تأثیر منفی بر تجربه کاربری برنامه شما نمیگذارد.
برای راهنمایی بیشتر در مورد تست، از جمله تست واحد، تست ادغام و تست رابط کاربری، به اصول تست برنامههای اندروید مراجعه کنید.
حالت سختگیرانه
برای آزمایش عملکرد، StrictMode در برنامه خود فعال کنید. از StrictMode برای شناسایی عملیاتی که میتوانند بر عملکرد، دسترسیهای شبکه و خواندن و نوشتن فایل تأثیر بگذارند، استفاده کنید. به دنبال عملیات بالقوه مشکلساز، هم در نخ اصلی و هم در نخهای دیگر باشید.
با استفاده از StrictMode.ThreadPolicy.Builder یک سیاست نظارت بر هر رشته تنظیم کنید و با استفاده از detectAll() همه نظارتهای پشتیبانیشده را در ThreadPolicy فعال کنید.
با استفاده از penaltyFlashScreen() اعلان بصری نقض خطمشی را برای ThreadPolicy فعال کنید.
آزمایشها
تستهای کیفیت اصلی برنامه به شما کمک میکنند تا کیفیت اساسی برنامه خود را ارزیابی کنید. میتوانید تستها را ترکیب کنید یا گروههایی از تستها را در طرح تست خود ادغام کنید.
تجربه کاربری
| شناسه | ویژگی | توضیحات |
|---|---|---|
| قابلیت استفاده | ||
| قابلیت استفاده T: هسته | قابلیت استفاده: تجربه کاربری | به تمام قسمتهای برنامه بروید - تمام صفحهها، پنجرههای گفتگو، تنظیمات و تمام جریانهای کاربری. موارد زیر را انجام دهید:
|
| قابلیت استفاده T: سوئیچر | قابلیت استفاده: تعویض کننده | از صفحه هر برنامه، به برنامه در حال اجرا دیگری بروید و سپس با استفاده از کلید تعویض برنامههای اخیر ، به برنامه تحت آزمایش برگردید. |
| قابلیت استفاده T: خواب | قابلیت استفاده: خواب | دکمه پاور را فشار دهید تا دستگاه به حالت خواب برود، سپس دوباره دکمه پاور را فشار دهید تا صفحه نمایش بیدار شود. |
| قابلیت استفاده T: قفل | قابلیت استفاده: قفل | قفل صفحه نمایش را روی دستگاه تنظیم کنید. دکمه روشن/خاموش را فشار دهید تا دستگاه به حالت خواب برود (که دستگاه را قفل میکند). سپس، دوباره دکمه روشن/خاموش را فشار دهید تا صفحه نمایش بیدار شود و قفل دستگاه باز شود. |
| کارت SD | ||
| کارت حافظه T-SD | قابلیت استفاده: تجربه کاربری | تستهای عملکرد اصلی را با برنامه نصب شده روی کارت SD دستگاه انجام دهید (اگر برنامه از این روش نصب پشتیبانی میکند). برای انتقال برنامه به کارت SD، به تنظیمات برنامه مراجعه کنید. |
| رابط کاربری | ||
| T-UI: انتقالها | رابط کاربری: برابری رابط کاربری: تمام صفحه ، رابط کاربری: انتقالها | از هر صفحه برنامه، دستگاه را حداقل سه بار بین حالتهای افقی و عمودی و حالتهای تا شده و باز شده بچرخانید. تأیید کنید که برنامه موارد زیر را انجام میدهد:
|
| کیفیت بصری | ||
| تی-ویژوال: نمایشگر | بصری: نمایش | از تمام ویژگیها یا برنامه خود استفاده کنید. تأیید کنید که تمام عناصر بصری، از جمله گرافیک، متن، تصاویر و سایر عناصر رابط کاربری، عاری از اعوجاج، تاری یا پیکسلبندی باشند. |
| تی-ویژوال: خوانایی | بصری: خوانایی | تمام بلوکهای متنی موجود در برنامه را بررسی کنید. بررسی کنید که طول متن و خط بلوک متنی برای خوانایی به ۴۵ تا ۷۵ کاراکتر (شامل فاصلهها) محدود شده باشد. موارد زیر را تأیید کنید:
|
| تی-ویژوال: پوستهها | ویژوال:تمها | مطمئن شوید که تمام متنها در تمهای روشن و تیره خوانا هستند. مطمئن شوید که تمام تصاویر در تمهای روشن و تیره به وضوح قابل تشخیص و زیبا هستند. |
| ناوبری | ||
| T-Nav: برگشت | ناوبری: دکمه بازگشت ، ناوبری: حرکت به عقب | به تمام قسمتهای برنامه بروید - تمام صفحهها، پنجرههای گفتگو، تنظیمات و تمام جریانهای کاربری. در هر صفحه برنامه، دکمه برگشت را فشار دهید یا از حرکت کشیدن به عقب استفاده کنید. برنامه باید به صفحه قبلی یا صفحه اصلی برود. |
| T-Nav: ایالت | ناوبری:ایالت | از صفحه هر برنامه، کلید Home دستگاه را فشار دهید یا در پیمایش اشارهای، انگشت خود را به بالا بکشید، سپس برنامه را از صفحه «همه برنامهها» دوباره اجرا کنید. |
| اعلانها | ||
| T-Notify:اطلاعات | اطلاع رسانی: اطلاعات ، اطلاع رسانی:پیام رسانی | در کشوی اعلانها، انواع اعلانهایی را که برنامه میتواند نمایش دهد، فعال و مشاهده کنید. در صورت لزوم، اعلانها را گسترش دهید (اندروید ۴.۱ و بالاتر) و روی همه اقدامات موجود ضربه بزنید. |
| دسترسیپذیری | ||
| دسترسی به تی: اهداف | دسترسی:اهداف | تأیید کنید که اهداف لمسی، اندازه و موقعیت قابل دسترس و ثابتی را برای همه اندازهها و پیکربندیهای نمایشگر حفظ میکنند. برای اطلاعات مربوط به قابلیت دسترسی، به اسکنر قابلیت دسترسی مراجعه کنید. |
| تی-اکسس: کنتراست | دسترسی: کنتراست | کنتراست تمام عناصر بصری را بررسی کنید. |
| دسترسی به تی: توضیحات | دسترسی: توضیحات | تأیید کنید که همه عناصر رابط کاربری به غیر از TextView دارای توضیحات محتوا هستند. |
عملکرد
| شناسه | ویژگی | توضیحات |
|---|---|---|
| صوتی | ||
| تی-آدیو: شروع | صدا: آغازین | پخش صدا را آغاز کنید. تأیید کنید که برنامه ظرف یک ثانیه شروع به پخش صدا میکند یا یک نشانگر بصری ارائه میدهد که نشان میدهد دادههای صوتی برای پخش آماده میشوند. |
| تی-آدیو: فوکوس | صدا: فوکوس | پخش صدا را آغاز کنید. برنامه باید درخواست فوکوس صوتی کند . وقتی پخش صدا متوقف میشود، برنامه باید فوکوس صوتی را لغو کند (که این اتفاق به طور خودکار برای برنامههایی که اندروید ۱۲ (سطح API ۳۱) و بالاتر را هدف قرار میدهند، رخ میدهد). |
| T-Audio: وقفه | صدا: وقفه | شروع پخش صدا. پخش صدا را در برنامه دیگری آغاز کنید. برنامه شما باید به تغییر در فوکوس صدا واکنش نشان دهد و پخش صدا را متوقف کند یا صدای پخش را کاهش دهد. |
| تی-آدیو: پسزمینه | صدا: پسزمینه | پخش صدا را آغاز کنید. به عنوان برنامهی پیشزمینه با یک برنامهی غیر صوتی دیگر تعامل داشته باشید. برنامه باید به پخش صدا در پسزمینه ادامه دهد. |
| تی-آدیو: اعلان | صدا: اعلان | پخش صدا را آغاز کنید. با یک برنامه غیر صوتی دیگر به عنوان برنامه پیشزمینه تعامل داشته باشید. تأیید کنید که برنامه شما همچنان به پخش صدا در پسزمینه ادامه میدهد و یک اعلان با استایل MediaStyle ایجاد کرده است. به بخش «بازی خوب با کنترلهای رسانه» مراجعه کنید. |
| تی-آدیو: رزومه | صدا: رزومه | پخش صدا را آغاز کنید. با یک برنامه غیر صوتی دیگر به عنوان برنامه پیش زمینه تعامل داشته باشید. با برنامه خود تعامل داشته باشید تا آن را به برنامه برتر تبدیل کنید. صدا باید از سر گرفته شود یا صدا باید بازیابی شود. در غیر این صورت، برنامه باید به کاربر نشان دهد که پخش متوقف شده است. |
| تی-ویدئو: پیپی | ویدئو: پیپی | پخش ویدیوی برنامه را در حالت تصویر در تصویر فعال کنید. |
| تی-ویدئو: رمزگذاری | ویدئو: رمزگذاری | تأیید کنید که برنامه، ویدیو را با استفاده از استاندارد فشردهسازی ویدیوی HEVC رمزگذاری میکند. |
| اشتراکگذاری | ||
| اشتراکگذاری: برگه | یک اینتنت ایجاد کنید و با فراخوانی startActivity() و با استفاده از اینتنت به عنوان آرگومان، یک اکتیویتی را آغاز کنید. به بخش «استفاده از صفحه اشتراک اندروید » مراجعه کنید. برنامه شما باید صفحه اشتراک اندروید را نمایش دهد. | |
| خدمات پس زمینه | ||
| سی آر-۶ | پیشینه: خدمات | از تمام ویژگیهای اصلی برنامه خود استفاده کنید. مطمئن شوید که هیچ سرویس پسزمینهای که مدت زیادی در حال اجرا باشد، شروع نشده باشد. برای ارسال برنامه به پسزمینه، به برنامه دیگری بروید. به تنظیمات بروید و بررسی کنید که آیا برنامه شما در پسزمینه سرویسی در حال اجرا دارد یا خیر. در اندروید ۴.۰ و بالاتر، به صفحه برنامهها بروید و برنامه را در برگه « در حال اجرا» پیدا کنید. |
عملکرد و پایداری
| شناسه | ویژگی | توضیحات |
|---|---|---|
| عملکرد | ||
| T- عملکرد: راه اندازی | عملکرد: راه اندازی | برنامه خود را اجرا کنید. بررسی کنید که برنامه به سرعت بارگیری میشود یا اگر بارگیری برنامه بیش از دو ثانیه طول میکشد، یک نشانگر پیشرفت یا نشانه مشابه ارائه میدهد. |
| عملکرد T: فریم در ثانیه | عملکرد: فریم در ثانیه | از تمام ویژگیهای اصلی برنامه خود استفاده کنید. مطمئن شوید که برنامه حداقل ۶۰ فریم در ثانیه رندر میکند. از گزینه رندر Profile HWUI برای تست برنامه خود استفاده کنید. |
| عملکرد T: سختگیرانه | عملکرد: دقیق | به جمعآوری زباله و تأثیر آن بر تجربه کاربری توجه ویژهای داشته باشید. |
| پایداری | ||
| پایداری T:ANR | پایداری: ANR | از تمام ویژگیهای اصلی برنامه خود استفاده کنید. تأیید کنید که برنامه باعث خرابی یا مسدود شدن رابط کاربری نمیشود و باعث خطاهای ANR (عدم پاسخگویی اندروید) نمیشود. گزارش پیش از راهاندازی گوگل پلی را بررسی کنید تا مشکلات احتمالی پایداری را شناسایی کنید. |
| SDK | ||
| T-SDK:پلتفرم | SDK: پلتفرم | برنامه خود را روی آخرین نسخه عمومی پلتفرم اندروید اجرا کنید. از تمام ویژگیهای اصلی استفاده کنید. تأیید کنید که برنامه از کار نمیافتد و بدون از دست دادن هیچ یک از عملکردهای اصلی اجرا میشود. |
| T-SDK: جدیدترین | SDK: هدف ، SDK: کامپایل | فایل مانیفست اندروید و پیکربندی ساخت را بررسی کنید تا مطمئن شوید که برنامه با آخرین SDK موجود ( targetSdk و compileSdk ) ساخته شده است. |
| T-SDK: 3P | SDK:3P | فایل build.gradle برنامه خود را برای هرگونه وابستگی قدیمی بررسی کنید. |
| T-SDK: غیر | SDK: غیر | از ابزار lint اندروید استودیو برای تشخیص استفاده از رابطهای غیر SDK استفاده کنید. برای روشهای آزمایش جایگزین ، به محدودیتهای رابطهای غیر SDK مراجعه کنید. |
| T-SDK: اشکالزدایی | SDK: اشکالزدایی | فایل build.gradle برنامه خود را برای یافتن هرگونه کتابخانه اشکالزدایی (debug library) بررسی کنید. |
| باتری | ||
| باتری T: مدیریت | باتری: مدیریت | از تمام ویژگیهای اصلی برنامه در حالتهای Doze و App Standby استفاده کنید. تأیید کنید که هشدارها، تایمرها، اعلانها و همگامسازیها در پنجره Doze maintenance و هنگام خروج برنامه از حالت App Standby به درستی کار میکنند. رفتار Doze و App Standby را با استفاده از دستورات ADB آزمایش کنید (برای الزامات و دستورالعملها به Test with Doze و App Standby مراجعه کنید). برای تشخیص تخلیه غیرمنتظره باتری، از ابزار Power Profiler اندروید استودیو یا ابزار Battery Historian به همراه کارهای برنامهریزیشده در پسزمینه استفاده کنید. |
حریم خصوصی و امنیت
| شناسه | ویژگی | توضیحات |
|---|---|---|
| مجوزها | ||
| مجوزهای T: حداقل | مجوزها: حداقل | تمام مجوزهایی که برنامه شما نیاز دارد را در فایل مانیفست، در زمان اجرا و در تنظیمات برنامه روی دستگاه ( تنظیمات > اطلاعات برنامه ) بررسی کنید. |
| مجوزهای T: حساس | مجوزها: حساس | از هر ویژگی برنامه خود که درخواست مجوز میکند استفاده کنید. تأیید کنید که برنامه فقط برای موارد استفاده اصلی برنامه، درخواست مجوز دسترسی به دادهها یا سرویسهای حساس را دارد. تأیید کنید که پیامدهای اعطای مجوز به دادهها و سرویسهای حساس به وضوح به کاربر اطلاع داده شده است. |
| T-مجوزها: زمان اجرا | مجوزها: زمان اجرا | از تمام ویژگیهای برنامه خود که نیاز به مجوز دارند استفاده کنید. تأیید کنید که مجوزها به صورت تنبل درخواست میشوند، یعنی فقط زمانی که به ویژگیها دسترسی پیدا میکنید، نه در هنگام راهاندازی برنامه. |
| T-مجوزها: توضیح دهید | مجوزها: توضیح دهید | از تمام ویژگیهای برنامه خود که نیاز به مجوز دارند استفاده کنید. تأیید کنید که برنامه به کاربر توضیح میدهد که چرا به مجوزها نیاز دارد. |
| T-مجوزها: تنزل رتبه | مجوزها: تنزل رتبه | از تمام ویژگیهای برنامه خود که نیاز به مجوز دارند استفاده کنید. مجوزها را رد یا لغو کنید. تأیید کنید که برنامه یک مورد استفاده جایگزین ارائه میدهد و به عملکرد خود ادامه میدهد. |
| دادهها و فایلها | ||
| دادههای T: حساس | دادهها: حساس | تمام دادههای ذخیره شده در حافظه داخلی را بررسی کنید. تأیید کنید که دادههای ذخیره شده در خارج از سیستم، دادههای حساس نباشند. |
| T-Data: مدیریت | دادهها: حساس | نحوه مدیریت و پردازش دادههایی که از حافظه خارجی بارگذاری میشوند را بررسی کنید. |
| تی-دیتا: لاگ | داده: گزارش | از تمام ویژگیهای اصلی برنامه هنگام نظارت بر گزارش دستگاه استفاده کنید. تأیید کنید که هیچ اطلاعات خصوصی کاربر ثبت نشده باشد. |
| دادههای T:شناسهها | دادهها:شناسهها | از تمام ویژگیهای اصلی برنامه استفاده کنید. تأیید کنید که برنامه از هیچ شناسه سختافزاری مانند IMEI برای اهداف شناسایی استفاده نمیکند. |
| هویت | ||
| هویت تی: نکات | هویت: نکات | از تمام ویژگیهای برنامه که نیاز به ورودی کاربر دارند استفاده کنید. تأیید کنید که برنامه نکاتی را برای تکمیل خودکار فیلدهای ورودی برای دادههایی مانند اعتبارنامه حساب و سایر اطلاعات حساس ارائه میدهد. |
| هویت تی: مردِ دارای اعتبار | هویت: CredMan | وارد برنامه خود شوید. تأیید کنید که برنامه ، Credential Manager for Android را برای یک تجربه ورود به سیستم که پشتیبانی از کلیدهای عبور، هویت یکپارچه و رمزهای عبور را یکپارچه میکند، ادغام میکند. |
| هویت تی: بیوگرافی | هویت:بیوگرافی | از تمام ویژگیهای برنامه که نیاز به احراز هویت دارند استفاده کنید. تأیید کنید که برنامه از تراکنشهای مالی یا اطلاعات حساس، مانند اسناد مهم کاربر، با احراز هویت بیومتریک محافظت میکند. |
| اجزای برنامه | ||
| قطعات T: خروجی | قطعات: صادرات | تمام کامپوننتهای برنامه که در فایل مانیفست اندروید تعریف شدهاند را برای وضعیت خروجی مناسب بررسی کنید. ویژگی خروجی باید برای همه کامپوننتها به طور صریح تنظیم شود. |
| کامپوننتهای T: مجوزها | اجزا: مجوزها | تمام مجوزهایی که برنامه شما نیاز دارد را در فایل مانیفست، در زمان اجرا و در تنظیمات برنامه روی دستگاه ( تنظیمات > اطلاعات برنامه ) بررسی کنید. |
| قطعات T: محافظت | قطعات: محافظت | تمام ارائه دهندگان محتوای تعریف شده در فایل مانیفست اندروید را بررسی کنید. مطمئن شوید که هر ارائه دهنده دارای protectionLevel مناسب است. |
| شبکهسازی | ||
| شبکه تی: ترافیک | شبکه:ترافیک | یک پیکربندی امنیت شبکه تعریف کنید که ترافیک cleartext را غیرفعال کند ، سپس برنامه را آزمایش کنید. |
| شبکه تی: پیکربندی | شبکه: پیکربندی | پیکربندی امنیت شبکه برنامه را بررسی کنید. مطمئن شوید که هیچ بررسی خط کدی (lint) در پیکربندی با شکست مواجه نمیشود. |
| تی-نتورک: پخش | شبکه: پخش | تأیید کنید که ارائهدهنده امنیتی در هنگام راهاندازی برنامه برای سرویسهای Google Play راهاندازی اولیه شده است. |
| وب ویوها | ||
| تی-وبویوز: پیکربندی | وب ویوها: پیکربندی | پیکربندی امنیت شبکه برنامه را بررسی کنید. مطمئن شوید که هیچ بررسی خط کدی (lint) در پیکربندی با شکست مواجه نمیشود. |
| تی-وبویوز:جاوااسکریپت | وب ویوها: جاوا اسکریپت | برای هر WebView ، به صفحهای که نیاز به جاوا اسکریپت دارد بروید. |
| T-WebViews: ناوبری | نمای وب: پیکربندی ، وب ویوها: جاوا اسکریپت | در هر WebView، سعی کنید به سایتها و محتوایی بروید که مستقیماً توسط برنامه شما بارگذاری نمیشوند. |
| اعدام | ||
| اجرای T: بستهها | اجرا: بستههای نرم افزاری | تأیید کنید که برنامه از بستههای برنامه اندروید استفاده میکند و به صورت پویا کدی را از خارج از APK برنامه بارگیری نمیکند. |
| رمزنگاری | ||
| الگوریتمهای تی-کریپتو | رمزنگاری:الگوریتمها | تأیید کنید که برنامه از الگوریتمهای رمزنگاری قوی و ارائه شده توسط پلتفرم و یک مولد اعداد تصادفی استفاده میکند. همچنین تأیید کنید که برنامه الگوریتمهای سفارشی را پیادهسازی نمیکند. |
گوگل پلی
| شناسه | ویژگی | توضیحات |
|---|---|---|
| سیاستها | ||
| تی-پلی:سیاستها | بازی:سیاستها ، بازی:بلوغ ، بازی:حشرات | برای بررسی پروفایل توسعهدهنده، توضیحات برنامه، اسکرینشاتها، گرافیک ویژگیها، رتبهبندی محتوا و بازخورد کاربران، وارد کنسول توسعهدهندگان گوگل پلی شوید. |
| صفحه جزئیات برنامه | ||
| تی-پلی: گرافیک | بازی: گرافیک | گرافیک و اسکرینشاتهای ویژگی خود را دانلود کنید و مقیاس آنها را کوچک کنید تا با اندازه صفحه نمایش در دستگاهها و فرمفکتورهایی که هدف قرار میدهید، مطابقت داشته باشند. |
| تی-پلی:داراییها | بازی: گرافیک ، بازی: غیر اندروید ، بازی: گمراه کننده | تمام منابع گرافیکی، رسانه، متن، کتابخانههای کد و سایر محتوایی که در برنامه یا فایل توسعهی دانلود شده وجود دارد را بررسی کنید. |
بایگانی
نسخههای قبلی دستورالعملهای کیفیت برنامه اصلی: