ترميز عمليات تتبُّع تسلسل استدعاء الدوال البرمجية أو إزالة تشويشها

تؤدي الأعطال وأخطاء ANR في نظام التشغيل Android إلى إنشاء عملية تتبُّع تسلسُل استدعاء دوال برمجية، وهي عبارة عن لقطة لتسلسُل الدوال المتداخلة التي تم استدعاؤها في برنامجك حتى لحظة تعطُّلها. ويمكن أن تساعدك هذه اللقطات في تحديد أي مشاكل في المصدر وحلّها.

إذا تم تطوير تطبيقك أو لعبتك باستخدام لغة الترميز Java وكنت تستخدم ProGuard لتحسين تطبيقك وإخفاء مفاتيح فك تشفيره، يمكنك تحميل ملف ربط ProGuard لكل إصدار من إصدارات تطبيقك في Play Console. وفي حال تم التطوير باستخدام رموز برمجية أصلية، مثل C++‎، يمكنك تحميل ملف لتصحيح أخطاء الترميز لكل إصدار من إصدارات تطبيقك في Play Console. ويُسهِّل ذلك الإجراء تحليل الأعطال وأخطاء ANR وإصلاحها.

ملاحظة مهمة: لا يُستخدم سوى ملفات إعداد ReTrace المتوافقة لإزالة تشويش التطبيقات التي تم تطويرها باستخدام Java. وهذا هو التنسيق نفسه المستخدم في ProGuard أو R8.

الخطوة 1: إنشاء ملف ترميز أو إزالة تشويش

لإزالة تشويش أخطاء ANR أو الأعطال في أحد إصدارات تطبيقك أو ترميزها، عليك أولاً إنشاء الملفات المطلوبة للإصدار نفسه من تطبيقك. ويجب إنشاء ملف وتحميله لكل إصدار جديد من تطبيقك من أجل إزالة التشويش أو الترميز.

Java: إنشاء ملف ربط ProGuard

لإزالة تشويش عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية في Java، عليك أولاً إنشاء ملف ربط ProGuard. للتعرّف على كيفية إجراء ذلك، انتقِل إلى موقع Google Developers الإلكتروني.

الإجراء الأصلي: إنشاء ملف تصحيح أخطاء الترميز

الإصدار 4.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث

إذا كان مشروعك ينشئ مجموعة حزمات تطبيقات Android، يمكنك تلقائيًا تضمين ملف تصحيح أخطاء الترميز فيها. لتضمين هذا الملف، أضِف ما يلي إلى ملف build.gradle في تطبيقك:

  • android.defaultConfig.ndk.debugSymbolLevel = 'FULL'‎

ملاحظة: الحد الأقصى المسموح به لحجم ملف تصحيح أخطاء الترميز هو 800 ميغابايت. وفي حال كان حجم الملف أكبر من ذلك، يمكنك استخدام SYMBOL_TABLE بدلاً من FULL لتقليل الحجم.

إذا كان مشروعك ينشئ حزمة APK، استخدِم إعداد إصدار build.gradle أعلاه لإنشاء ملف لتصحيح أخطاء الترميز بشكل منفصل. حمِّل يدويًا ملف تصحيح أخطاء الترميز إلى Google Play Console كما هو موضَّح أدناه في الخطوة 2: تحميل ملف ترميز أو إزالة تشويش. وكجزء من عملية التصميم، يعمل المكوّن إضافي لنظام Gradle المتوافق مع Android على إخراج هذا الملف في موقع المشروع التالي:

  • ‎app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip

الإصدار 4.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأقدم (وأنظمة التصميم الأخرى)

كجزء من عملية التصميم لحِزمة تطبيق أو حِزمة APK، يحتفظ المكوّن الإضافي لنظام Gradle المتوافق مع Android بنسخة من المكتبات التي لم تتم إزالتها في دليل المشروع، ويتّبِع هذا الدليل بنية مشابهة لما يلي:

‎app/build/intermediates/cmake/universal/release/obj

‎├── armeabi-v7a/

‎│   ├── libgamenegine.so

‎│   ├── libothercode.so

‎│   └── libvideocodec.so

‎├── arm64-v8a/‎

‎│   ├── libgamenegine.so

‎│   ├── libothercode.so

‎│   └── libvideocodec.so

‎├── x86/‎

