Android پر ناکامیاں اور ANRs ایک اسٹیک ٹریس تیار کرتے ہیں، جو آپ کے پروگرام کے کریش ہونے تک کے نیسٹ کردہ فنکشنز کی ترتیب کا ایک سنیپ شاٹ ہے۔ یہ اسنیپ شاٹس آپ کو ماخذ میں کسی بھی مسائل کی شناخت اور حل کرنے میں مدد کر سکتے ہیں۔
اگر آپ کی ایپ یا گیم Java کا استعمال کرتے ہوئے ڈویلپ کی گئی تھی اور آپ اپنی ایپ کو بہتر بنانے اور اسے آبفسکیٹ کرنے کے لیے ProGuard استعمال کرتے ہیں، تو آپ Play کونسول میں اپنی ایپ کے ہر ورژن کے لیے ProGuard میپنگ فائل اپ لوڈ کر سکتے ہیں۔ اگر آپ کی ایپ یا گیم مقامی کوڈ، جیسے ++C کا استعمال کرتے ہوئے تیار کی گئی ہے تو آپ Play کونسول میں اپنی ایپ کے ہر ورژن کے لیے ڈیبگ علامتوں کی فائل اپ لوڈ کر سکتے ہیں۔ اس سے آپ کی ناکامیاں اور ANRs کا تجزیہ کرنا اور ان کو ٹھیک کرنا آسان ہو جاتا ہے۔
اہم: صرف ReTrace کے موافق میپنگ فائلیں Java میں مرتب کردہ ایپس کی آسانی سے سمجھ میں آنے کے لیے تعاون یافتہ ہیں۔ یہ وہی فارمیٹ ہے جسے ProGuard یا R8 استعمال کرتے ہیں۔
مرحلہ 1: آسانی سے سمجھ میں آنے والی یا علامتی فائل تخلیق کریں
اپنی ایپ کے کسی ورژن کے لیے اپنی ایپ کی ناکامیاں اور ANRs کو آسان کرنے یا علامتی بنانے کے لیے، آپ کو پہلے اپنی ایپ کے اسی ورژن کے لیے مطلوبہ فائلیں تخلیق کرنے کی ضرورت ہے۔ آپ کو اپنی ایپ کے ہر نئے ورژن کے لیے ایک فائل تخلیق اور اپ لوڈ کرنا ہوگا تاکہ ڈی آبفسکیشن یا سمبولیکشن کام کرے۔
Java: ProGuard میپنگ فائل تخلیق کریںJava اسٹیک ٹریسز کو آسان کرنے کے لیے، آپ کو پہلے ProGuard میپنگ فائل تخلیق کرنے کی ضرورت ہے۔ طریقہ جاننے کے لیے، Google Developers کی سائٹ پر جائیں۔
Android گریڈل پلگ ان ورژن 4.1 اور بعد کا ورژن
اگر آپ کا پروجیکٹ Android ایپ بنڈل بناتا ہے تو آپ خود کار طور پر اس میں ڈیبگ علامتوں کی فائل شامل کر سکتے ہیں۔ اس فائل کو شامل کرنے کے لیے، اپنی ایپ کی build.gradle
فائل میں درج ذیل کو شامل کریں:
android.defaultConfig.ndk.debugSymbolLevel = 'FULL'
نوٹ: ڈیبگ علامتوں کی فائل کی حد 800 MB ہے۔ اگر آپ کی ڈیبگ علامتوں کا فٹ پرنٹ بہت بڑا ہے تو فائل کا سائز کم کرنے کے لیے مکمل
کے بجائے SYMBOL_TABLE
استعمال کریں۔
اگر آپ کا پروجیکٹ ایک APK بناتا ہے تو اوپر دی گئی build.gradle بلڈ ترتیب کا استعمال کریں تاکہ ڈیبگ علامتوں کی فائل کو الگ سے تیار کر سکیں۔ ڈیبگ علامتوں کی فائل کو دستی طور پر Google Play کونسول پر اپ لوڈ کریں جیسا کہ ذیل میں 'مرحلہ 2: آسانی سے سمجھ میں آنے والی یا علامتی فائل اپ لوڈ کریں' میں بیان کیا گیا ہے۔ بلڈ پروسیس کے حصے کے طور پر، Android Gradle پلگ ان اس فائل کو مندرجہ ذیل پروجیکٹ کے مقام پر آؤٹ پٹ کرتا ہے۔
app/build/outputs/native-debug-symbols/variant-name/native-debug-symbols.zip
Android گریڈل پلگ ان ورژن 4.0 اور اس سے پہلے کا ورژن (اور دوسرے بلڈ سسٹمز)
ایپ بنڈل یا APK کے بلڈ کے پروسیس کے حصے کے طور پر، 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
نوٹ: اگر آپ ایک مختلف بلڈ سسٹم استعمال کرتے ہیں، تو آپ اس میں ترمیم کر سکتے ہیں تاکہ اوپر دی گئی مطلوبہ ساخت والی ڈائرکٹری میں انسٹریپ لائبریریوں کو ذخیرہ کیا جا سکے۔
- اس ڈائرکٹری کے مواد کو زپ اپ کریں:
$ cd app/build/intermediates/cmake/universal/release/obj
$ zip -r symbols.zip .
- Play کونسول پر دستی طور پر symbols.zip فائل اپ لوڈ کریں جیسا کہ ذیل میں مرحلہ 2 : ایک آسانی سے سجھ میں آنے والی یا علامتی فائل اپ لوڈ کریں میں بیان کیا گیا ہے۔
ڈیبگ علامتوں کی فائل کی حد 800 MB ہے۔ اگر آپ کی فائل بہت بڑی ہے، تو اس کا امکان ہے کہ آپ کی .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: ایک آسانی سے سجھ میں آنے والی یا علامتی فائل اپ لوڈ کریں
اپنی ایپ کے کسی ورژن کے لیے اپنی ایپ کی ناکامیاں اور ANRs کو آسان کرنے یا علامتی بنانے کے لیے، آپ کو اپنی ایپ کے ہر ورژن کے لیے آسانی سے سجھ میں آنے والی یا علامتی فائلز کو اپ لوڈ کرنا چاہیے۔
اہم: یہ مرحلہ صرف APKs استعمال کرنے والے ڈویلپرز کے لیے درکار ہے۔ اگر آپ ایپ بنڈل اور Android Gradle پلگ ان ورژن 4.1 یا اس کے بعد کا استعمال کر رہے ہیں تو آپ کو کچھ کرنے کی ضرورت نہیں ہے۔ ہم خود کار طور پر بنڈل سے آسانی سے سجھ میں آنے والی فائل کو لے لیں گے اور آپ مرحلہ 3: آسان کردہ کریش اسٹیک ٹریسز کو دیکھیں پر جا سکتے ہیں۔ آپ Android ڈیولپرز سائٹ پر ایپ بنڈلز کے بارے میں مزید جان سکتے ہیں۔
Play کونسول کا استعمال کرتے ہوئے فائلز اپ لوڈ کریںایک آسانی سے سجھ میں آنے والی یا علامتی فائل اپ لوڈ کرنے کے لیے:
- Play کونسول کھولیں۔
- ایک ایپ منتخب کریں۔
- دائیں مینیو پر، جانچ کریں اور ریلیز کریں > ایپ بنڈل ایکسپلورر کو منتخب کریں۔
- اوپر دائیں کونے میں منتخب کنندہ کا استعمال کرتے ہوئے، متعلقہ آرٹیفیکٹ کا انتخاب کریں۔
- ڈاؤن لوڈز ٹیب کو منتخب کریں، اور نیچے "اثاثے" سیکشن تک سکرول کریں۔
- اپنی ایپ کے ورژن کے لیے آسانی سے سجھ میں آنے والی یا علامتی فائل کو اپ لوڈ کرنے کے لیے میپنگ فائل یا ڈیبگ علامتیں جیسا کہ قابل اطلاق ہو اپ لوڈ کرنے کے لیے تیر کے نشان پر کلک کریں۔
Google Play ڈویلپر API کا استعمال کرتے ہوئے فائلز اپ لوڈ کرنے کے لیے، Google Developers سائٹ پر جائیں۔
مرحلہ 3: آسان کردہ کریش اسٹیک ٹریسز کو دیکھیں
آپ کی ایپ کے کسی ورژن کے لیے ProGuard میپنگ فائل یا ڈیبگ علامتوں کی فائل اپ لوڈ کرنے کے بعد، اس کے بعد ہونے والی ناکامیوں اور ANRs کو آسان کر دیا جائے گا۔ آپ اپنی ایپ کی ناکامیوں اور ANRs کے صفحہ پر انفرادی ناکامیوں اور ANRs کے لیے آسان کردہ اسٹیک ٹریسز کا جائزہ لے سکتے ہیں۔
- Play کونسول کھولیں۔
- ایک ایپ منتخب کریں۔
- دائیں مینو پر، نگرانی کریں اور بہتر بنائیں > Android vitals > ناکامیوں اور ANRs کو منتخب کریں۔
- کریش منتخب کریں۔
- "اسٹیک ٹریسز" سیکشن میں، آپ کو اپنے آسان کردہ اور علامتی اسٹیک ٹریسز نظر آئیں گے۔
اہم: ایک بار جب آپ اپنی ایپ کے کسی ورژن کے لیے میپنگ فائل اپ لوڈ کر لیتے ہیں تو آپ کی ایپ کے اس ورژن کے لیے صرف مستقبل کی ناکامیوں اور ANRs کو آسان کر دیا جائے گا۔ آپ کی ایپ کے کسی ورژن کی ناکامیاں اور ANRs جو آپ کے متعلقہ میپنگ فائل کو اپ لوڈ کرنے سے پہلے پیش آتے ہیں، ان کو آسان نہیں کیا جائے گا۔
اکثر پوچھے گئے سوالات
میں Play کونسول آسانی سے سمجھ میں آنے والی/علامتی استعمال نہیں کرنا چاہتا۔ کیا میں اسے صرف آف لائن کر سکتا ہوں؟Play کونسول مقامی ایپس کے اسٹیک ٹریسز کی علامت کے لیے ndk-stack اور Java کی ناکامیوں کے لیے ReTrace کا استعمال کرتا ہے۔ اگر آپ اپنی آسانی سے سمجھ میں آنے والی فائلوں کا اشتراک نہ کرنے کا انتخاب کرتے ہیں تو آپ Play کونسول سے آبفسکیٹ کردہ کریش اسٹیک کو کاپی کر سکتے ہیں اور ان کو علامتی بنانے کے لیے آف لائن مناسب ٹول استعمال کر سکتے ہیں۔ تاہم، یہ عمل ہر کریش اسٹیک کے لیے دستی طور پر کیا جانا چاہیے۔ اس وجہ سے یہ سست اور وقت طلب ہے۔ آپ کی آسانی سے سمجھ میں آنے والی فائلیں فراہم کر کے، Play کونسول آپ کے لیے اسے ہینڈل کرے گا۔
آپ کی ایپ کے کسی ورژن کے لیے ProGuard میپنگ فائل یا ڈیبگ علامتوں کی فائل اپ لوڈ کرنے کے بعد، صرف وہ ناکامیاں اور ANRs جو اس کے بعد ہونے والے ہیں آسان کیے جائیں گے۔ اس سے پہلے کہ آپ کو Play کنسول میں آسان کردہ ناکامیاں اور ANRs نظر آئیں، آپ کو صارفین کے آلات کے ذریعے نئی ناکامیوں اور ANRs کی اطلاع دینے کے لیے وقت کی اجازت دینے کی ضرورت ہوگی۔
یہ ایک نامکمل آسانی سے سمجھ میں آنے والی/علامتی فائل اپ لوڈ کرنے کی وجہ سے ہوتا ہے۔ اس بات کو یقینی بنائیں کہ آپ اپنی پوری ایپ کے لیے علامتی فائلیں شامل کرتے ہیں، خاص طور پر اگر آپ پیچیدہ یا ملٹی اسٹیج بنانے کا عمل استعمال کرتے ہیں۔ جزوی طور پر آسانی سے سمجھ میں آنے کی سب سے عام وجہ یہ ہے کہ آیا آپ فریق ثالث کی لائبریری استعمال کرتے ہیں۔ اس صورت میں، آپ لائبریری فراہم کنندہ سے آسانی سے سمجھ میں آنے والی فائلیں حاصل کر سکتے ہیں۔
آسانی سے سمجھ میں آنے والی فائلوں کے بغیر، 32 بٹ اور 64 بٹ ڈیوائس پر ایک ہی ناکامی یا ANR یا ARM اور ایک Intel آلہ کو الگ الگ دکھایا جائے گا۔ آسانی سے سمجھ میں آنے والی فائلیں فراہم کر کے، ہم ان کریشز کو ایک ساتھ کلسٹر کر سکتے ہیں، جس سے آپ کو آپ کی ایپ کے لیے سب سے زیادہ متاثر کن ناکامیاں اور ANRs کا ایک بہتر تناظر ملتا ہے۔
اگر آپ اپنی ایپ کے نئے ورژن کے لیے فائل اپ لوڈ کرنا بھول جاتے ہیں، تو کریشز اور ANRs پھر سے آبفسکیٹ ہو جائیں گے۔ اسے ابھی اپ لوڈ کرنے کے لیے اوپر دی گئی ہدایات پر عمل کریں۔ آپ کی ایپ کے کسی ورژن کے لیے ProGuard میپنگ فائل یا ڈیبگ علامتوں کی فائل اپ لوڈ کرنے کے بعد، صرف وہ ناکامیاں اور ANRs جو اس کے بعد ہونے والے ہیں آسان کیے جائیں گے۔ اس سے پہلے کہ آپ کو Play کنسول میں آسان کردہ ناکامیاں اور ANRs نظر آئیں، آپ کو صارفین کے آلات کے ذریعے نئی ناکامیوں اور ANRs کی اطلاع دینے کے لیے وقت کی اجازت دینے کی ضرورت ہوگی۔
فائل اپ لوڈ کرنا بھول جانے کے خطرے سے بچنے کے لیے، Android Gradle پلگ ان ورژن 4.1 یا اس کے بعد کے ایپ بنڈلز کو استعمال کرنے کے لیے اپنے تعمیراتی عمل کو تبدیل کرنے پر غور کریں۔ اس صورت میں، آپ Android ڈیولپرز سائٹ پر دی گئی ہدایات پر عمل کر کے ایپ بنڈل میں ڈیبگ علامتوں کی فائل کو خودکار طور پر شامل کر سکتے ہیں۔
اگر آپ اپنی ایپ کے کسی ورژن کے لیے غلط فائل اپ لوڈ کرتے ہیں تو ناکامیاں اور ANRs مبہم ہو جائیں گے۔ درست ورژن اپ لوڈ کرنے کے لیے:
- Play کونسول کھولیں۔
- ایک ایپ منتخب کریں۔
- دائیں مینیو پر، جانچ کریں اور ریلیز کریں > ایپ بنڈل ایکسپلورر کو منتخب کریں
- اوپر دائیں کونے میں منتخب کنندہ کا استعمال کرتے ہوئے، متعلقہ آرٹیفیکٹ کا انتخاب کریں۔
- ڈاؤن لوڈز ٹیب کو منتخب کریں، اور نیچے "اثاثے" سیکشن تک سکرول کریں۔
- غلط آسانی سے سمجھ میں آنے والی یا علامتی فائل کے آگے حذف کے آئیکن پر کلک کریں۔
- غلط ورژن کے حذف ہونے کے بعد، اپ لوڈ آئیکن پر کلک کریں اور اپنی ایپ کے ورژن کے لیے صحیح فائل اپ لوڈ کریں۔
آپ کے ایپ کے ورژن کے لیے درست ProGuard میپنگ فائل یا ڈیبگ علامتوں کی فائل اپ لوڈ کرنے کے بعد، صرف ناکامیاں اور ANRs جو بعد میں ہونے والے ہیں آسان کیے جائیں گے۔ اس سے پہلے کہ آپ کو Play کونسول میں آسان کردہ ناکامیاں اور ANRs نظر آئیں، آپ کو صارفین کے آلات کے ذریعے نئی ناکامیاں اور ANRs کی اطلاع دینے کے لیے وقت کی اجازت دینے کی ضرورت ہوگی۔
تجویز: فائل کے غلط ورژن کو اپ لوڈ کرنے کے خطرے سے بچنے کے لیے، Android Gradle پلگ ان ورژن 4.1 یا اس کے بعد کے ایپ بنڈلز کو استعمال کرنے کے لیے اپنے بنانے کے عمل کو تبدیل کرنے پر غور کریں۔ اس صورت میں، آپ Android ڈیولپرز سائٹ پر دی گئی ہدایات پر عمل کر کے ایپ بنڈل میں ڈیبگ علامتوں کی فائل کو خودکار طور پر شامل کر سکتے ہیں۔
شروع کرنے کے لیے Android ڈیولپرز سائٹ ملاحظہ کریں۔
ہاں۔
کبھی کبھار، سسٹم ANR کا سامنا کرتا ہے لیکن اسٹیک ٹریس کو جمع کرنے سے قاصر ہے۔ اس ایونٹ میں، ANR آپ کو آپ کی ایپ کے استحکام کا مزید مکمل نظارہ دینے کے لیے دکھایا گیا ہے، لیکن خود اسٹیک ٹریس کو ڈسپلے نہیں کیا جا سکتا۔ اسٹیک ٹریسز کے بغیر ANRs کو قسم اور سرگرمی کے لحاظ سے گروپ کیا جاتا ہے، اس لیے اسی طرح کے ANRs کا جائزہ لینے اور اسے ٹھیک کرنے سے اسٹیک ٹریسز کے بغیر تعداد کو کم کرنے میں مدد مل سکتی ہے۔