डीबग कैसे करें apk रिलीज के लिए साइन किया गया?


114

मेरे पास एक एपीके है जिसे मैंने एंड्रॉइड मार्केट में साइन इन और अपलोड किया है, और अपने फोन पर इंस्टॉल किया है। मैं इस रिलीज़ को डिबग करना चाहूंगा एपीके (एक्लिप्स के माध्यम से), जबकि यह मेरे फोन पर चल रहा है। मैंने पहले भी ऐसा किया है (और याद रखें कि यह एंड्रॉइड डेवलपमेंट टूल्स में से एक है; शायद डेल्विक डीबग मॉनीटर) लेकिन दुर्भाग्य से यह याद नहीं है कि यह कैसे करना है और ऑनलाइन कोई भी लेख खोजने में असमर्थ रहा है। क्या किसी को पता है कि यह कैसे किया जा सकता है?

नोट: मैं है सेट android:debuggable="true"प्रकट में और यूएसबी सक्षम किया है, मेरे फोन पर डिबगिंग।


आप वर्तमान में क्या प्रयास कर रहे हैं? क्या आप नहीं जानते कि ग्रहण में डिवाइस व्यू का उपयोग कैसे करें?
सैम डोजर

मेरे पास अब ग्रहण में दिखने वाले उपकरण हैं। मैं अपनी डिवाइस को डिवाइस सूची में देख सकता हूं। मैं इस पर क्लिक करता हूं, लेकिन "चयनित प्रक्रिया को डिबग करें" बटन फोन पर चल रहे एप्लिकेशन और कार्यस्थल में मौजूद और स्रोत प्रोजेक्ट के चालू होने के बावजूद अक्षम है। कोई विचार?!
आदिल हुसैन

क्या आप अपने ऐप के पैकेज नाम पर क्लिक कर रहे हैं?
सैम डोजर

हाँ। अपने उत्तर में टिप्पणी देखें। (मदद के लिए धन्यवाद btw। इसकी सराहना करें।)
आदिल हुसैन

जवाबों:


77

सुनिश्चित करें कि आपकी मैनिफ़ेस्ट फ़ाइल android:debuggable="true"के applicationटैग में सेट है , और फिर:

  1. अपने फ़ोन को अपने कंप्यूटर में प्लग करें और फ़ोन पर USB डीबगिंग को सक्षम करें
  2. अपने ऐप के लिए ग्रहण और एक कार्यक्षेत्र खोलें
  3. ग्रहण में, विंडो-> शो व्यू-> डिवाइस पर जाएं
  4. उपकरण दृश्य को देखें जो अब दिखाई देनी चाहिए, आपको अपने डिवाइस को सूचीबद्ध देखना चाहिए
  5. यदि आपका डिवाइस सूचीबद्ध नहीं है, तो आपको जारी रखने से पहले अपने फोन के लिए ADB ड्राइवरों को ट्रैक करना होगा
  6. यदि आप कोड के माध्यम से कदम रखना चाहते हैं, तो अपने ऐप में कहीं एक ब्रेकपॉइंट सेट करें
  7. अपने फोन पर ऐप खोलें
  8. डिवाइस दृश्य में, यदि यह पहले से ही विस्तारित नहीं है, तो अपने फ़ोन के लिए प्रविष्टि का विस्तार करें और अपने ऐप के पैकेज नाम की तलाश करें।
  9. पैकेज के नाम पर क्लिक करें, और डिवाइसेस दृश्य के शीर्ष दाईं ओर आपको कई अन्य छोटे बटनों के साथ एक हरा बग देखना चाहिए। हरी बग पर क्लिक करें।
  10. अब आपको अपने ऐप को संलग्न / डीबग करना चाहिए।

मैं स्टेप 8 तक पहुँच जाता हूँ, लेकिन किसी कारणवश मेरे ऐप के पैकेज का नाम तब प्रदर्शित नहीं होता जब मैं हस्ताक्षरित / रिलीज़ एपीके चला रहा होता हूँ। (अजीब तरह से यह दिखाता है जब मैं अपने फोन पर ऐप (डिबग एपीके) को सीधे ग्रहण से चलाता हूं।) उलझन में ...
आदिल हुसैन

2
समझ गया! मैंने मेनिफ़ेस्ट के बजाय टैग के बजाय टैग android:debuggable="true"में विशेषता डाल दी थी !! मेरा बुरा :( आपके मार्गदर्शन के लिए बहुत बहुत धन्यवाद Sam_D। यह आपके बिना नहीं किया होगा, या सबसे अच्छा समय की एक लंबी बिल्ली लिया होगा!manifestapplication
आदिल हुसैन

जब मैं build.gradle में डीबग करने योग्य कीवर्ड जोड़ता हूं और प्ले स्टोर में प्रकाशित करना चाहता हूं तो यह त्रुटि दिखाता हैYou uploaded a debuggable APK. For security reasons you need to disable debugging before it can be published in Google Play.
hasnain_ahmad

1
यह जवाब पुराना है। इसके बजाय androidManifest.xmlआपको अपडेट करना चाहिए build.gradle। अन्य उत्तर देखें।
एंटीमोनिट

@hasnain_ahmad क्या आप इसके लिए कोई समाधान खोजने में सक्षम थे?
शशांक सक्सेना

126

मुझे पता है कि यह पुराना सवाल है, लेकिन भविष्य में संदर्भ है। ग्रैडल के साथ Android स्टूडियो में:

buildTypes {
    release {
        debuggable true
        runProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

रेखा debuggable true मेरे लिए चाल थी।

अपडेट करें:

1.0 के बाद से यह minifyEnabledइसके बजाय है runProguardयहाँ देखो


5
ध्यान दें कि Gradle 1.0 के रूप में यह है minifyEnabled के बजाय runProguard - देख tools.android.com/tech-docs/new-build-system/migrating-to-1-0-0
m02ph3u5

इस वर्तमान उत्तर के लिए एक नोट के रूप में, मैं स्वयं Google Play स्टोर पर एक डिबग करने योग्य रिलीज़ भेजने से बचूंगा, और यह आपको पिछले पुराने उत्तर में hasnain_ahmad के मामले में ऐसा नहीं करने दे सकता है। बस इसे अस्थायी रूप से रिलीज़-से-डाउनलोड-स्टोर की समस्या का परीक्षण करने के लिए, जैसे अनुचित खरीद कोड ट्रैकिंग, कम जोखिम भरा होगा। आप बीटा ट्रैक के साथ काम करने की भी कोशिश कर सकते हैं (मुझे नहीं पता कि यह हैडियन के समान त्रुटि दे सकता है) या सुरक्षा समस्याओं से बचने के लिए अपने कंप्यूटर से रिलीज़ बिल्ड एपीके को अपने कंप्यूटर पर स्थानांतरित करना (बंडल से निपटने में गड़बड़ है) )।
Androidcoder

40

मैनुअल के तरीके के अलावा, आप अभी भी मैनिफेस्ट का उपयोग कर सकते हैं।

एंड्रॉइड स्टूडियो स्थिर में, आपको फ़ाइल applicationमें निम्नलिखित 2 पंक्तियों को जोड़ना होगा AndroidManifest:

    android:debuggable="true"
    tools:ignore="HardcodedDebugMode"

पहला हस्ताक्षर किए गए एपीके की डीबगिंग सक्षम करेगा, और दूसरा संकलन-समय त्रुटि को रोक देगा।

इसके बाद, आप "अटैच डिबगर से एंड्रॉइड प्रोसेस" बटन के माध्यम से प्रक्रिया को संलग्न कर सकते हैं।


@jaibatrik को आपका एपीके बनना है और आपको डीबगर को स्रोतों से जोड़ना है। यदि आप दोनों कर रहे हैं और यह अभी भी काम नहीं कर रहा है, तो अधिक जानकारी साझा करें और मैं मदद करने की कोशिश कर सकता हूं
सैंडलोन

2
मुझे "[घातक त्रुटि]: 7: 203: विशेषता" टूल्स के लिए उपसर्ग "उपकरण": "तत्व" के साथ जुड़े "अनदेखा" बाध्य नहीं है। " उपकरण है: उपेक्षा = "HardcodedDebugMode" एक कानूनी विन्यास यहाँ?
JD

1
मुझे lintOptions { abortOnError false }अपने ऐप / बिल्ड.ग्रेड में शामिल होना था tools:ignoreजैसे कि उपयोग करने के बजाय : android { lintOptions: { abortOnError false } }
YoshiJaeger

मैं मिल गया The prefix "tools" for attribute "tools:ignore" associated with an element type "application" is not bound.!
ओलिवर डी

9

मैंने निम्नलिखित के साथ कोशिश की और यह काम कर रहा है:

release {
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

यह उत्तर इस सूत्र में पहले ही दिया गया है कि मैनुअल लोपेरा ने ... तीन साल पहले! यहां देखें: stackoverflow.com/a/27181562/1071320
आदिल हुसैन

@ AdilHussain लेकिन मैंने कोशिश की कि इसका जवाब मेरे लिए काम न करे। देखें कि मेरे जवाब में `minifyEnabled false` पर अंतर है और यह runProguard trueउसके मामले में है। कृपया बदलाव देखें
Shylendra Madda

कोई बड़ी बात नहीं है लेकिन उनके जवाब में इस आशय का अद्यतन शामिल है। वैसे भी। कोई बड़ी बात नहीं। जवाब के लिए धन्यवाद।
आदिल हुसैन

9

अपने ऐप build.gradle में निम्नलिखित जोड़ें और निर्दिष्ट रिलीज़ बिल्ड वेरिएंट और रन का चयन करें

signingConfigs {
        config {
            keyAlias 'keyalias'
            keyPassword 'keypwd'
            storeFile file('<<KEYSTORE-PATH>>.keystore')
            storePassword 'pwd'
        }
    }
    buildTypes {
      release {
          debuggable true
          signingConfig signingConfigs.config
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

5

आपके मामले में आपने अपनी एपीके डिबग का फैसला किया है जो पहले से ही बाजार में है लेकिन डिबग करने योग्य नहीं है और आप इसे फिर से प्रकाशित नहीं करना चाहते हैं। तो नीचे दिए गए चरणों का पालन करें;

  1. ApkTool (उदा। apktool d <APK_PATH>) के साथ Apk को अपघटित करें
  2. विघटित फ़ाइलों से AndroidManifest.xml खोलें
  3. टैग android:debuggable="true"में सेट करेंapplication
  4. ApkTool (जैसे। apktool b <MODIFIED_PATH>) के साथ संशोधित स्रोत संकलित करें
  5. डिबग करने योग्य एपीके तैयार (जो अहस्ताक्षरित मतलब स्टोर प्रकाशित नहीं कर सकता है)। आप अपनी इच्छानुसार डिबग कर सकते हैं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.