‎│   ├── libgamenegine.so

‎│   ├── libothercode.so

‎│   └── libvideocodec.so

‎└── x86_64/‎

‎    ├── libgameengine.so

‎    ├── libothercode.so

‎    └── libvideocodec.so

ملاحظة: إذا كنت تستخدم نظام تصميم مختلفًا، يمكنك تعديله لتخزين المكتبات التي لم تتم إزالتها في أي دليل يتبع البنية المطلوبة الواردة أعلاه.

  1. اضغط محتوى هذا الدليل:
    • $ cd app/build/intermediates/cmake/universal/release/obj
    • $ zip -r symbols.zip .
  2. حمِّل يدويًا ملف symbols.zip إلى Play Console على النحو الموضّح أدناه في الخطوة 2: تحميل ملف ترميز أو إزالة تشويش.

يبلغ الحد الأقصى المسموح به لحجم ملف تصحيح أخطاء الترميز 800 ميغابايت. وإذا كان الملف كبيرًا جدًا، من المرجّح أن يكون السبب هو احتواء ملفات ‎.so على جدول رموز برمجية (أسماء الدوال)، بالإضافة إلى معلومات تصحيح الأخطاء في رموز DWARF (أسماء الملفات أو أسطر الرمز البرمجي). وهذه المعلومات غير ضرورية لكتابة الرمز البرمجي الخاص بك، ويمكنك إزالتها من خلال تنفيذ الأمر التالي:

  • ‎$OBJCOPY --strip-debug lib.so lib.so.sym

ملاحظة: يشير ‎$OBJCOPY إلى الإصدار المحدّد لواجهة التطبيق الثنائية (ABI) التي تريد إزالتها، مثل: ‎ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-objcopy.

الخطوة 2: تحميل ملف ترميز أو إزالة تشويش

لإزالة تشويش أخطاء ANR أو الأعطال في أحد إصدارات تطبيقك أو ترميزها، عليك تحميل ملفات إزالة التشويش أو الترميز لكل إصدار من تطبيقك.

ملاحظة مهمة: هذه الخطوة مطلوبة فقط للمطوِّرين الذين يستخدمون حِزم APK. إذا كنت تستخدم حِزمة تطبيق والإصدار 4.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android أو الإصدارات الأحدث، في هذه الحالة ليس عليك اتّخاذ أي إجراء. وسنستخرج تلقائيًا ملف إزالة التشويش من الحزمة ويمكنك التخطّي إلى الخطوة 3: عرض عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية لتعطُّل التطبيق التي تمت إزالة تشويشها. يمكنك معرفة المزيد من المعلومات عن حِزم التطبيقات على موقع "مطوّرو تطبيقات Android".

تحميل الملفات باستخدام Play Console

لتحميل ملف ترميز أو إزالة تشويش، اتّبِع الخطوات التالية:

  1. افتح Play Console.
  2. اختَر أحد التطبيقات.
  3. في القائمة اليمنى، اختَر الإصدار > مستكشف حزم التطبيقات.
  4. اختَر العنصر ذي الصلة باستخدام أداة الاختيار في أعلى يسار الصفحة.
  5. اختَر علامة التبويب عمليات التنزيل وانتقِل للأسفل إلى قسم "مواد العرض".
  6. انقر على سهم التحميل لملف الربط أو رموز تصحيح الأخطاء حسب الاقتضاء لتحميل ملف الترميز أو إزالة التشويش للإصدار المحدَّد من تطبيقك.
تحميل الملفات باستخدام Google Play Developer API

لتحميل الملفات باستخدام Google Play Developer API، انتقِل إلى موقع Google Developers الإلكتروني.

الخطوة 3: عرض عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية لتعطُّل التطبيق التي تمت إزالة تشويشها

بعد تحميل ملف ربط ProGuard أو ملف تصحيح أخطاء الترميز لأحد إصدارات تطبيقك، ستتم إزالة التشويش لأي أعطال أو أخطاء ANR تحدث بعد ذلك. يمكنك مراجعة عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية التي تمت إزالة تشويشها لكلّ من الأعطال الفردية وأخطاء ANR في صفحة الأعطال وأخطاء ANR في تطبيقك.

  1. افتح Play Console.
  2. اختَر أحد التطبيقات.
  3. في القائمة اليمنى، اختَر الجودة > مؤشرات Android الحيوية > الأعطال وأخطاء ANR.
  4. اختَر عطلاً.
  5. في قسم "تتبُّع تسلسل استدعاء الدوال البرمجية"، ستظهر لك عمليات تتبُّع تسلسل استدعاء الدوال البرمجية التي تم ترميزها وإزالة تشويشها.

