Android Studio 3.0 और इसके बाद के वर्शन में, डीबग करने की सुविधा चालू वाले APK की प्रोफ़ाइल बनाई जा सकती है और उन्हें डीबग किया जा सकता है. इसके लिए, उन्हें Android Studio प्रोजेक्ट से बनाने की ज़रूरत नहीं होती.
किसी APK को डीबग करने के लिए, यह तरीका अपनाएं:
Android Studio की वेलकम स्क्रीन पर, प्रोफ़ाइल या डीबग APK पर क्लिक करें.
अगर आपने पहले से ही कोई प्रोजेक्ट खोला हुआ है, तो मेन्यू बार में जाकर फ़ाइल > प्रोफ़ाइल या डीबग APK पर क्लिक करें.
खुलने वाले डायलॉग बॉक्स में, वह APK चुनें जिसे आपको Android Studio में इंपोर्ट करना है.
ठीक है पर क्लिक करें.
अगर यह विकल्प नहीं दिखता है, तो पक्का करें कि आपने "Android APK Support" प्लगिन चालू किया हो.
इसके बाद, Android Studio अनपैक की गई APK फ़ाइलें दिखाता है. ये फ़ाइलें, पहली इमेज में दिखाई गई फ़ाइलों जैसी होती हैं. यह फ़ाइलों का पूरी तरह से डीकंपाइल किया गया सेट नहीं है. हालांकि, यह DEX फ़ाइलों के ज़्यादा आसानी से पढ़े जा सकने वाले वर्शन के लिए SMALI फ़ाइलें उपलब्ध कराता है.
पहली इमेज. पहले से बनाए गए APK को Android Studio में इंपोर्ट करना.
प्रोजेक्ट पैन में मौजूद Android व्यू की मदद से, अपने APK के इन कॉन्टेंट की जांच की जा सकती है:
- APK फ़ाइल: APK ऐनलिसिस टूल खोलने के लिए, APK पर दो बार क्लिक करें.
- manifests: इसमें ऐप्लिकेशन के मेनिफ़ेस्ट होते हैं, जिन्हें APK से निकाला जाता है.
- java: इसमें Kotlin या Java कोड होता है. Android Studio, आपके APK की DEX फ़ाइलों से इस कोड को अलग-अलग हिस्सों में बांटता है. इन हिस्सों को SMALI फ़ाइलें कहा जाता है. इस डायरेक्ट्री में मौजूद हर SMALI फ़ाइल, Kotlin या Java क्लास से जुड़ी होती है.
- cpp: अगर आपके ऐप्लिकेशन में नेटिव कोड शामिल है, तो इस डायरेक्ट्री में आपके APK की नेटिव लाइब्रेरी (SO फ़ाइलें) शामिल होती हैं.
- बाहरी लाइब्रेरी: इसमें Android SDK टूल शामिल होता है.
अपने ऐप्लिकेशन की परफ़ॉर्मेंस की जांच शुरू करने के लिए, Android प्रोफ़ाइलर का इस्तेमाल करें.
अपने ऐप्लिकेशन के Kotlin या Java कोड को डीबग करने के लिए, आपको Kotlin या Java सोर्स अटैच करने होंगे. साथ ही, Kotlin या Java सोर्स फ़ाइलों में ब्रेकपॉइंट जोड़ने होंगे. इसी तरह, अपने नेटिव कोड को डीबग करने के लिए, आपको नेटिव डीबग सिंबल अटैच करने होंगे.
Kotlin या Java सोर्स अटैच करना
डिफ़ॉल्ट रूप से, Android Studio आपके APK से Kotlin या Java कोड निकालता है और उसे SMALI फ़ाइलों के तौर पर सेव करता है. ब्रेकपॉइंट का इस्तेमाल करके Kotlin या Java कोड को डीबग करने के लिए, आपको IDE को उन Kotlin या Java सोर्स फ़ाइलों पर ले जाना होगा जो उन SMALI फ़ाइलों से मेल खाती हैं जिन्हें आपको डीबग करना है.
Kotlin या Java सोर्स अटैच करने के लिए, यह तरीका अपनाएं:
- Android व्यू में, Project पैन में मौजूद किसी SMALI फ़ाइल पर दो बार क्लिक करें.
फ़ाइल खोलने के बाद, एडिटर एक बैनर दिखाता है. इसमें आपसे Kotlin या Java सोर्स चुनने के लिए कहा जाता है:
- एडिटर विंडो में मौजूद बैनर में जाकर, Attach Kotlin/Java Sources... पर क्लिक करें.
- ऐप्लिकेशन की Kotlin या Java सोर्स फ़ाइलों वाली डायरेक्ट्री पर जाएं और खोलें पर क्लिक करें.
प्रोजेक्ट विंडो में, Android Studio, SMALI फ़ाइलों को उनकी मिलती-जुलती Kotlin या Java सोर्स फ़ाइलों से बदल देता है. Android Studio में, इनर क्लास भी अपने-आप शामिल हो जाती हैं. अब ब्रेकपॉइंट जोड़े जा सकते हैं और अपने ऐप्लिकेशन को डीबग किया जा सकता है.
नेटिव डीबग सिंबल अटैच करना
अगर आपके APK में ऐसी नेटिव लाइब्रेरी (SO फ़ाइलें) शामिल हैं जिनमें डीबग सिंबल शामिल नहीं हैं, तो Android Studio आपको एक बैनर दिखाएगा. यह बैनर, इमेज 1 में दिखाए गए बैनर जैसा होगा. डीबग करने लायक नेटिव लाइब्रेरी अटैच किए बिना, APK के नेटिव कोड को डीबग नहीं किया जा सकता. साथ ही, ब्रेकपॉइंट का इस्तेमाल भी नहीं किया जा सकता.
डीबग की जा सकने वाली नेटिव लाइब्रेरी अटैच करने के लिए, यह तरीका अपनाएं:
- अगर आपने पहले से ऐसा नहीं किया है, तो NDK और टूल डाउनलोड करें.
Android व्यू में, Project विंडो में मौजूद cpp डायरेक्ट्री में जाकर, डीबग सिंबल शामिल न करने वाली किसी नेटिव लाइब्रेरी फ़ाइल पर दो बार क्लिक करें.
एडिटर में, आपके APK के साथ काम करने वाले सभी ABI की टेबल दिखती है.
एडिटर विंडो में सबसे ऊपर दाएं कोने में मौजूद, जोड़ें पर क्लिक करें.
उस डायरेक्ट्री पर जाएं जिसमें डीबग की जा सकने वाली नेटिव लाइब्रेरी शामिल हैं. इसके बाद, ठीक है पर क्लिक करें.
अगर APK और डीबग की जा सकने वाली नेटिव लाइब्रेरी को किसी दूसरे वर्कस्टेशन का इस्तेमाल करके बनाया गया था, तो आपको स्थानीय डीबग सिंबल के पाथ भी बताने होंगे. इसके लिए, यह तरीका अपनाएं:
एडिटर विंडो के पाथ मैपिंग सेक्शन में, लोकल पाथ कॉलम में मौजूद फ़ील्ड में बदलाव करके, छूटे हुए डीबग सिंबल के लिए लोकल पाथ जोड़ें. यह फ़ील्ड, इमेज 2 में दिखाया गया है.
ज़्यादातर मामलों में, आपको सिर्फ़ रूट फ़ोल्डर का पाथ देना होता है. इसके बाद, Android Studio अतिरिक्त सोर्स को मैप करने के लिए, सबडाइरेक्ट्री की अपने-आप जांच करता है. Android Studio, रिमोट एनडीके के पाथ को आपके स्थानीय एनडीके डाउनलोड से अपने-आप मैप करता है.
एडिटर विंडो के पाथ मैपिंग सेक्शन में, बदलाव लागू करें पर क्लिक करें.
दूसरी इमेज. सिंबल को डीबग करने के लिए स्थानीय पाथ.
नेटिव सोर्स फ़ाइलें, प्रोजेक्ट विंडो में दिखती हैं. ब्रेकपॉइंट जोड़ने और अपने ऐप्लिकेशन को डीबग करने के लिए, उन नेटिव सोर्स फ़ाइलों को खोलें. मैपिंग हटाने के लिए, एडिटर विंडो के पाथ मैपिंग सेक्शन में जाकर, मिटाएं पर क्लिक करें.
ज्ञात समस्या: किसी APK में डीबग सिंबल अटैच करते समय, APK और डीबग किए जा सकने वाले SO फ़ाइलों, दोनों को एक ही वर्कस्टेशन या बिल्ड सर्वर का इस्तेमाल करके बनाया जाना चाहिए.
Android Studio 3.6 और इसके बाद के वर्शन में, अगर APK को IDE के बाहर अपडेट किया जाता है, तो आपको नया प्रोजेक्ट बनाने की ज़रूरत नहीं है. Android Studio, APK में हुए बदलावों का पता लगाता है. साथ ही, आपको इसे फिर से इंपोर्ट करने का विकल्प देता है.
तीसरी इमेज. Android Studio के बाहर अपडेट किए गए APK फिर से इंपोर्ट किए जा सकते हैं.