نجاح تطبيقك على المدى الطويل من حيث عدد عمليات التثبيت ومراجعات المستخدمين والتفاعل والاحتفاظ بالمستخدمين.
لتقديم أساس متين لتطبيق عالي الجودة، اتّبِع إرشادات الجودة الأساسية للتطبيق.
تحدّد الإرشادات الحدّ الأدنى من الجودة الذي يجب أن تستوفيه جميع التطبيقات.
جودة التطبيق التكيُّفية
تعمل تطبيقات Android على مجموعة متنوعة من الأجهزة، بدءًا من الهواتف الصغيرة الحجم إلى الأجهزة اللوحية والأجهزة القابلة للطي وأجهزة الكمبيوتر المكتبي والشاشات المتصلة وأنظمة الترفيه داخل السيارة والتلفزيون وأجهزة XR. تتيح أوضاع العرض في نوافذ، مثل وضع تقسيم الشاشة ووضع العرض في نافذة على سطح المكتب، تشغيل التطبيقات في أجزاء قابلة لتغيير الحجم من الشاشة.
اتّبِع إرشادات جودة التطبيقات التكيُّفية، بالإضافة إلى إرشادات الجودة الأساسية للتطبيقات، من أجل:
- إنشاء تطبيقات محسَّنة لجميع أشكال الأجهزة وأحجام الشاشات
- الحصول على ترتيب أعلى لتطبيقاتك في بطاقات بيانات Google Play ونتائج البحث
- اكتساب المزيد من المستخدمين وزيادة معدّل الحفاظ على المستخدمين
الإرشادات
تساعدك الإرشادات الأساسية التالية في إنشاء تطبيق أساسي عالي الجودة.
تجربة المستخدم
يجب أن يوفّر تطبيقك أنماط التفاعل والتصاميم المرئية الاعتيادية في Android لتقديم تجربة مستخدم سلسة وسهلة الاستخدام.
استخدِم مكوّنات Material Design لإنشاء واجهة مستخدم تطبيقك بدلاً من مكوّنات منصة Android حيثما أمكن ذلك. يوفّر "التصميم المتعدد الأبعاد" مظهرًا عصريًا لنظام Android، بالإضافة إلى اتساق واجهة المستخدم على جميع إصدارات Android.
| رقم التعريف | الاختبارات | الوصف |
|---|---|---|
| سهولة الاستخدام | ||
| سهولة الاستخدام:تجربة المستخدم | T-Usability:Core, T-SD-Card |
يوفّر التطبيق تجربة مستخدم متسقة لجميع حالات استخدام التطبيق على جميع أشكال الأجهزة. |
| Usability:Switcher | T-Usability:Switcher، T-SD-Card |
ينتقل التطبيق إلى الخلفية عند التبديل إلى تطبيق آخر. ويعود التطبيق إلى المقدّمة عند إعادة تنشيطه من مبدّل التطبيقات التطبيقات الحديثة. |
| سهولة الاستخدام:النوم | T-Usability:Sleep، T-SD-Card |
عندما يكون التطبيق هو التطبيق الذي يظهر في المقدّمة، يتم إيقافه مؤقتًا عندما ينتقل الجهاز إلى وضع السكون ويتم استئنافه عندما يَنشط الجهاز. |
| سهولة الاستخدام:قفل | T-Usability:Lock، T-SD-Card |
عندما يكون التطبيق هو التطبيق الذي يتم استخدامه في المقدّمة، يتم إيقافه مؤقتًا عند قفل الجهاز واستئنافه عند إلغاء قفله. |
| واجهة المستخدم | ||
| UI:Parity | T-UI:Transitions |
تعرض اتجاهات الشاشة وحالات الطي الميزات والإجراءات نفسها بشكل أساسي وتحافظ على التكافؤ الوظيفي. |
| واجهة المستخدم:ملء الشاشة | T-UI:Transitions |
يملأ التطبيق نافذة التطبيق في كلا الاتجاهين ولا تظهر فيه أشرطة سوداء أفقية بسبب تغييرات الضبط، بما في ذلك طي الجهاز وفتحه. يُسمح بوضع إطار أسود صغير للتعويض عن الاختلافات الطفيفة في شكل الشاشة. |
| UI:Transitions | T-UI:Transitions | يتعامل التطبيق مع التحوّلات السريعة بين اتجاهات العرض وطي الجهاز وفتحه بدون حدوث مشاكل في عرض المحتوى وبدون فقدان الحالة. |
| جودة المرئيات | ||
| مرئي:عرض | T-Visual:Display |
يعرض التطبيق الرسومات والنصوص والصور وعناصر واجهة المستخدم الأخرى بدون تشويه أو تمويه أو تشويش ملحوظ.
|
| المرئية:سهولة القراءة | T-Visual:سهولة القراءة | يضمن التطبيق إمكانية قراءة النصوص وكتل النصوص من خلال حصر طول السطر على 45 إلى 75 حرفًا (بما في ذلك المسافات) لكل لغة من اللغات التي يتيحها التطبيق. |
| العناصر المرئية:المظاهر | T-Visual:Themes | يتوافق محتوى التطبيق وكل محتوى الويب الذي يمكن الوصول إليه من خلال التطبيق مع كل من المظهر الفاتح والمظهر الداكن. |
| التنقل | ||
| Nav:BackButton | T-Nav:Back | يتوافق التطبيق مع التنقل باستخدام زر الرجوع العادي ولا يستخدم أي طلبات مخصّصة لزر الرجوع على الشاشة. |
| Nav:BackGesture | T-Nav:Back | يتوافق التطبيق مع التنقّل بالإيماءات للرجوع والانتقال إلى الشاشة الرئيسية. |
| Nav:State | T-Nav:State, T-Nav:Back |
يحتفظ التطبيق بحالة المستخدم أو التطبيق عند مغادرة المقدّمة، ويمنع فقدان البيانات غير المقصود بسبب التنقُّل للخلف أو تغييرات الحالة الأخرى. عند العودة إلى المقدّمة، يستعيد التطبيق الحالة المحفوظة وأي معاملات معلّقة تتضمّن حالة. وتشمل الأمثلة التغييرات في الحقول القابلة للتعديل، ومستوى التقدّم في اللعبة، والقوائم، والفيديوهات، والأقسام الأخرى من التطبيق.
|
| الإشعارات | ||
| إشعار:معلومات | T-Notify:Info |
تقدّم الإشعارات معلومات ذات صلة بتطبيقك.
|
| Notify:Messaging | T-Notify:Info |
بالنسبة إلى تطبيقات المراسلة وتطبيقات التواصل الاجتماعي والمحادثات:
|
| تسهيل الاستخدام | ||
| الوصول:الاستهدافات | T-Access:Targets | مساحات اللمس لا تقل عن 48 بكسل مستقل الكثافة. اطّلِع على إرشادات التصميم المتعدد الأبعاد بشأن التنسيق وأسلوب الخط. |
| Access:Contrast | T-Access:Contrast |
يحافظ نص التطبيق ومحتوى المقدمة على نسب التباين التالية مع خلفية التطبيق:
|
| Access:Description | T-Access:Description | صِف كل عنصر من عناصر واجهة المستخدم،
باستثناء TextView، باستخدام contentDescription. |
الوظائف
يجب أن ينفّذ تطبيقك السلوك الوظيفي التالي.
| رقم التعريف | الاختبارات | الوصف |
|---|---|---|
| الصوت | ||
| Audio:Init | T-Audio:Init |
عندما يبدأ المستخدم تشغيل الصوت، يجب أن ينفّذ التطبيق أحد الإجراءات التالية في غضون ثانية واحدة:
|
| الصوت:التركيز | T-Audio:Focus | يجب أن يطلب التطبيق التركيز على الصوت عند بدء تشغيل الصوت وأن يتخلّى عن التركيز على الصوت عند إيقاف التشغيل. |
| الصوت:مقاطعة | T-Audio:Interrupt | يجب أن يتعامل التطبيق مع طلبات التطبيقات الأخرى للحصول على التركيز الصوتي. على سبيل المثال، قد يخفض تطبيق مستوى صوت التشغيل عندما يشغّل تطبيق آخر كلامًا. |
| الصوت:الخلفية | T-Audio:Background | يجب أن يتيح التطبيق التشغيل في الخلفية. |
| الصوت:إشعار | T-Audio:Notification | عندما يشغّل التطبيق الصوت في الخلفية، يجب أن يُنشئ التطبيق إشعارًا منمّقًا باستخدام MediaStyle. |
| الصوت:استئناف | T-Audio:Resume | إذا كان التطبيق يعمل في الخلفية وتم إيقاف الصوت مؤقتًا، يتم استئناف الصوت عند عودة التطبيق إلى المقدّمة، أو يجب أن يشير التطبيق إلى المستخدم بأنّ التشغيل في حالة إيقاف مؤقت. |
| الفيديو | ||
| الفيديو:نافذة ضمن النافذة | T-Video:PiP | إذا كان التطبيق يشغّل الفيديو، يجب أن يتيح تشغيل نافذة ضمن النافذة. |
| الفيديو:الترميز | T-Video:Encoding | إذا كان التطبيق يرمّز الفيديو، يجب أن يتم ذلك باستخدام معيار ضغط الفيديو HEVC. |
| المشاركة | ||
| المشاركة:ورقة | T-Sharing:Sheet | يجب أن يستخدم التطبيق ورقة المشاركة في Android عند مشاركة المحتوى. يمكن أن يقترح التطبيق استهدافات غير متاحة للحلول المخصّصة. |
| خدمات تعمل في الخلفية | ||
| الخلفية:الخدمات | T-Background:Services |
يتجنّب التطبيق تشغيل الخدمات الطويلة بشكل غير ضروري في الخلفية. لضمان تشغيل جهاز المستخدم بسلاسة ملاحظة: يفرض النظام قيودًا مختلفة على الخدمات التي تعمل في الخلفية. في ما يلي بعض الاستخدامات السيئة للخدمات التي تعمل في الخلفية:
لمزيد من المعلومات، يُرجى الاطّلاع على نظرة عامة على المهام التي تعمل في الخلفية. |
الأداء والثبات
يجب أن يوفّر تطبيقك أفضل أداء وثبات وتوافق وسرعة استجابة.
| رقم التعريف | الاختبارات | الوصف |
|---|---|---|
| الأداء | ||
| الأداء:بدء التشغيل | T- Performance:Startup | يتم تحميل التطبيق بسرعة أو تقديم ملاحظات على الشاشة للمستخدم (مؤشر تقدُّم أو رمز مماثل) إذا استغرق تحميل التطبيق أكثر من ثانيتَين. |
| الأداء:عدد اللقطات في الثانية | T-Performance:FPS | يعرض التطبيق لقطات كل 16 ملي ثانية (أو أقل) لعرض 60 لقطة على الأقل في الثانية. للحصول على مساعدة بشأن مشاكل العرض، يُرجى الاطّلاع على بطء العرض. |
| الأداء:صارم | T-Performance:Strict | عند تفعيل StrictMode (راجِع قسم اختبار StrictMode)، لن تظهر أي ومضات حمراء (تحذيرات الأداء من StrictMode) عند اختبار التطبيق. |
| الثبات | ||
| الثبات:ANR | T-Stability:ANR | لا يتعطّل التطبيق أو يعطّل سلسلة واجهة المستخدم، ما يؤدي إلى حدوث أخطاء ANR (التطبيق لا يستجيب). استخدِم تقرير الإطلاق التجريبي على Google Play لتحديد المشاكل المحتملة في استقرار التطبيق. بعد النشر، راقِب صفحة مؤشرات Android الحيوية في Google Play Console. |
| SDK | ||
| SDK:Platform | T-SDK:Platform | يعمل التطبيق على أحدث إصدار علني من منصة Android بدون أن يتعطّل أو يؤثّر بشكل كبير في الوظائف الأساسية. |
| SDK:Target | T-SDK:الأحدث | يستهدف التطبيق أحدث إصدار من حزمة تطوير البرامج (SDK) لنظام التشغيل Android اللازم للالتزام بمتطلبات Google Play من خلال ضبط القيمة targetSdk في ملف build.gradle لوحدة التطبيق. |
| SDK:Compile | T-SDK:الأحدث | يتم إنشاء التطبيق باستخدام أحدث إصدار من حزمة تطوير البرامج (SDK) لنظام التشغيل Android من خلال ضبط القيمة compileSdk في ملف build.gradle لوحدة التطبيق. |
| SDK:3P | T-SDK:3P, T-SDK:Non |
أن تكون جميع حِزم تطوير البرامج (SDK) من Google أو من جهات خارجية المستخدمة محدّثة. يجب أن تتوفّر للمستخدمين في الوقت المناسب أي تحسينات على حِزم تطوير البرامج هذه تتعلّق بالثبات أو التوافق أو الأمان. بالنسبة إلى حِزم تطوير البرامج (SDK) من Google، استخدِم حِزم تطوير البرامج (SDK) التي تستند إلى خدمات Google Play عند توفّرها. تتوافق حِزم SDK هذه مع الإصدارات القديمة، وتتلقّى تحديثات تلقائية، وتقلّل من حجم حزمة تطبيقك، وتستفيد بشكل فعّال من الموارد المتوفّرة على الجهاز. |
| SDK:Non | T-SDK:Non | لا يستخدم التطبيق واجهات غير متوفرة في حزمة SDK. |
| SDK:Debug | T-SDK:Debug | لا يتم تضمين أي مكتبات تصحيح أخطاء في تطبيق الإصدار العلني، لأنّ مكتبات تصحيح الأخطاء المُضمَّنة في التطبيق يمكن أن تتسبّب في حدوث مشاكل في الأداء والأمان. |
| البطارية | ||
| البطارية:إدارة | T-Battery:Manage |
يتوافق التطبيق بشكل سليم مع ميزتَي إدارة الطاقة قيلولة ووضع الاستعداد للتطبيقات. يمكن للتطبيقات طلب إعفاء من صيانة الطاقة. يمكنك الاطّلاع على إتاحة حالات الاستخدام الأخرى في التحسين لوضع "القيلولة" و"وضع الاستعداد للتطبيق". |
الخصوصية والأمان
يتعامل التطبيق مع بيانات المستخدمين ومعلوماتهم الشخصية بأمان ويوفّر مستويات الأذونات المناسبة.
يجب أن تلتزم التطبيقات المنشورة على "متجر Google Play" أيضًا بسياسات بيانات المستخدمين في Google Play لحماية خصوصية المستخدمين.
| رقم التعريف | الاختبارات | الوصف |
|---|---|---|
| الأذونات | ||
| الأذونات:Min | T-Permissions:Min | يطلب التطبيق الحدّ الأدنى المطلق من الأذونات اللازمة لدعم حالة الاستخدام الحالية. بالنسبة إلى بعض الأذونات، مثل الموقع الجغرافي، يستخدم التطبيق مواصفات تقريبية بدلاً من دقيقة إذا أمكن ذلك. تقليل طلبات الأذونات |
| الأذونات:حسّاسة | T-Permissions:Sensitive |
يطلب التطبيق الإذن بالوصول إلى البيانات الحسّاسة (مثل مجموعات أذونات الوصول إلى الرسائل القصيرة أو سجلّ المكالمات أو الموقع الجغرافي) أو الخدمات التي تتطلّب دفع رسوم (مثل تطبيق "الهاتف" أو الرسائل القصيرة) فقط عندما تكون مرتبطة مباشرةً بحالات الاستخدام الأساسية للتطبيق. يجب الإفصاح بوضوح للمستخدم عن الآثار المترتبة على هذه الأذونات. استنادًا إلى كيفية استخدام تطبيقك للأذونات، قد يكون من الممكن إيجاد طريقة بديلة لتلبية حالة استخدام تطبيقك بدون الاعتماد على الوصول إلى المعلومات الحساسة. على سبيل المثال، بدلاً من طلب أذونات متعلقة بجهات اتصال المستخدم، استخدِم intent ضمني لطلب الوصول. |
| الأذونات:وقت التشغيل | أذونات T:وقت التشغيل | يطلب التطبيق أذونات التشغيل عند طلب الوظيفة، وليس أثناء بدء تشغيل التطبيق. |
| الأذونات:شرح | T-Permissions:Explain | يوضّح التطبيق بوضوح سبب الحاجة إلى الأذونات. |
| الأذونات:Degrade | T-Permissions:Degrade | يتم خفض إصدار التطبيق على نحو ملائم عندما يرفض المستخدمون منح الإذن أو يبطلونه. يجب ألا يمنع التطبيق المستخدم من الوصول إلى المحتوى تمامًا. |
| البيانات والملفات | ||
| البيانات:حسّاسة | T-Data:Sensitive, T-Data:Handling |
يتم تخزين جميع البيانات الحسّاسة في وحدة التخزين الداخلية للتطبيق. |
| البيانات:السجلّ | T-Data:Log | لا يتم تسجيل أي بيانات شخصية أو حساسة للمستخدمين في سجلّ النظام أو سجلّ خاص بالتطبيق. |
| البيانات:أرقام التعريف | T-Data:IDs | لا يستخدم التطبيق أي معرّفات أجهزة غير قابلة لإعادة الضبط، مثل IMEI، لأغراض التعريف. |
| إثبات الهوية | ||
| Identity:Hints | T-Identity:Hints | يقدّم التطبيق تلميحات لملء البيانات تلقائيًا، مثل بيانات اعتماد الحساب وغيرها من المعلومات الحساسة، مثل معلومات بطاقة الائتمان والعنوان ورقم الهاتف. |
| Identity:CredMan | T-Identity:CredMan | يتضمّن التطبيق مدير بيانات الاعتماد على Android لتوفير تجربة تسجيل دخول سلسة تجمع بين مفاتيح المرور والهوية الموحّدة وكلمات المرور. |
| Identity:Bio | T-Identity:Bio | يتيح التطبيق المصادقة باستخدام المقاييس الحيوية لحماية المعاملات المالية أو المعلومات الحسّاسة، مثل مستندات المستخدم المهمة. |
| مكوّنات التطبيق | ||
| المكوّنات:تصدير | T-Components:Export |
يضبط التطبيق السمة يتم تصدير مكوّنات التطبيق التي تشارك البيانات مع تطبيقات أخرى أو المكوّنات التي يجب أن تستدعيها تطبيقات أخرى فقط. |
| المكوّنات:الأذونات | المكوّنات المستندة إلى Trusting:الأذونات |
تتّبع جميع الأهداف وعمليات البث أفضل الممارسات:
|
| المكوّنات:الحماية | T-Components:Protection |
تستخدم جميع المكوّنات التي تشارك المحتوى بين التطبيقات يجب ألا تعتمد التطبيقات على الوصول إلى قائمة الحِزم المثبَّتة. |
| اتصال بالشبكات | ||
| الشبكة:الزيارات | T-Network:Traffic | يتم إرسال جميع حركة بيانات الشبكة عبر طبقة المقابس الآمنة (SSL). |
| الشبكة:Config | T-Network:Config | يُعلن التطبيق عن إعداد أمان الشبكات. |
| الشبكة:Play | T-Network:Play | إذا كان التطبيق يستخدم "خدمات Google Play"، يتم تهيئة موفّر الأمان عند بدء تشغيل التطبيق. |
| WebViews | ||
| WebViews:Config | T-WebViews:Config, T-WebViews:Nav |
لا تستخدِم setAllowUniversalAccessFromFileURLs() للوصول إلى المحتوى المحلي. استخدِم WebViewAssetLoader بدلاً من ذلك. |
| WebViews:JavaScript | T-WebViews:JavaScript, T-WebViews:Nav |
لا تستخدم طرق العرض على الويب على الإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات والإصدارات الأحدث)، استخدِم قنوات رسائل HTML بدلاً من ذلك. |
| التنفيذ | ||
| التنفيذ:الحِزم | T-Execution:Bundles |
لا يحمّل التطبيق الرمز ديناميكيًا من خارج حزمة APK الخاصة بالتطبيق. استخدِم مجموعات حزمات تطبيق Android التي تتضمّن عرض الميزات في Play وعرض المواد في Play. اعتبارًا من أغسطس 2021، أصبح استخدام "مجموعات حزمات تطبيق Android" إلزاميًا لجميع التطبيقات الجديدة في "متجر Google Play". |
| التشفير | ||
| العملات المشفّرة:الخوارزميات | T-Crypto:Algorithms | يستخدم التطبيق خوارزميات تشفير وسلسلة أرقام عشوائية توفّرها المنصة. بالإضافة إلى ذلك، لا ينفّذ التطبيق خوارزميات مخصّصة. |
Google Play
يجب تفعيل إمكانية نشر تطبيقك على Google Play.
| رقم التعريف | الاختبارات | الوصف | |
|---|---|---|---|
| السياسات | |||
| Play:السياسات | T-Play:Policies | يلتزم التطبيق بشكل صارم ببنود سياسة المطوّرين بشأن المحتوى على Google Play، ولا يقدّم محتوًى غير ملائم، ولا يستخدم الملكية الفكرية أو العلامة التجارية الخاصة بالآخرين. | |
| Play:Maturity | T-Play:Policies | تم ضبط مستوى الفئة العمرية المناسب للتطبيق بشكل صحيح استنادًا إلى إرشادات التقييم حسب الفئة العمرية. | |
| صفحة تفاصيل التطبيق | |||
| Play:الرسومات | T-Play:Graphics, T-Play:Assets |
يتوافق الرسم المميّز للتطبيق مع الإرشادات الموضّحة في مقالة الدعم هذه. تأكَّد مما يلي:
|
|
| Play:NonAndroid | T-Play:Assets | لا تعرض لقطات الشاشة والفيديوهات الخاصة بالتطبيق أجهزة لا تعمل بنظام التشغيل Android أو تشير إليها. | |
| Play:Misleading | T-Play:Assets | لا تمثّل لقطات الشاشة أو الفيديوهات الخاصة بالتطبيق محتوى تطبيقك وتجربة استخدامه بطريقة مضلِّلة. | |
| دعم المستخدم | |||
| Play:Bugs | T-Play:Policies | يتم تصحيح الأخطاء الشائعة التي يُبلِغ عنها المستخدمون في علامة التبويب المراجعات على صفحة Google Play إذا كان من الممكن إعادة إنتاج الأخطاء وتحدث على العديد من الأجهزة المختلفة. إذا حدث خطأ في عدد قليل من الأجهزة فقط، يجب معالجته إذا كانت هذه الأجهزة شائعة أو جديدة بشكل خاص. | |
بيئة الاختبار
يمكنك إعداد بيئة اختبار على النحو التالي:
اختبار المحاكي: يُعدّ "محاكي Android" طريقة رائعة لاختبار تطبيقك على إصدارات مختلفة من Android وبدقة شاشة مختلفة. يمكنك إعداد أجهزة محاكية (أجهزة Android الافتراضية) لتمثيل أشكال الأجهزة الأكثر شيوعًا ومجموعات الأجهزة/البرامج الأكثر شيوعًا لقاعدة المستخدمين المستهدَفة. اختبِر مجموعة متنوعة من أشكال الأجهزة باستخدام المحاكيات التالية (كحد أدنى):
- الأجهزة القابلة للطي: شاشة داخلية قابلة للطي مقاس 7.6 بوصة مع شاشة خارجية (يتم إدراج هذا الخيار ضمن الهواتف في "مدير الأجهزة الافتراضية لنظام Android")
- الجهاز اللوحي: Pixel C 9.94" (2,560 × 1,800 بكسل)
- اختبار الإشعارات على تطبيق الأجهزة الجوّالة: اربط جهازًا جوّالاً أو محاكيًا بمحاكي Wear OS: Wear OS Round 1.84"
الأجهزة: يجب أن تتضمّن بيئة الاختبار عددًا قليلاً من الأجهزة الفعلية التي تمثّل أهم أشكال الأجهزة ومجموعات الأجهزة/البرامج المتاحة للمستهلكين. لست بحاجة إلى الاختبار على كل جهاز متوفّر في السوق. ركِّز على عدد صغير من الأجهزة النموذجية، حتى لو كان ذلك باستخدام جهاز أو جهازَين لكل شكل من أشكال الأجهزة.
مختبرات اختبار الأجهزة: يمكنك أيضًا استخدام خدمات تابعة لجهات خارجية، مثل مركز الاختبار الافتراضي لمنصة Firebase، لاختبار تطبيقك على مجموعة متنوعة من الأجهزة.
الاختبار باستخدام أحدث إصدار من Android: بالإضافة إلى اختبار إصدارات Android التمثيلية لقاعدة المستخدمين المستهدَفة، عليك دائمًا إجراء الاختبار على أحدث إصدار من Android للتأكّد من أنّ أحدث التغييرات في السلوك لن تؤثّر سلبًا في تجربة المستخدم في تطبيقك.
للحصول على إرشادات إضافية حول الاختبار، بما في ذلك اختبار الوحدات واختبار الدمج واختبار واجهة المستخدم، يُرجى الاطّلاع على أساسيات اختبار تطبيقات Android.
StrictMode
لاختبار الأداء، فعِّل StrictMode في تطبيقك. استخدِم StrictMode لرصد العمليات التي قد تؤثّر في الأداء وعمليات الوصول إلى الشبكة وعمليات قراءة الملفات وكتابتها. ابحث عن العمليات التي قد تتسبّب في حدوث مشاكل في سلسلة التعليمات الرئيسية وفي سلاسل التعليمات الأخرى.
يمكنك إعداد سياسة مراقبة لكل سلسلة محادثات باستخدام StrictMode.ThreadPolicy.Builder وتفعيل جميع عمليات المراقبة المتوافقة في ThreadPolicy باستخدام detectAll().
فعِّل الإشعار المرئي بانتهاكات السياسة في ThreadPolicy باستخدام
penaltyFlashScreen().
الاختبارات
تساعدك اختبارات جودة التطبيق الأساسية في تقييم الجودة الأساسية لتطبيقك. يمكنك الجمع بين الاختبارات أو دمج مجموعات من الاختبارات معًا في خطة الاختبار.
تجربة المستخدم
| رقم التعريف | الميزة | الوصف |
|---|---|---|
| سهولة الاستخدام | ||
| T-Usability:Core | سهولة الاستخدام:تجربة المستخدم |
التنقّل إلى جميع أجزاء التطبيق، أي جميع الشاشات ومربّعات الحوار والإعدادات وجميع مسارات المستخدمين يُرجى اتّباع الخطوات التالية:
|
| T-Usability:Switcher | سهولة الاستخدام:Switcher | من شاشة كل تطبيق، انتقِل إلى تطبيق آخر قيد التشغيل، ثم ارجع إلى التطبيق قيد الاختبار باستخدام أداة التبديل بين التطبيقات التطبيقات الحديثة. |
| T-Usability:Sleep | سهولة الاستخدام:النوم | اضغط على زر التشغيل لوضع الجهاز في وضع السكون، ثم اضغط على زر التشغيل مرة أخرى لتنشيط الشاشة. |
| T-Usability:Lock | سهولة الاستخدام:قفل | إعداد قفل الشاشة على الجهاز اضغط على زر التشغيل لضبط الجهاز على وضع السكون (ما يؤدي إلى قفله). بعد ذلك، اضغط على زر التشغيل مرة أخرى لتنشيط الشاشة وفتح قفل الجهاز. |
| بطاقة SD | ||
| T-SD-Card | سهولة الاستخدام:تجربة المستخدم |
إجراء اختبارات الوظائف الأساسية بعد تثبيت التطبيق على بطاقة SD الخاصة بالجهاز (إذا كان التطبيق يتيح طريقة التثبيت هذه) لنقل التطبيق إلى بطاقة SD، اطّلِع على إعدادات التطبيق. |
| واجهة المستخدم | ||
| T-UI:Transitions | UI:Parity, UI:Fullscreen, UI:Transitions |
من كل شاشة تطبيق، عليك تدوير الجهاز للتبديل بين الوضعَين الأفقي والعمودي وحالتَي الطي والفتح ثلاث مرات على الأقل. تأكَّد من أنّ التطبيق ينفّذ ما يلي:
|
| جودة المرئيات | ||
| T-Visual:Display | العرض المرئي: | استخدِم جميع ميزات تطبيقك وتأكَّد من أنّ جميع العناصر المرئية، بما في ذلك الرسومات والنصوص والصور وعناصر واجهة المستخدم الأخرى، لا تتضمّن أي تشويه أو تمويه أو تشويش. |
| T-Visual:Readability | المرئية:سهولة القراءة |
راجِع جميع كتل النصوص في التطبيق. تأكَّد من أنّ طول سطر النص وكتلة النص لا يتجاوز 45 إلى 75 حرفًا (بما في ذلك المسافات) لضمان سهولة القراءة. تحقَّق مما يلي:
|
| T-Visual:Themes | مرئي:المظاهر | تأكَّد من أنّ كل النص قابل للقراءة في المظهرين الفاتح والداكن. التأكّد من أنّ جميع العناصر المرئية يمكن تمييزها بوضوح وجمالية في المظهرين الفاتح والداكن |
| التنقل | ||
| T-Nav:Back | Nav:BackButton, Nav:BackGesture |
التنقّل إلى جميع أجزاء التطبيق، أي جميع الشاشات ومربّعات الحوار والإعدادات وجميع مسارات المستخدمين من كل شاشة تطبيق، اضغط على زر الرجوع أو استخدِم إيماءة التمرير السريع للرجوع. يجب أن ينتقل التطبيق إلى الشاشة السابقة أو الرئيسية. |
| T-Nav:State | Nav:State | من شاشة كل تطبيق، اضغط على مفتاح الشاشة الرئيسية بالجهاز أو مرِّر سريعًا للأعلى في وضع التنقّل بالإيماءات، ثم أعِد تشغيل التطبيق من شاشة جميع التطبيقات. |
| الإشعارات | ||
| T-Notify:Info | Notify:Info, Notify:Messaging |
تفعيل جميع أنواع الإشعارات التي يمكن للتطبيق عرضها ومراقبتها في لوحة الإشعارات وسِّع الإشعارات حيثما ينطبق ذلك (الإصدار 4.1 من نظام التشغيل Android والإصدارات الأحدث)، وانقر على جميع الإجراءات المتاحة. |
| تسهيل الاستخدام | ||
| T-Access:Targets | الوصول:الاستهدافات | تأكَّد من أنّ مساحات اللمس تحافظ على حجم وموضع ثابتَين يسهل الوصول إليهما لجميع أحجام الشاشات وإعداداتها. للحصول على معلومات حول تسهيل الاستخدام، يمكنك الاطّلاع على Accessibility Scanner. |
| T-Access:Contrast | إمكانية الوصول:التباين | تحقَّق من تباين جميع العناصر المرئية. |
| T-Access:Description | Access:Description | تأكَّد من أنّ جميع عناصر واجهة المستخدم، باستثناء TextView، تتضمّن أوصافًا للمحتوى. |
الوظائف
| رقم التعريف | الميزة | الوصف |
|---|---|---|
| الصوت | ||
| T-Audio:Init | Audio:Init | ابدأ تشغيل الصوت. تأكَّد من أنّ التطبيق يبدأ تشغيل الصوت في غضون ثانية واحدة أو يقدّم مؤشرًا مرئيًا على أنّه يتم إعداد بيانات الصوت لتشغيلها. |
| T-Audio:Focus | الصوت:التركيز | ابدأ تشغيل الصوت. يجب أن يطلب التطبيق الحصول على أولويّة الصوت. عند توقّف تشغيل الصوت، يجب أن يتنازل التطبيق عن تركيز الصوت (ويحدث ذلك تلقائيًا للتطبيقات التي تستهدف الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث). |
| T-Audio:Interrupt | الصوت:مقاطعة | ابدأ تشغيل الصوت. ابدأ تشغيل الصوت في تطبيق آخر. يجب أن يستجيب تطبيقك للتغيير في تركيز الصوت وأن يوقف تشغيل الصوت أو يخفض مستوى صوت التشغيل. |
| T-Audio:Background | الصوت:الخلفية | ابدأ تشغيل الصوت. التفاعل مع تطبيق آخر غير صوتي كتطبيق في المقدّمة، ويجب أن يستمر التطبيق في تشغيل الصوت في الخلفية |
| T-Audio:Notification | الصوت:الإشعار | ابدأ تشغيل الصوت. تفاعَل مع تطبيق آخر غير صوتي كتطبيق في المقدّمة. تأكَّد من أنّ تطبيقك يواصل تشغيل الصوت في الخلفية وأنّه أنشأ إشعارًا منمّقًا باستخدام MediaStyle. اطّلِع على التعامل بشكل جيد مع عناصر التحكّم في الوسائط. |
| T-Audio:Resume | الصوت:استئناف | ابدأ تشغيل الصوت. التفاعل مع تطبيق آخر غير صوتي باعتباره تطبيق المقدّمة، ثم التفاعل مع تطبيقك لجعله التطبيق العلوي، فيجب أن يتم استئناف الصوت أو استعادة مستوى الصوت. وفي حال عدم توفّرها، يجب أن يوضّح التطبيق للمستخدم أنّه تم إيقاف التشغيل مؤقتًا. |
| T-Video:PiP | الفيديو:صورة داخل صورة | فعِّل تشغيل الفيديو في التطبيق في وضع "نافذة ضمن النافذة". |
| T-Video:Encoding | الفيديو:الترميز | تأكَّد من أنّ التطبيق يشفّر الفيديو باستخدام معيار ضغط الفيديو HEVC. |
| المشاركة | ||
| المشاركة:ورقة | أنشئ هدفًا وابدأ نشاطًا من خلال استدعاء startActivity() مع الهدف كمعلَمة. اطّلِع على استخدام ورقة المشاركة في Android. يجب أن يعرض تطبيقك "قائمة مشاركة البيانات من Android". |
|
| خدمات تعمل في الخلفية | ||
| CR-6 | الخلفية:الخدمات | استخدِم جميع الميزات الرئيسية في تطبيقك، وتأكَّد من عدم بدء أي خدمات تعمل في الخلفية لفترة طويلة. بدِّل إلى تطبيق آخر لإرسال تطبيقك إلى الخلفية. انتقِل إلى الإعدادات وتحقَّق ممّا إذا كان تطبيقك يشغّل أي خدمات في الخلفية. على الإصدار 4.0 من نظام التشغيل Android والإصدارات الأحدث، انتقِل إلى شاشة التطبيقات وابحث عن التطبيق في علامة التبويب قيد التشغيل. |
الأداء والثبات
| رقم التعريف | الميزة | الوصف |
|---|---|---|
| الأداء | ||
| T- Performance:Startup | الأداء:بدء التشغيل | ابدأ تشغيل تطبيقك. تأكَّد من أنّ التطبيق يتم تحميله بسرعة أو أنّه يوفّر مؤشرًا للتقدّم أو رمزًا مماثلاً إذا استغرق تحميل التطبيق أكثر من ثانيتَين. |
| T-Performance:FPS | الأداء:عدد اللقطات في الثانية | استخدِم جميع الميزات الرئيسية في تطبيقك، وتأكَّد من أنّ التطبيق يعرض 60 إطارًا على الأقل في الثانية. استخدِم الخيار عرض ملف التعريف HWUI للمساعدة في اختبار تطبيقك. |
| T-Performance:Strict | الأداء:دقيق |
فعِّل يجب الانتباه جيدًا إلى عملية جمع البيانات غير المرغوب فيها وتأثيرها في تجربة المستخدم. |
| الثبات | ||
| T-Stability:ANR | الثبات:أخطاء ANR | استخدِم جميع الميزات الرئيسية في تطبيقك، وتأكَّد من أنّه لا يتعطّل أو يحظر سلسلة واجهة المستخدم، ما يؤدي إلى حدوث أخطاء ANR (التطبيق لا يستجيب) على نظام التشغيل Android. راجِع تقرير الإطلاق التجريبي على Google Play لتحديد المشاكل المحتملة في استقرار التطبيق. |
| SDK | ||
| T-SDK:Platform | حزمة تطوير البرامج (SDK): النظام الأساسي | تشغيل تطبيقك على أحدث إصدار متاح للجميع من منصة Android استخدام جميع الميزات الرئيسية تأكَّد من أنّ التطبيق لا يتعطّل ويعمل بدون فقدان أي من وظائفه الأساسية. |
| T-SDK:الأحدث | SDK:Target, SDK:Compile |
راجِع ملف البيان في Android وإعدادات الإصدار للتأكّد من أنّ التطبيق تم إنشاؤه باستخدام أحدث حزمة SDK متاحة (targetSdk وcompileSdk). |
| T-SDK:3P | SDK:3P | راجِع ملف build.gradle لتطبيقك بحثًا عن أي تبعيات قديمة. |
| T-SDK:Non | SDK:Non | استخدِم أداة lint في "استوديو Android" لرصد استخدام واجهات غير متوفرة في حزمة SDK. اطّلِع على القيود المفروضة على الواجهات غير المتوفرة في حزمة SDK لمعرفة طرق الاختبار البديلة. |
| T-SDK:Debug | SDK:Debug | راجِع ملف build.gradle الخاص بتطبيقك للتأكّد من عدم تضمين أي مكتبات تصحيح أخطاء. |
| البطارية | ||
| T-Battery:Manage | البطارية:إدارة |
استخدام جميع ميزات التطبيق الرئيسية في وضعَي "السكون" و"استعداد التطبيق" تأكَّد من أنّ التنبيهات والمؤقتات والإشعارات وعمليات المزامنة تعمل بشكل صحيح في فترة الصيانة في وضع "السكون" وعندما يخرج التطبيق من وضع "استعداد التطبيق". اختبِر سلوك ميزتَي "قيلولة" و"تطبيقات وضع الاستعداد" باستخدام أوامر ADB (راجِع الاختبار باستخدام ميزتَي "قيلولة" و"تطبيقات وضع الاستعداد" للاطّلاع على المتطلبات والإرشادات). لتشخيص استنزاف البطارية غير المتوقّع، استخدِم أداة Power Profiler في "استوديو Android" أو أداة Battery Historian مع العمل المخطَّط له في الخلفية. |
الخصوصية والأمان
| رقم التعريف | الميزة | الوصف |
|---|---|---|
| الأذونات | ||
| T-Permissions:Min | الأذونات:Min | راجِع جميع الأذونات التي يتطلّبها تطبيقك في ملف البيان وفي وقت التشغيل وفي إعدادات التطبيق على الجهاز (الإعدادات > معلومات التطبيق). |
| T-Permissions:Sensitive | الأذونات:حسّاسة | استخدِم أي ميزات في تطبيقك تطلب أذونات. تأكَّد من أنّ التطبيق يطلب الإذن بالوصول إلى البيانات أو الخدمات الحسّاسة لحالات الاستخدام الأساسية للتطبيق فقط. تأكَّد من إبلاغ المستخدم بوضوح بتبعات منح الإذن بالوصول إلى البيانات والخدمات الحسّاسة. |
| T-Permissions:Runtime | الأذونات:وقت التشغيل | استخدِم جميع ميزات تطبيقك التي تتطلّب أذونات. تأكَّد من طلب الأذونات بشكل غير مباشر، أي فقط عند الوصول إلى الميزات، وليس أثناء بدء تشغيل التطبيق. |
| T-Permissions:Explain | Permissions:Explain | استخدِم جميع ميزات تطبيقك التي تتطلّب أذونات. تأكَّد من أنّ التطبيق يوضّح للمستخدم سبب الحاجة إلى الأذونات. |
| T-Permissions:Degrade | الأذونات:خفض مستوى الأداء | استخدِم جميع ميزات تطبيقك التي تتطلّب أذونات. رفض الأذونات أو إلغاؤها تأكَّد من أنّ التطبيق يوفّر حالة استخدام بديلة ويستمر في العمل. |
| البيانات والملفات | ||
| T-Data:Sensitive | البيانات:حسّاسة | راجِع جميع البيانات المخزّنة في وحدة التخزين الداخلية. تأكَّد من أنّ البيانات المخزَّنة خارجيًا ليست بيانات حسّاسة. |
| T-Data:Handling | البيانات:حسّاسة | راجِع طريقة التعامل مع البيانات التي يتم تحميلها من وحدة التخزين الخارجية ومعالجتها. |
| T-Data:Log | البيانات:السجلّ | استخدِم جميع ميزات التطبيق الرئيسية أثناء مراقبة سجلّ الجهاز. تأكَّد من عدم تسجيل أي معلومات خاصة بالمستخدم. |
| T-Data:IDs | البيانات:المعرّفات | استخدام جميع ميزات التطبيق الرئيسية تأكَّد من أنّ التطبيق لا يستخدم أي معرّفات أجهزة، مثل IMEI، لأغراض التعريف. |
| إثبات الهوية | ||
| T-Identity:Hints | Identity:Hints | استخدِم جميع ميزات التطبيق التي تتطلّب إدخال بيانات من المستخدم. تأكَّد من أنّ التطبيق يقدّم تلميحات لملء حقول الإدخال تلقائيًا ببيانات مثل بيانات اعتماد الحساب وغيرها من المعلومات الحساسة. |
| T-Identity:CredMan | Identity:CredMan | سجِّل الدخول إلى تطبيقك. تأكَّد من أنّ التطبيق يدمج مدير بيانات الاعتماد في Android لتوفير تجربة تسجيل دخول موحّدة تتوافق مع مفاتيح المرور والهوية الموحّدة وكلمات المرور. |
| T-Identity:Bio | الهوية:السيرة الذاتية | استخدام جميع ميزات التطبيق التي تتطلّب المصادقة تأكَّد من أنّ التطبيق يحمي المعاملات المالية أو المعلومات الحسّاسة، مثل مستندات المستخدم المهمة، من خلال المصادقة البيومترية. |
| مكوّنات التطبيق | ||
| T-Components:Export | المكوّنات:تصدير | راجِع جميع مكوّنات التطبيق المحدّدة في ملف بيان Android للتأكّد من حالة التصدير المناسبة. يجب ضبط السمة التي تم تصديرها بشكلٍ صريح لجميع المكوّنات. |
| T-Components:Permissions | المكوّنات:الأذونات | راجِع جميع الأذونات التي يتطلّبها تطبيقك في ملف البيان وفي وقت التشغيل وفي إعدادات التطبيق على الجهاز (الإعدادات > معلومات التطبيق). |
| T-Components:Protection | المكوّنات:الحماية | راجِع جميع موفّري المحتوى المحدّدين في ملف بيان Android. تأكَّد من أنّ كل مقدّم خدمة لديه protectionLevel مناسب. |
| اتصال بالشبكات | ||
| T-Network:Traffic | الشبكة:حركة البيانات | عليك تحديد إعدادات أمان الشبكة التي توقف زيارات cleartext، ثم اختبار التطبيق. |
| T-Network:Config | الشبكة:الإعداد | راجِع إعدادات أمان الشبكة للتطبيق. تأكَّد من عدم تعذُّر أي عمليات تحقّق من الأخطاء في الإعدادات. |
| T-Network:Play | الشبكة:تشغيل | تأكَّد من تهيئة موفّر الأمان عند بدء تشغيل التطبيق لخدمات Google Play. |
| WebViews | ||
| T-WebViews:Config | WebViews:Config | راجِع إعدادات أمان الشبكة للتطبيق. تأكَّد من عدم تعذُّر أي عمليات تحقّق من الأخطاء في الإعدادات. |
| T-WebViews:JavaScript | WebViews:JavaScript | لكل WebView، انتقِل إلى صفحة تتطلّب JavaScript. |
| T-WebViews:Nav | WebViews:Config, WebViews:JavaScript |
في كل WebView، حاوِل الانتقال إلى المواقع الإلكترونية والمحتوى الذي لا يتم تحميله مباشرةً من خلال تطبيقك. |
| التنفيذ | ||
| T-Execution:Bundles | التنفيذ:الحِزم | تأكَّد من أنّ التطبيق يستخدم حِزم Android App Bundle ولا يحمّل الرموز البرمجية بشكل ديناميكي من خارج حزمة APK الخاصة بالتطبيق. |
| التشفير | ||
| T-Crypto:Algorithms | العملات المشفّرة:الخوارزميات | تأكَّد من أنّ التطبيق يستخدم خوارزميات تشفير قوية توفّرها المنصة وأداة إنشاء أرقام عشوائية. تحقَّق أيضًا من أنّ التطبيق لا يستخدم خوارزميات مخصّصة. |
Google Play
| رقم التعريف | الميزة | الوصف |
|---|---|---|
| السياسات | ||
| T-Play:Policies | Play:Policies, Play:Maturity, Play:Bugs |
سجِّل الدخول إلى Google Play Developer Console لمراجعة ملفك الشخصي كمطوِّر ووصف التطبيق ولقطات الشاشة ورسومات الميزات وتقييم المحتوى وملاحظات المستخدمين. |
| صفحة تفاصيل التطبيق | ||
| T-Play:Graphics | تشغيل:الرسومات | نزِّل الرسم المميز ولقطات الشاشة، ثم قلِّل حجمها لتتطابق مع أحجام العرض على الأجهزة وأشكال الأجهزة التي تستهدفها. |
| T-Play:Assets | Play:Graphics, Play:NonAndroid, Play:Misleading |
راجِع جميع مواد العرض الرسومية والوسائط والنصوص ومكتبات الرموز البرمجية والمحتوى الآخر الذي يتم تضمينه في التطبيق أو تنزيل ملف البيانات الموسّعة. |
أرشفة
النُسخ السابقة من إرشادات الجودة الأساسية للتطبيقات: