অ্যাপকনালাইজার

APK বিশ্লেষকের কমান্ড-লাইন সংস্করণটি বিল্ড প্রক্রিয়া সম্পূর্ণ হওয়ার পরে আপনার APK-এর সংমিশ্রণে অবিলম্বে অন্তর্দৃষ্টি প্রদান করে এবং আপনাকে দুটি APK-এর মধ্যে পার্থক্য তুলনা করতে দেয়। APK বিশ্লেষক ব্যবহার করা আপনার অ্যাপের মধ্যে DEX ফাইল এবং সংস্থানগুলির সাথে ডিবাগিং সমস্যাগুলি ব্যয় করার সময়কে হ্রাস করে এবং আপনার APK এর আকার হ্রাস করে৷

apkanalyzer android_sdk /cmdline-tools/ version /bin/apkanalyzerAndroid SDK কমান্ড-লাইন টুলস প্যাকেজে অন্তর্ভুক্ত রয়েছে। বিকল্পভাবে, আপনি APK বিশ্লেষকের সাথে আপনার বিল্ড বিশ্লেষণে বর্ণিত Android স্টুডিওর মধ্যে APK বিশ্লেষক টুল অ্যাক্সেস করতে পারেন।

বাক্য গঠন

apkanalyzer সিনট্যাক্স হল:

apkanalyzer [global-options] subject verb [options] apk-file [apk-file2]

subject হল আপনি যা জিজ্ঞাসা করতে চান এবং এটি সম্পূর্ণ APK বা APK এর একটি অংশ হতে পারে৷ একটি বিষয় নিম্নলিখিত যে কোনো হতে পারে:

  • apk : অ্যাপ্লিকেশান আইডি, সংস্করণ কোড এবং সংস্করণের নাম হিসাবে APK ফাইলের বৈশিষ্ট্যগুলি বিশ্লেষণ করুন।
  • files : APK ফাইলের ভিতরে থাকা ফাইলগুলি বিশ্লেষণ করুন।
  • manifest : APK ফাইলের ভিতরে ম্যানিফেস্টের বিষয়বস্তু বিশ্লেষণ করুন।
  • dex : APK ফাইলের ভিতরে DEX ফাইলগুলি বিশ্লেষণ করুন।
  • resources : পাঠ্য, চিত্র এবং স্ট্রিং সংস্থান দেখুন।

আপনি বিষয় সম্পর্কে জানতে চান তা হল verb । বিষয়, ক্রিয়াপদ এবং তাদের বিকল্পগুলি কমান্ড সম্পর্কে নিম্নলিখিত বিভাগে বর্ণিত হয়েছে।

প্রতিটি কমান্ডের জন্য আপনাকে একটি APK ফাইল নির্দিষ্ট করতে হবে। শুধুমাত্র apk compare কমান্ডের জন্য আপনাকে একটি দ্বিতীয় APK নির্দিষ্ট করতে হবে।

যতক্ষণ পর্যন্ত বিকল্পটি দ্ব্যর্থহীন হয় ততক্ষণ আপনি প্রতিটি বিকল্পকে ছোট করতে পারেন। উদাহরণস্বরূপ, --human-readable বৈশ্বিক বিকল্পটিকে ছোট করে -h করা যেতে পারে।

নিম্নলিখিত উদাহরণটি apk (বিষয়) এর file-size (ক্রিয়া) পেতে বিশ্লেষণ করে এবং তারপরে মানব-পঠনযোগ্য বিন্যাসে ফাইলের আকার প্রিন্ট করে ( -h বিকল্প):

apkanalyzer -h apk file-size myapk.apk

কমান্ড

নিম্নলিখিত কমান্ডের বিবরণগুলি বিষয় অনুসারে সংগঠিত হয় এবং প্রতিটি বিষয়ের জন্য উপলব্ধ ক্রিয়া এবং বিকল্প সংমিশ্রণ তালিকাভুক্ত করে:

APK ফাইলের বৈশিষ্ট্যগুলি দেখুন বর্ণনা
apk summary apk-file অ্যাপ্লিকেশন আইডি, সংস্করণ কোড এবং সংস্করণের নাম প্রিন্ট করে।

উদাহরণ আউটপুট:

