APKनलिज़र

APK ऐनालाइज़र का कमांड-लाइन वर्शन, निर्माण प्रक्रिया पूरी होने के बाद आपके APK का कंपोज़िशन इस्तेमाल करता है और आपको दो APK के बीच के अंतर की तुलना करें. APK ऐनालाइज़र का इस्तेमाल करने से आपको अपने ऐप्लिकेशन में मौजूद DEX फ़ाइलों और संसाधनों को डीबग करने में लगने वाला समय और APK का साइज़ कम कर देता है.

apkanalyzer को इसमें शामिल किया गया है Android SDK Command-Line Tools पैकेज: android_sdk/cmdline-tools/version/bin/apkanalyzer. इसके अलावा, APK ऐनालाइज़र टूल को Android Studio, जैसा कि इसमें बताया गया है 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 की ओर से इस्तेमाल की जाने वाली प्रिंट सुविधाएं Play Store से फ़िल्टर करना . --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 फ़ाइल का कॉन्टेंट प्रिंट करता है. आपको APK के अंदर का पाथ तय करना होगा. --file path विकल्प, जैसे कि --file /AndroidManifest.xml
मेनिफ़ेस्ट में जानकारी देखें ब्यौरा
manifest print apk-file 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] किसी क्लास या तरीके के बाइट कोड को स्माली फ़ॉर्मैट में प्रिंट करता है. क्लास का नाम की आवश्यकता होती है और डिकोड करने के लिए पूरी तरह क्वालिफ़ाइड क्लास का नाम प्रिंट करता है. जोड़ें डिकंपाइल करने का तरीका बताने के लिए --method विकल्प.

फ़ॉर्मैट डिकंपाइल करने का तरीका name(params)returnType है. उदाहरण के लिए, someMethod(Ljava/lang/String;I)V.

res/ औरresource.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 इसकी मदद से, बाइनरी एक्सएमएल फ़ाइल के ऐसे फ़ॉर्मैट को प्रिंट किया जा सकता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. यह शामिल करें फ़ाइल का पाथ बताने के लिए, file विकल्प.