আপনার রিলিজ বিল্ডে নেটিভ চিহ্নগুলি অন্তর্ভুক্ত করুন

ডিফল্টরূপে, আপনার অ্যাপের রিলিজ বিল্ডগুলিতে নেটিভ কোড লাইব্রেরিগুলি বাদ দেওয়া হয়। এই স্ট্রিপিংয়ের মধ্যে রয়েছে প্রতীক সারণীটি সরিয়ে ফেলা এবং আপনার অ্যাপ দ্বারা ব্যবহৃত যেকোনো নেটিভ লাইব্রেরিতে থাকা তথ্য ডিবাগ করা। নেটিভ কোড লাইব্রেরিগুলি বাদ দেওয়ার ফলে উল্লেখযোগ্য আকার সাশ্রয় হয়; তবে, অনুপস্থিত তথ্যের (যেমন ক্লাস এবং ফাংশনের নাম) কারণে গুগল প্লে কনসোলে ক্র্যাশ নির্ণয় করা অসম্ভব। ক্র্যাশগুলি ডিবাগ করার জন্য, আপনাকে প্লে কনসোলে আপনার অ্যাপের সাথে একটি ডিবাগ প্রতীক ফাইল অন্তর্ভুক্ত করতে হবে।

একটি প্রতীক ফাইল আপলোড করুন

গুগল প্লে কনসোল অ্যান্ড্রয়েড ভাইটাল এর অধীনে নেটিভ ক্র্যাশ রিপোর্ট করে। কয়েকটি ধাপ অনুসরণ করে, আপনি আপনার অ্যাপের জন্য একটি নেটিভ ডিবাগ সিম্বল ফাইল তৈরি এবং আপলোড করতে পারেন। এই ফাইলটি অ্যান্ড্রয়েড ভাইটাল এ সিম্বলিকেটেড নেটিভ ক্র্যাশ স্ট্যাক ট্রেস (যার মধ্যে ক্লাস এবং ফাংশনের নাম অন্তর্ভুক্ত) সক্ষম করে যা আপনাকে প্রোডাকশনে আপনার অ্যাপ ডিবাগ করতে সাহায্য করে। এই ধাপগুলি আপনার প্রোজেক্টে ব্যবহৃত অ্যান্ড্রয়েড গ্রেডল প্লাগইনের সংস্করণ এবং আপনি অ্যান্ড্রয়েড অ্যাপ বান্ডেল (প্রস্তাবিত) নাকি APK ব্যবহার করছেন তার উপর নির্ভর করে পরিবর্তিত হয়।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ ৪.১ বা তার পরবর্তী

যদি আপনার প্রোজেক্ট একটি Android অ্যাপ বান্ডেল (AAB) তৈরি করে, তাহলে আপনি আপনার বিল্ডটি AAB-তে স্বয়ংক্রিয়ভাবে নেটিভ ডিবাগ প্রতীক ফাইল অন্তর্ভুক্ত করার জন্য কনফিগার করতে পারেন যাতে আপনার অ্যাপ প্রকাশ করার সময় এটি Play Console-এ আপলোড হয়। রিলিজ বিল্ডে এই ফাইলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের build.gradle.kts ফাইলে নিম্নলিখিতগুলি যোগ করুন:

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

নিম্নলিখিত থেকে ডিবাগ প্রতীক স্তর নির্বাচন করুন:

  • প্লে কনসোলের প্রতীকী স্ট্যাক ট্রেসে ফাংশনের নাম পেতে SYMBOL_TABLE ব্যবহার করুন। এই স্তরটি সমাধিস্তম্ভ সমর্থন করে।
  • প্লে কনসোলের প্রতীকী স্ট্যাক ট্রেসে ফাংশনের নাম, ফাইল এবং লাইন নম্বর পেতে FULL ব্যবহার করুন।

যদি আপনার প্রোজেক্ট একটি APK তৈরি করে, তাহলে নেটিভ ডিবাগ সিম্বল ফাইলটি আলাদাভাবে তৈরি করতে আগে দেখানো android.buildTypes.release.ndk.debugSymbolLevel সেটিংটি ব্যবহার করুন। গুগল প্লে কনসোলে নেটিভ ডিবাগ সিম্বল ফাইলটি ম্যানুয়ালি আপলোড করুন (প্রক্রিয়াটি স্ট্যাক ট্রেসগুলিকে অস্পষ্ট করার জন্য একটি ম্যাপিং ফাইল আপলোড করার অনুরূপ)। বিল্ড প্রক্রিয়ার অংশ হিসাবে, অ্যান্ড্রয়েড গ্রেডল প্লাগইন নিম্নলিখিত প্রোজেক্ট লোকেশনে এই ফাইলটি আউটপুট করে:

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.

অ্যান্ড্রয়েড গ্রেডল প্লাগইন সংস্করণ ৪.০ বা তার আগের (এবং অন্যান্য বিল্ড সিস্টেম)

বিল্ড প্রক্রিয়ার অংশ হিসেবে, অ্যান্ড্রয়েড গ্র্যাডেল প্লাগইনটি আনস্ট্রিপড লাইব্রেরিগুলির একটি কপি একটি প্রজেক্ট ডিরেক্টরিতে রাখে। এই ডিরেক্টরি কাঠামোটি নিম্নলিখিতগুলির মতো:

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-এ আপলোড করুন