com.myapp 5 1.1-beta
apk file-size apk-file APK এর মোট ফাইলের আকার প্রিন্ট করে।
apk download-size apk-file APK-এর ডাউনলোড আকারের একটি অনুমান প্রিন্ট করে।
apk features [--not-required] apk-file APK দ্বারা ব্যবহৃত বৈশিষ্ট্যগুলি প্রিন্ট করে যা প্লে স্টোর ফিল্টারিং ট্রিগার করে৷ আউটপুটে প্রয়োজনীয় নয় হিসাবে চিহ্নিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত করতে --not-required বিকল্প যোগ করুন।

উদাহরণ আউটপুট:

android.hardware.type.watch
android.hardware.microphone implied:
    requested android.permission.RECORD_AUDIO permission
apk compare [ options ] apk-file apk-file2 apk-file এবং apk-file2 এর আকারের তুলনা করে। আপনি নিম্নলিখিত বিকল্পগুলি অন্তর্ভুক্ত করতে পারেন:
  • --different-only : পার্থক্য সহ ডিরেক্টরি এবং ফাইল প্রিন্ট করে।
  • --files-only : ডিরেক্টরি এন্ট্রি প্রিন্ট করে না।
  • --patch-size : একটি কাঁচা পার্থক্যের পরিবর্তে ফাইল-বাই-ফাইল প্যাচের একটি অনুমান দেখায়।

উদাহরণ আউটপুট (পুরানো আকার / নতুন আকার / আকার পার্থক্য / পথ):

39086736 48855615 9768879 /
10678448 11039232 360784 /classes.dex
18968956 18968956 0 /lib/
110576 110100 -476 /AndroidManifest.xml
...
APK ফাইল সিস্টেম দেখুন বর্ণনা
files list apk-file APK-এ সমস্ত ফাইল তালিকাভুক্ত করে।

উদাহরণ আউটপুট:

/
/classes2.dex
/classes.dex
/assets/
/assets/asset.data
/AndroidManifest.xml
/resources.arsc
/res/
...
files cat --file path apk-file ফাইলের বিষয়বস্তু প্রিন্ট করে। আপনাকে অবশ্যই --file path বিকল্পটি ব্যবহার করে APK এর ভিতরে একটি পাথ নির্দিষ্ট করতে হবে, যেমন --file /AndroidManifest.xml
ম্যানিফেস্টে তথ্য দেখুন বর্ণনা
manifest print apk-file XML ফর্ম্যাটে APK ম্যানিফেস্ট প্রিন্ট করে।
manifest application-id apk-file অ্যাপ্লিকেশন আইডি মান প্রিন্ট করে।
manifest version-name apk-file সংস্করণ নামের মান প্রিন্ট করে।
manifest version-code apk-file সংস্করণ কোড মান প্রিন্ট করে।
manifest min-sdk apk-file ন্যূনতম SDK সংস্করণ প্রিন্ট করে।
manifest target-sdk apk-file টার্গেট SDK সংস্করণ প্রিন্ট করে।
manifest permissions apk-file অনুমতির তালিকা প্রিন্ট করে।
manifest debuggable apk-file অ্যাপটি ডিবাগযোগ্য কিনা তা প্রিন্ট করে।
DEX ফাইলের তথ্য অ্যাক্সেস করুন বর্ণনা
dex list apk-file APK-এ DEX ফাইলগুলির একটি তালিকা প্রিন্ট করে।
dex references [--files path ] [--files path2 ] apk-file নির্দিষ্ট DEX ফাইলে পদ্ধতির রেফারেন্সের সংখ্যা প্রিন্ট করে। ডিফল্ট সব DEX ফাইল. আপনি অন্তর্ভুক্ত করতে চান এমন নির্দিষ্ট ফাইলগুলি নির্দেশ করতে --files বিকল্প যোগ করুন।

উদাহরণ আউটপুট:

classes.dex 59598
classes2.dex 8042
dex packages [ option1 option2 ... ] apk-file DEX থেকে ক্লাস ট্রি প্রিন্ট করে। আউটপুটে, P , C , M , এবং F যথাক্রমে প্যাকেজ, ক্লাস, পদ্ধতি এবং ক্ষেত্র নির্দেশ করে। এবং x , k , r , এবং d যথাক্রমে সরানো, রাখা, রেফারেন্স এবং সংজ্ঞায়িত নোড নির্দেশ করে।

