अपने रिलीज़ बिल्ड में नेटिव सिंबल शामिल करना

डिफ़ॉल्ट रूप से, आपके ऐप्लिकेशन के रिलीज़ बिल्ड में नेटिव कोड लाइब्रेरी हटा दी जाती हैं. इसमें, आपके ऐप्लिकेशन में इस्तेमाल की गई किसी भी नेटिव लाइब्रेरी में मौजूद सिंबल टेबल और डीबग करने से जुड़ी जानकारी हटा दी जाती है. नेटिव कोड लाइब्रेरी हटाने से, ऐप्लिकेशन के साइज़ में काफ़ी कमी आती है. हालांकि, जानकारी (जैसे, क्लास और फ़ंक्शन के नाम) मौजूद न होने की वजह से, Google Play Console पर क्रैश का पता लगाना मुमकिन नहीं होता. क्रैश को डीबग करने के लिए, आपको Play Console में अपने ऐप्लिकेशन के साथ डीबग सिंबल वाली फ़ाइल शामिल करनी होगी.

सिंबल फ़ाइल अपलोड करना

Google Play Console, Android के मुख्य फ़ंक्शन में नेटिव क्रैश की रिपोर्ट करता है. कुछ ही चरणों में, अपने ऐप्लिकेशन के लिए नेटिव डीबग सिंबल फ़ाइल जनरेट और अपलोड की जा सकती है. इस फ़ाइल की मदद से, Android Vitals में नेटिव क्रैश स्टैक ट्रेस (इसमें क्लास और फ़ंक्शन के नाम शामिल होते हैं) को सिम्बॉलिकेट किया जा सकता है. इससे, आपको प्रोडक्शन में अपने ऐप्लिकेशन को डीबग करने में मदद मिलती है. ये चरण, आपके प्रोजेक्ट में इस्तेमाल किए गए Android Gradle प्लग इन के वर्शन और Android ऐप्लिकेशन बंडल (सुझाया गया) या APK का इस्तेमाल करने पर अलग-अलग होते हैं.

Android Gradle प्लग इन का 4.1 या इसके बाद का वर्शन

अगर आपके प्रोजेक्ट में Android ऐप्लिकेशन बंडल (एएबी) बनाया जाता है, तो अपने बंडल को कॉन्फ़िगर करके, एएबी में नेटिव डीबग सिंबल फ़ाइल को अपने-आप शामिल किया जा सकता है. इससे, ऐप्लिकेशन पब्लिश करने पर, यह फ़ाइल Play Console पर अपलोड हो जाती है. रिलीज़ बंडल में इस फ़ाइल को शामिल करने के लिए, अपने ऐप्लिकेशन की build.gradle.kts फ़ाइल में ये चीज़ें जोड़ें:

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

इनमें से डीबग सिंबल का लेवल चुनें:

  • Play Console के सिंबल वाले स्टैक ट्रेस में फ़ंक्शन के नाम पाने के लिए, SYMBOL_TABLE का इस्तेमाल करें. इस लेवल पर, टॉम्बस्टोन का इस्तेमाल किया जा सकता है.
  • Play Console के सिंबल वाले स्टैक ट्रेस में, फ़ंक्शन के नाम, फ़ाइलें, और लाइन नंबर देखने के लिए FULL का इस्तेमाल करें.

अगर आपके प्रोजेक्ट में APK बनाया जाता है, तो नेटिव डीबग सिंबल वाली फ़ाइल को अलग से जनरेट करने के लिए, पहले बताई गई android.buildTypes.release.ndk.debugSymbolLevel सेटिंग का इस्तेमाल करें. Google Play Console में नेटिव डीबग सिंबल वाली फ़ाइल को मैन्युअल तरीके से अपलोड करें. यह प्रोसेस, स्टैक ट्रेस को डिकोड करने के लिए मैपिंग फ़ाइल अपलोड करने की प्रोसेस से मिलती-जुलती है. बिल्ड प्रोसेस का हिस्सा होने के तौर पर, 'Android Gradle प्लग इन', प्रोजेक्ट की यहां बताई गई जगह पर इस फ़ाइल का आउटपुट देता है:

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

'Android Gradle प्लग इन' 4.0 या इससे पहले का वर्शन (और अन्य बिल्ड सिस्टम)

बिल्ड प्रोसेस का हिस्सा होने के तौर पर, 'Android Gradle प्लग इन', प्रोजेक्ट डायरेक्ट्री में ज़्यादा जानकारी वाली लाइब्रेरी की एक कॉपी रखता है. डायरेक्ट्री का यह स्ट्रक्चर, यहां दिए गए स्ट्रक्चर से मिलता-जुलता है:

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. Google Play Console में, symbols.zip फ़ाइल को मैन्युअल तरीके से अपलोड करें.