অ্যান্ড্রয়েড স্টুডিওতে একটি APK বিশ্লেষক রয়েছে যা বিল্ড প্রক্রিয়া সম্পূর্ণ হওয়ার পরে আপনার APK বা অ্যান্ড্রয়েড অ্যাপ বান্ডেলের সংমিশ্রণে তাত্ক্ষণিক অন্তর্দৃষ্টি প্রদান করে। APK বিশ্লেষক ব্যবহার করা আপনার অ্যাপের মধ্যে DEX ফাইল এবং সংস্থানগুলির সাথে ডিবাগিং সমস্যাগুলি ব্যয় করার সময় কমাতে পারে এবং আপনার APK আকার কমাতে সহায়তা করে৷ apkanalyzer
এর সাথে কমান্ড লাইন থেকেও APK বিশ্লেষক পাওয়া যায়।
APK বিশ্লেষক দিয়ে, আপনি করতে পারেন:
- অ্যাপে ফাইলের পরম এবং আপেক্ষিক আকার দেখুন, যেমন DEX এবং Android রিসোর্স ফাইল।
- DEX ফাইলের গঠন বুঝুন।
- অ্যাপ্লিকেশানের ফাইলগুলির চূড়ান্ত সংস্করণগুলি দ্রুত দেখুন, যেমন
AndroidManifest.xml
ফাইল৷ - দুটি APK বা অ্যাপ বান্ডেলের পাশাপাশি তুলনা করুন।
একটি প্রকল্প খোলা থাকলে APK বিশ্লেষক অ্যাক্সেস করার তিনটি উপায় রয়েছে:
- অ্যান্ড্রয়েড স্টুডিওর এডিটর উইন্ডোতে একটি APK বা অ্যাপ বান্ডিল টেনে আনুন।
- প্রজেক্ট উইন্ডোতে প্রজেক্ট ভিউতে স্যুইচ করুন, তারপর ডিফল্ট
build/output/apks/
ডিরেক্টরিতে APK-এ ডাবল-ক্লিক করুন। - মেনু বারে Build > Analyze APK নির্বাচন করুন, তারপর আপনার APK বা অ্যাপ বান্ডেল নির্বাচন করুন।
ফাইল এবং আকার তথ্য দেখুন
APK হল ফাইল যা জিপ ফাইল ফরম্যাট অনুসরণ করে। APK বিশ্লেষক প্রতিটি ফাইল বা ফোল্ডারকে একটি সত্তা হিসাবে প্রদর্শন করে যা আপনি ফোল্ডারগুলিতে নেভিগেট করতে প্রসারিত করতে পারেন। সত্তার শ্রেণিবিন্যাস APK ফাইলের ফাইল এবং ফোল্ডারগুলির গঠনকে মিরর করে।
APK বিশ্লেষক জিপ করা ফাইলের আকার (বা "কাঁচা ফাইলের আকার") দেখায় এবং প্রতিটি সত্তার জন্য ফাইলের আকারের মানগুলি ডাউনলোড করে, যেমন চিত্র 1-এ দেখানো হয়েছে । কাঁচা ফাইলের আকার মোট APK আকারে সত্তার অবদানকে প্রতিনিধিত্ব করে। ডাউনলোডের আকারটি সত্তার আনুমানিক সংকুচিত আকারের প্রতিনিধিত্ব করে কারণ এটি Google Play দ্বারা বিতরণ করা হবে। মোট ডাউনলোড আকারের % এন্টিটি প্রতিনিধিত্ব করে APK এর মোট ডাউনলোড আকারের শতাংশ নির্দেশ করে৷
![](https://developer.android.com/static/studio/images/build/apk-file-sizes_2x.png?authuser=1&hl=bn)
AndroidManifest.xml দেখুন
যদি আপনার প্রোজেক্টে একাধিক AndroidManifest.xml
ফাইল থাকে, যেমন প্রোডাক্ট ফ্লেভারের জন্য, অথবা একটি ম্যানিফেস্ট ফাইলও প্রদান করে এমন লাইব্রেরিগুলি অন্তর্ভুক্ত করে, সেগুলি আপনার অ্যাপে একটি একক ফাইলে মার্জ করা হয়। এই ম্যানিফেস্ট ফাইলটি সাধারণত APK বা অ্যাপ বান্ডেলের মধ্যে একটি বাইনারি ফাইল, কিন্তু যখন APK বিশ্লেষক নির্বাচন করা হয়, তখন এই সত্তার XML ফর্ম পুনর্গঠন এবং উপস্থাপন করা হয়।
এই ভিউয়ারটি আপনাকে বিল্ড করার সময় আপনার অ্যাপে করা যেকোনো পরিবর্তন বুঝতে সাহায্য করে। উদাহরণ স্বরূপ, আপনি দেখতে পারবেন কিভাবে আপনার অ্যাপ্লিকেশন নির্ভর করে এমন একটি লাইব্রেরি থেকে AndroidManifest.xml
ফাইলটি চূড়ান্ত AndroidManifest.xml
ফাইলে মার্জ করা হয়েছে।
অতিরিক্তভাবে, এই দর্শক কিছু লিন্ট ক্ষমতা প্রদান করে। সতর্কতা বা ত্রুটি উপরের-ডান কোণায় উপস্থিত হয়। চিত্র 2 নির্বাচিত ম্যানিফেস্ট ফাইলের জন্য রিপোর্ট করা একটি ত্রুটি দেখায়।
![](https://developer.android.com/static/studio/images/build/apk-manifest-error_2x.png?authuser=1&hl=bn)
DEX ফাইল দেখুন
APK বিশ্লেষক এর DEX ফাইল ভিউয়ার আপনাকে আপনার অ্যাপের DEX ফাইল(গুলি) এর অন্তর্নিহিত তথ্যে অবিলম্বে অ্যাক্সেস দেয়। দর্শক শ্রেণী, প্যাকেজ, মোট রেফারেন্স এবং ঘোষণার সংখ্যা প্রদান করে, যা মাল্টিডেক্স ব্যবহার করতে হবে কিনা বা 64K DEX সীমার নিচে যাওয়ার জন্য কীভাবে নির্ভরতা দূর করতে হবে তা সিদ্ধান্ত নিতে সহায়তা করতে পারে।
চিত্র 3 একটি মাঝারি আকারের অ্যাপ দেখায় যা 64K DEX সীমার নিচে। DEX ফাইলের ভিতরের প্রতিটি প্যাকেজ, শ্রেণী এবং পদ্ধতিতে সংজ্ঞায়িত পদ্ধতি এবং রেফারেন্সড মেথড কলামে তালিকাভুক্ত গণনা রয়েছে।
রেফারেন্সড মেথডস কলামে DEX ফাইলের উল্লেখ করা সমস্ত পদ্ধতি গণনা করা হয়। এটি সাধারণত আপনার কোড, নির্ভরতা লাইব্রেরিতে সংজ্ঞায়িত পদ্ধতি এবং কোড ব্যবহার করে স্ট্যান্ডার্ড Java এবং Android প্যাকেজে সংজ্ঞায়িত পদ্ধতিগুলি অন্তর্ভুক্ত করে। এই পদ্ধতিগুলি প্রতিটি DEX ফাইলে 64K পদ্ধতির সীমার দিকে গণনা করা হয়৷
সংজ্ঞায়িত পদ্ধতির কলামটি শুধুমাত্র সেই পদ্ধতিগুলিকে গণনা করে যা আপনার DEX ফাইলগুলির একটিতে সংজ্ঞায়িত করা হয়েছে, তাই এই সংখ্যাটি উল্লেখিত পদ্ধতিগুলির একটি উপসেট।
![](https://developer.android.com/static/studio/images/build/apk-over-64k-limit_2x.png?authuser=1&hl=bn)
DEX ফাইল ট্রি ভিউ ফিল্টার করুন
শ্রেণী তালিকার ঠিক উপরে, APK বিশ্লেষক নির্বাচিত DEX ফাইলের বিষয়বস্তু দেখার জন্য ফিল্টার প্রদান করে, যেমন চিত্র 4-এ দেখানো হয়েছে।
![](https://developer.android.com/static/studio/images/build/apk-filter-tree-view_2x.png?authuser=1&hl=bn)
BuildConfig
এর জন্য ক্ষেত্র এবং পদ্ধতি প্রদর্শনের জন্য সেট করা হয়েছে।একটি ক্লাসের ভিতরে সমস্ত পদ্ধতি এবং ক্ষেত্রগুলি প্রদর্শন করতে ফিল্টারগুলি ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
- ফাইল তালিকায়,
classes.dex
ফাইলটি নির্বাচন করুন। - ক্লাস তালিকায়, নেভিগেট করুন এবং একটি ক্লাস নির্বাচন করুন।
- আপনার নির্বাচিত ক্লাস প্রসারিত করুন।
- ক্ষেত্র দেখান টগল করুন
ক্লাস ক্ষেত্রগুলি দেখানো বা লুকানোর জন্য।
- প্রদর্শন পদ্ধতি টগল করুন
ক্লাস পদ্ধতি দেখাতে বা লুকিয়ে রাখতে।
টগল সব রেফারেন্স করা পদ্ধতি বা ক্ষেত্র দেখান
উল্লেখিত প্যাকেজ, ক্লাস, পদ্ধতি এবং ক্ষেত্রগুলি দেখাতে বা লুকানোর জন্য।
ট্রি ভিউতে, তির্যক নোডগুলি এমন রেফারেন্স যা নির্বাচিত DEX ফাইলে একটি সংজ্ঞা নেই। একটি DEX ফাইল একটি ভিন্ন ফাইলে সংজ্ঞায়িত পদ্ধতি এবং ক্ষেত্র উল্লেখ করতে পারে। উদাহরণস্বরূপ
System.out.println()
হল Android ফ্রেমওয়ার্কেরprintln()
পদ্ধতির একটি রেফারেন্স।
ProGuard ম্যাপিং লোড করুন
ফিল্টারিং আইকনগুলির পাশে প্রোগার্ড ম্যাপিং আইকনগুলি রয়েছে৷ যতক্ষণ না আপনি ProGuard ম্যাপিং ফাইলগুলির একটি সেট লোড না করা পর্যন্ত ProGuard আইকনগুলি ধূসর হয়ে যায় যা DEX ভিউয়ারে কার্যকারিতা যোগ করে, যেমন deobfuscating নাম ( mapping.txt
), সরানো হয়েছে এমন নোডগুলি দেখায় ( usage.txt
), এবং নোডগুলি নির্দেশ করে টি সরানো হবে ( seeds.txt
)।
আপনি যে ProGuard ম্যাপিং ফাইলটি আমদানি করেন তা অবশ্যই একই বিল্ডের ফলাফল হতে হবে যা কোড সঙ্কুচিত সক্ষম সহ DEX ফাইল তৈরি করেছে।
![](https://developer.android.com/static/studio/images/build/apk-proguard-mappings_2x.png?authuser=1&hl=bn)
ProGuard ম্যাপিং ফাইলগুলি লোড করতে, নিম্নলিখিতগুলি করুন:
- লোড প্রোগার্ড ম্যাপিং ক্লিক করুন...
ম্যাপিং ফাইল রয়েছে এমন প্রোজেক্ট ফোল্ডারে নেভিগেট করুন এবং সমস্ত ফাইল, ফাইলগুলির যেকোন সংমিশ্রণ বা ফাইলগুলি রয়েছে এমন ফোল্ডার লোড করুন।
ম্যাপিং ফাইলগুলি সাধারণত
project / app /build/outputs/mappings/release/
এ থাকে। ফাইল পিকার রিলিজ ফোল্ডারে ডিফল্ট হয় যদি এটি এই প্রকল্পের কাঠামো সনাক্ত করে।প্রথমত, ফাইল পিকার
mapping.txt
,seeds.txt
, এবংusage.txt
এর সাথে হুবহু মেলে এমন ফাইলের নাম পরীক্ষা করে। এর পরে, ফাইল পিকার এমন ফাইলের নামগুলি পরীক্ষা করে যাতে টেক্সটmapping
,usage
বাseeds
কোথাও থাকে এবং.txt
দিয়ে শেষ হয়। যেমনrelease-seeds-1.10.15.txt
একটি মিল।
নিম্নলিখিত তালিকা ম্যাপিং ফাইল বর্ণনা করে:
-
seeds.txt
: প্রোগার্ড কনফিগারেশন যে নোডগুলি সঙ্কুচিত হওয়ার সময় সরানো থেকে বাধা দেয় সেগুলিকে মোটা অক্ষরে দেখানো হয়েছে। -
mapping.txt
: Deobfuscate নাম সক্রিয় করেতাই আপনি R8 দ্বারা অস্পষ্ট নোডগুলির আসল নামগুলি পুনরুদ্ধার করতে পারেন। উদাহরণস্বরূপ, আপনি অস্পষ্ট নোড নামগুলি পুনরুদ্ধার করতে পারেন যেমন
a
,b
,c
থেকেMyClass
,MainActivity
, এবংmyMethod()
। usage.txt
: সরানো নোড দেখাতে সক্ষম করেতাই আপনি ক্লাস, পদ্ধতি এবং ক্ষেত্রগুলি দেখাতে পারেন যা সঙ্কুচিত হওয়ার সময় R8 দ্বারা সরানো হয়েছিল। পুনরুদ্ধার করা নোড স্ট্রাইকথ্রুতে দেখানো হয়।
আপনার কোডকে অস্পষ্ট এবং ছোট করতে R8 ব্যবহার করার বিষয়ে আরও তথ্যের জন্য, দেখুন সঙ্কুচিত করুন, অস্পষ্ট করুন এবং আপনার অ্যাপটি অপ্টিমাইজ করুন ।
বাইটকোড দেখান, ব্যবহার খুঁজুন এবং Keep নিয়ম তৈরি করুন
ক্লাস লিস্ট ভিউতে নোডগুলিতে নিম্নলিখিত বিকল্পগুলির সাথে একটি প্রসঙ্গ মেনু রয়েছে যা আপনাকে বাইটকোড দেখতে, ব্যবহারগুলি সন্ধান করতে এবং নির্বাচিত নোডের জন্য অনুলিপি এবং পেস্ট করার জন্য ProGuard নিয়মগুলি দেখায় এমন একটি ডায়ালগ প্রদর্শন করতে দেয়৷ ক্লাস লিস্ট ভিউতে যে কোনো নোডের প্রসঙ্গ মেনু প্রদর্শন করতে রাইট-ক্লিক করুন।
বাইটকোড দেখান : নির্বাচিত শ্রেণী, পদ্ধতি বা ক্ষেত্রকে ডিকম্পাইল করে এবং একটি ডায়ালগে স্মালি বাইটকোড উপস্থাপনা প্রদর্শন করে, নিম্নরূপ:
![](https://developer.android.com/static/studio/images/build/apk-byte-code_2x.png?authuser=1&hl=bn)
init
পদ্ধতির জন্য DEX বাইটকোড। ব্যবহার খুঁজুন : DEX কোডের অন্য কোন অংশে নির্বাচিত শ্রেণী বা পদ্ধতির উল্লেখ রয়েছে, যেমন চিত্র 7-এ দেখানো হয়েছে। যদি আপনার seeds.txt
লোড করা থাকে, তাহলে নোডগুলি মোটা অক্ষরে প্রদর্শিত হয় তা নির্দেশ করে যে ProGuard কনফিগারেশন তাদের সঙ্কুচিত হওয়ার সময় সরানো থেকে বাধা দেয়। :
![](https://developer.android.com/static/studio/images/build/apk-references_2x.png?authuser=1&hl=bn)
MyClass
রেফারেন্স।Proguard Keep নিয়ম তৈরি করুন : ProGuard নিয়মগুলি দেখায় যা আপনি আপনার প্রকল্পের ProGuard কনফিগারেশন ফাইলে কপি এবং পেস্ট করতে পারেন, যেমন চিত্র 8 এ দেখানো হয়েছে। এটি কোড সঙ্কুচিত হওয়ার পর্যায়ে একটি প্রদত্ত প্যাকেজ, শ্রেণী, পদ্ধতি বা ক্ষেত্রকে সরানো থেকে রক্ষা করে। আরও তথ্যের জন্য, কোন কোড রাখতে হবে তা কাস্টমাইজ করুন দেখুন।
![](https://developer.android.com/static/studio/images/build/apk-proguard-keep-rule_2x.png?authuser=1&hl=bn)
কোড এবং সম্পদ সত্তা দেখুন
বিভিন্ন বিল্ড কাজ একটি অ্যাপের চূড়ান্ত সত্তা পরিবর্তন করে। উদাহরণস্বরূপ, ProGuard সঙ্কুচিত করার নিয়মগুলি আপনার চূড়ান্ত কোডকে পরিবর্তন করতে পারে এবং ছবির সংস্থানগুলি পণ্যের স্বাদে সম্পদ দ্বারা ওভাররাইড করা যেতে পারে।
APK বিশ্লেষকের সাথে আপনার ফাইলগুলির চূড়ান্ত সংস্করণ দেখতে, টেক্সট বা চিত্র সত্তার পূর্বরূপ দেখতে সত্তাটিতে ক্লিক করুন, চিত্র 9-এ দেখানো হয়েছে৷
![](https://developer.android.com/static/studio/images/build/apk-image-preview_2x.png?authuser=1&hl=bn)
APK বিশ্লেষক বিভিন্ন পাঠ্য এবং বাইনারি ফাইল প্রদর্শন করতে পারে। উদাহরণ স্বরূপ, স্ট্রিং রিসোর্সের ভাষা অনুবাদের মতো কনফিগারেশন-নির্দিষ্ট মানগুলি আপনাকে resources.arsc
.arsc সত্তা ভিউয়ার দেখতে দেয়। চিত্র 10-এ, আপনি প্রতিটি স্ট্রিং সংস্থানের অনুবাদগুলি দেখতে পারেন।
![](https://developer.android.com/static/studio/images/build/apk-strings_2x.png?authuser=1&hl=bn)
ফাইল তুলনা
APK বিশ্লেষক দুটি ভিন্ন APK বা অ্যাপ বান্ডেল ফাইলে সত্তার আকার তুলনা করতে পারে। এটি সহায়ক যখন আপনি বুঝতে হবে কেন আপনার অ্যাপের আকার আগের রিলিজের তুলনায় বেড়েছে।
আপনি একটি আপডেট অ্যাপ প্রকাশ করার আগে, নিম্নলিখিতগুলি করুন:
- আপনি APK অ্যানালাইজারে যে অ্যাপটি প্রকাশ করতে চলেছেন তার সংস্করণটি লোড করুন৷
- APK বিশ্লেষকের উপরের-ডান কোণে, পূর্ববর্তী APK-এর সাথে তুলনা করুন... এ ক্লিক করুন।
নির্বাচন ডায়ালগে, আপনার ব্যবহারকারীদের কাছে সর্বশেষ প্রকাশিত আর্টিফ্যাক্টটি খুঁজুন এবং ঠিক আছে ক্লিক করুন।
চিত্র 11-এর মত একটি ডায়ালগ আপনাকে ব্যবহারকারীদের উপর আপডেটের প্রভাবের মূল্যায়ন করতে সাহায্য করবে।
চিত্র 11 একটি নির্দিষ্ট অ্যাপের ডিবাগ এবং রিলিজ বিল্ডের মধ্যে পার্থক্য দেখায়। এই ধরনের বিল্ডের মধ্যে বিভিন্ন বিল্ড বিকল্প ব্যবহার করা হয়, যা অন্তর্নিহিত সত্তাকে ভিন্নভাবে পরিবর্তন করে।
![](https://developer.android.com/static/studio/images/build/apk-compare_2x.png?authuser=1&hl=bn)