আউটপুট পরিমার্জিত করতে নিম্নলিখিত বিকল্পগুলি যোগ করুন:

  • --defined-only : আউটপুটে APK-এ সংজ্ঞায়িত শুধুমাত্র ক্লাস অন্তর্ভুক্ত করে।
  • --files : অন্তর্ভুক্ত করার জন্য DEX ফাইলের নাম উল্লেখ করে। ডিফল্ট: সমস্ত DEX ফাইল।
  • --proguard-folder file : ম্যাপিং অনুসন্ধান করার জন্য Proguard আউটপুট ফোল্ডার নির্দিষ্ট করে।
  • --proguard-mappings file : Proguard ম্যাপিং ফাইল নির্দিষ্ট করে।
  • --proguard-seeds file : Proguard বীজ ফাইল নির্দিষ্ট করে।
  • --proguard-usages file : Proguard ব্যবহারের ফাইল নির্দিষ্ট করে।
  • --show-removed : Proguard দ্বারা অপসারণ করা ক্লাস এবং সদস্যদের দেখায়।

উদাহরণ আউটপুট (টাইপ/স্টেট/সংজ্ঞায়িত পদ্ধতি/রেফারেন্স পদ্ধতি/বাইটের আকার/নাম):

P d 1 1 85 g
P d 1 1 85 g.a
C d 1 1 85 g.a.a
M d 1 1 45 g.a.a java.lang.Object get()
C r 0 1 40 byte[]
M r 0 1 40 byte[] java.lang.Object clone()
dex code --class class [--method method ] smali বিন্যাসে একটি ক্লাস বা পদ্ধতির বাইটকোড প্রিন্ট করে। ক্লাসের নাম প্রয়োজন এবং ডিকম্পাইল করার জন্য সম্পূর্ণ যোগ্য শ্রেণীর নাম প্রিন্ট করে। ডিকম্পাইল করার পদ্ধতি নির্দিষ্ট করতে --method বিকল্প যোগ করুন।

ডিকম্পাইল পদ্ধতির ফরম্যাট হল name(params)returnType , উদাহরণস্বরূপ, someMethod(Ljava/lang/String;I)V

res/ এবং resources.arsc-এ সংরক্ষিত সম্পদ দেখুন বর্ণনা
resources packages সম্পদ টেবিলে সংজ্ঞায়িত প্যাকেজগুলির একটি তালিকা প্রিন্ট করে।
resources configs --type type [--package package ] apk-file নির্দিষ্ট type জন্য কনফিগারেশনের একটি তালিকা প্রিন্ট করে। type হল একটি রিসোর্স টাইপ যেমন string । রিসোর্স টেবিল প্যাকেজের নাম উল্লেখ করতে চাইলে --package বিকল্পটি অন্তর্ভুক্ত করুন, অন্যথায় প্রথম সংজ্ঞায়িত প্যাকেজটি ব্যবহার করা হবে।
resources value --config config --name name --type type [--package package ] apk-file config , name , এবং type দ্বারা নির্দিষ্ট করা সম্পদের মান প্রিন্ট করে। type বিকল্প হল রিসোর্সের ধরন, যেমন string

রিসোর্স টেবিল প্যাকেজের নাম উল্লেখ করতে চাইলে --package বিকল্পটি অন্তর্ভুক্ত করুন, অন্যথায় প্রথম সংজ্ঞায়িত প্যাকেজটি ব্যবহার করা হবে।

resources names --config config --type type [--package package ] apk-file একটি কনফিগারেশন এবং প্রকারের জন্য সম্পদ নামের একটি তালিকা প্রিন্ট করে। type বিকল্প হল রিসোর্সের ধরন, যেমন string । রিসোর্স টেবিল প্যাকেজের নাম উল্লেখ করতে চাইলে --package বিকল্পটি অন্তর্ভুক্ত করুন, অন্যথায় প্রথম সংজ্ঞায়িত প্যাকেজটি ব্যবহার করা হবে।
resources xml --file path apk-file একটি বাইনারি XML ফাইলের মানব-পাঠযোগ্য ফর্ম প্রিন্ট করে। ফাইলের পথ নির্দিষ্ট করতে file বিকল্পটি অন্তর্ভুক্ত করুন।