ملاحظة مهمة: بعد تحميل ملف الربط لأحد إصدارات تطبيقك، ستتم إزالة التشويش فقط عن الأعطال وأخطاء ANR التي تحدث مستقبلاً في هذا الإصدار من تطبيقك. ولن تتم إزالة التشويش عن أعطال التطبيق أو أخطاء ANR التي تحدث قبل تحميل ملف الربط لهذا الإصدار من تطبيقك.

الأسئلة الشائعة

لا أريد استخدام أداة الترميز أو إزالة التشويش في Play Console. هل يمكنني إجراء ذلك بلا اتصال بالإنترنت؟

تستخدم Play Console أداة ndk-stack لترميز عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية للتطبيقات الأصلية وReTrace لأعطال Java. في حال اخترت عدم مشاركة ملفات إزالة التشويش، يمكنك نسخ حِزم الأعطال التي تم تشويشها من Play Console، ثم ترميزها باستخدام أداة مناسبة بلا اتصال بالإنترنت. ومع ذلك، يجب تنفيذ هذه العملية يدويًا لكل حزمة من الأعطال، ما يجعلها بطيئة وتستغرق وقتًا طويلاً. وعندما تتوفّر ملفات إزالة التشويش، ستتولى Play Console تنفيذ تلك العملية نيابةً عنك.

لقد حمّلتُ ملف الترميز أو إزالة التشويش. لماذا لا تزال الأعطال وأخطاء ANR مُشوَّشة؟

بعد تحميل ملف ربط ProGuard أو ملف تصحيح أخطاء الترميز لأحد إصدارات التطبيق، ستتم إزالة التشويش فقط عن الأعطال وأخطاء ANR التي تحدث بعد ذلك. لكي تظهر لك أخطاء ANR والأعطال التي تمت إزالة تشويشها في Play Console، يجب الانتظار فترة من الوقت إلى أن تبلِغ أجهزة المستخدمين عن أخطاء ANR والأعطال الجديدة.

بعد تحميل ملف الترميز أو إزالة التشويش، لماذا تمت إزالة التشويش عن الأعطال وأخطاء ANR بشكل جزئي فقط؟

سبب ذلك هو تحميل ملف ترميز أو إزالة تشويش غير مكتمل. احرِص على تضمين ملفات الترميز لتطبيقك بالكامل، خاصةً إذا كنت تستخدم عملية تصميم معقّدة أو متعددة المراحل. وأحد الأسباب الأكثر شيوعًا لإزالة التشويش بشكل جزئي هو استخدام مكتبة تابعة لجهة خارجية. وفي هذه الحالة، قد يكون بإمكانك الحصول على ملفات إزالة التشويش من موفِّر المكتبة.

بعد تحميل ملف الترميز أو إزالة التشويش، لماذا يظهر لي عدد أقل وأكثر خطورة في الوقت ذاته من الأعطال وأخطاء ANR؟

بدون توفُّر ملفات إزالة التشويش، سيتم عرض العطل أو خطأ ANR نفسه على جهاز يعمل بإصدار 32 بت أو 64 بت أو معالجات ARM أو جهاز Intel بشكلٍ منفصل. وعند توفير ملفات إزالة التشويش، يمكننا تجميع هذه الأعطال معًا، ما يمنحك تصورًا أفضل عن الأعطال وأخطاء ANR الأكثر تأثيرًا في تطبيقك.

ماذا يحدث إذا نسيتُ تحميل الملف؟

في حال نسيانك تحميل الملف لإصدار جديد من تطبيقك، ستتم إعادة تشويش الأعطال وأخطاء ANR. اتّبِع التعليمات أعلاه لتحميل الملف الآن. بعد تحميل ملف ربط ProGuard أو ملف تصحيح أخطاء الترميز لأحد إصدارات التطبيق، ستتم إزالة التشويش فقط عن الأعطال وأخطاء ANR التي تحدث بعد ذلك. لكي تظهر لك أخطاء ANR والأعطال التي تمت إزالة تشويشها في Play Console، يجب الانتظار فترة من الوقت إلى أن تبلِغ أجهزة المستخدمين عن أخطاء ANR والأعطال الجديدة.

