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

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

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

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

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

আপনার প্রজেক্ট যদি একটি অ্যান্ড্রয়েড অ্যাপ বান্ডেল (AAB) তৈরি করে, তাহলে আপনি আপনার বিল্ডকে এমনভাবে কনফিগার করতে পারেন যাতে এটি স্বয়ংক্রিয়ভাবে AAB-তে নেটিভ ডিবাগ সিম্বল ফাইলটি অন্তর্ভুক্ত করে, ফলে আপনার অ্যাপ পাবলিশ করার সময় এটি প্লে কনসোলে আপলোড হয়ে যায়। রিলিজ বিল্ডে এই ফাইলটি অন্তর্ভুক্ত করতে, আপনার অ্যাপের 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 ফাইলটি ম্যানুয়ালি গুগল প্লে কনসোলে আপলোড করুন