تضمين الرموز الأصلية في إصدار التطبيق

يتم تلقائيًا إزالة مكتبات الرموز البرمجية الأصلية في إصدارات تطبيقك المخصّصة للإصدار. وتتضمّن عملية الإزالة هذه إزالة جدول الرموز ومعلومات تصحيح الأخطاء الواردة في أي مكتبات أصلية يستخدمها تطبيقك. وتؤدي إزالة مكتبات الرموز البرمجية الأصلية إلى توفير مساحة تخزين كبيرة، ولكن يتعذّر تشخيص الأعطال في Google Play Console بسبب المعلومات الناقصة (مثل أسماء الفئات والدوال). لتصحيح أخطاء الأعطال، يجب تضمين ملف رموز تصحيح الأخطاء مع تطبيقك في Play Console.

تحميل ملف رموز

تُدرِج تقارير Google Play Console الأعطال الأصلية ضمن مؤشرات Android الحيوية. يمكنك اتّباع بضع خطوات لإنشاء ملف رموز تصحيح الأخطاء وتحميله لتطبيقك. ويتيح هذا الملف تتبُّع تسلسل استدعاء الدوال البرمجية للأعطال الأصلية التي تم ترميزها (والتي تتضمّن أسماء الفئات والدوال) في "مؤشرات Android الحيوية" لمساعدتك في تصحيح أخطاء تطبيقك في مرحلة الإنتاج. تختلف هذه الخطوات حسب إصدار المكوّن الإضافي لنظام Gradle المتوافق مع Android المستخدَم في مشروعك وما إذا كنت تستخدم مجموعة حزمات تطبيق Android (يُنصح بذلك) أو حِزمة APK.

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

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

android.buildTypes.release.ndk.debugSymbolLevel = { SYMBOL_TABLE | FULL }

اختَر مستوى رموز تصحيح الأخطاء من الخيارات التالية:

  • استخدِم SYMBOL_TABLE للحصول على أسماء الدوال في عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية التي تم ترميزها في Play Console. يتيح هذا المستوى استخدام علامات الحذف.
  • استخدِم FULL للحصول على أسماء الدوال والملفات وأرقام الأسطر في عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية التي تم ترميزها في Play Console.

إذا كان مشروعك ينشئ حزمة APK، استخدِم إعداد android.buildTypes.release.ndk.debugSymbolLevel الموضّح سابقًا لإنشاء ملف تصحيح الأخطاء في الترميز بشكل منفصل. حمِّل يدويًا ملف رموز تصحيح الأخطاء الأصلية إلى Google Play Console (تشبه العملية تحميل ملف ربط لإزالة تشويش عمليات تتبُّع تسلسُل استدعاء الدوال البرمجية). وكجزء من عملية التصميم، يعمل المكوّن الإضافي لنظام Gradle المتوافق مع Android على إخراج هذا الملف في موقع المشروع التالي:

app/build/outputs/native-debug-symbols/<var>variant-name</var>/native-debug-symbols.zip

إذا كانت العناصر التابعة تحتوي على مكتبات أصلية، من المحتمل أن يتم حذف معلومات تصحيح الأخطاء لتقليل الحجم. يمكنك التحقّق من ذلك عن طريق تنفيذ إصدار باستخدام info مستوى السجلّ وتعيين debugSymbolLevel = { SYMBOL_TABLE | FULL }. بعد ذلك، ابحث عن السطر التالي في ناتج الإنشاء:

Unable to extract native debug metadata from ... because the native debug metadata has already been stripped.

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

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

app/build/intermediates/cmake/universal/release/obj/
├── armeabi-v7a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── arm64-v8a/
│   ├── libgameengine.so
│   ├── libothercode.so
│   └── libvideocodec.so
├── x86/
│   ├── libgameengine.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 يدويًا إلى Google Play Console.