لتجنُّب نسيان تحميل الملف، يمكنك تعديل عملية التصميم ليتم استخدام حِزم التطبيقات مع الإصدار 4.1 والإصدارات الأحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android. في هذه الحالة، يمكنك تلقائيًا تضمين ملف لتصحيح أخطاء الترميز في حِزمة التطبيق من خلال اتّباع التعليمات الواردة على موقع "مطوّرو تطبيقات Android".

ماذا يحدث في حال تحميل ملف غير صحيح؟

في حال تحميل ملف غير صحيح لأحد إصدارات تطبيقك، ستتم إعادة تشويش الأعطال وأخطاء ANR. لتحميل نسخة مصحَّحة، اتَّبع الخطوات التالية:

  1. افتح Play Console.
  2. اختَر أحد التطبيقات.
  3. في القائمة اليمنى، اختَر الإصدار > مستكشف حزم التطبيقات.
  4. اختَر العنصر ذي الصلة باستخدام أداة الاختيار في أعلى يسار الصفحة.
  5. اختَر علامة التبويب عمليات التنزيل وانتقِل للأسفل إلى قسم "مواد العرض".
  6. انقر على رمز الحذف بجانب ملف الترميز أو إزالة التشويش غير الصحيح.
  7. بعد حذف إصدار الملف غير الصحيح، انقر على رمز التحميل وحمِّل الملف الصحيح لإصدار تطبيقك.

بعد تحميل ملف ربط ProGuard الصحيح أو ملف تصحيح أخطاء الترميز لأحد إصدارات تطبيقك، ستتم إزالة التشويش فقط عن أي أعطال أو أخطاء ANR تحدث بعد ذلك. لكي تظهر لك أخطاء ANR والأعطال في Play Console بعد إزالة تشويشها، عليك الانتظار فترة من الوقت إلى أن يتم الإبلاغ عن أخطاء ANR والأعطال الجديدة على أجهزة المستخدمين.

ملاحظة: لتجنُّب مخاطر تحميل إصدار غير صحيح من الملف، يمكنك تعديل عملية التصميم ليتم استخدام حِزم التطبيقات مع الإصدار 4.1 من المكوِّن الإضافي لنظام Gradle المتوافق مع Android أو الإصدارات الأحدث. في هذه الحالة، يمكنك تلقائيًا تضمين ملف لتصحيح أخطاء الترميز في حِزمة التطبيق من خلال اتّباع التعليمات الواردة على موقع "مطوّرو تطبيقات Android".

أستخدم حاليًا حِزم APK. كيف يمكنني التبديل إلى استخدام حِزم التطبيقات؟

للبدء، يُرجى الانتقال إلى موقع "مطوّرو تطبيقات Android".

يحتوي تطبيقي على رمز برمجي أصلي ورمز Java. هل يمكنني تحميل ملف ترميز أصلي وكذلك ملف إزالة التشويش في Java؟

نعم، يمكنك ذلك.

لماذا لا يتم عرض عملية تتبُّع تسلسُل استدعاء الدوال البرمجية في بعض أخطاء ANR؟

في بعض الأحيان، يواجه النظام خطأ ANR، ولكن يتعذّر عليه جمع بيانات عملية تتبُّع تسلسل استدعاء الدوال البرمجية. في مثل هذه الحالة، يتم عرض خطأ ANR لمنحك صورة أكثر شمولاً عن استقرار تطبيقك، ولكن لا يمكن عرض تقرير تتبُّع تسلسل استدعاء الدوال البرمجية ذاته. يتم تجميع أخطاء ANR بدون عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية حسب النوع والنشاط، لذا قد تساعد مراجعة أخطاء ANR المتشابهة وإصلاحها في تقليل عدد المعروض منها بدون عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية.

هل كان ذلك مفيدًا؟

كيف يمكننا تحسينها؟

هل تحتاج إلى مزيد من المساعدة؟

جرِّب الخطوات التالية:

بحث
محو البحث
إغلاق البحث
القائمة الرئيسية
12119504115259824911
true
مركز مساعدة البحث
true
true
true
true
true
92637
false
false