एप्लिकेशन-रिलीज़-अहस्ताक्षरित.पेक पर हस्ताक्षर नहीं किए गए हैं


200

मैंने जीथब पर एक एंड्रॉइड ऐप की ज़िप फ़ाइल डाउनलोड की है और मैं इसे चलाने की कोशिश कर रहा हूं, लेकिन मुझे इस संदेश के साथ एक संवाद मिलता है

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं। मुझे क्या करना चाहिए?

जवाबों:


438

यदि कोई भी Android स्टूडियो का उपयोग करके रिलीज़ निर्माण को डीबग करना चाहता है , तो इन चरणों का पालन करें:

  1. रिलीज़ मोड में बिल्ड वेरिएंट सेट करें।

यहां छवि विवरण दर्ज करें

  1. बाएं नेविगेशन फलक में ऐप पर राइट क्लिक करें , ओपन मॉड्यूल सेटिंग्स पर क्लिक करें ।

  2. साइनिंग टैब पर जाएं। एक हस्ताक्षर कॉन्फ़िगरेशन जोड़ें और जानकारी भरें। अपने किचेन का भी चयन करें।

यहां छवि विवरण दर्ज करें

  1. बिल्ड टाइप टैब पर जाएं । रिलीज़ मोड चुनें और सेट करें:

-सच में सच

-डिफ़िगर करने के लिए कॉन्फ़िगर करना । (जिसे आपने अभी बनाया है)।

यहां छवि विवरण दर्ज करें

अपने सिंक को सिंक करें। का आनंद लें!


3
क्या वास्तव में रिलीज रिलीज को ठेस पहुंचाने के लिए हमें डिबगेबल को झूठा बनाना चाहिए? या स्टूडियो अपने दम पर ऐसा करेगा?
ईशान गर्ग

7
@IshaanGarg रिलीज करते समय आपको झूठे पर बहस करना चाहिए APK
NightFury

1
आपको लगता है कि यह पहले वाले बनाए गए आश्चर्य के लिए डिफ़ॉल्ट होगा कि यह क्यों नहीं होता है ... शायद यह उन पैकेजों पर हस्ताक्षर करने के लिए कुछ बुरा होगा जिन्हें वे हस्ताक्षर नहीं करना चाहते थे ... लेकिन धन्यवाद, मैं आदमी बिल्ड प्रकार सेट करना भूल गया " साइनिंग कॉन्फ़िगर करना "और स्क्रीनशॉट तक, मुझे याद नहीं था
क्रैन्डेलडब्ल्यूएस

14
वहाँ कोई आवश्यकता सेट करने के लिए डीबग करने के लिए सही , (जब तक कि वास्तव में तो इरादा)।
कंप्यूटिंगफ्रीक

4
हालांकि आपको पता होना चाहिए कि बिल्ड प्रकार के लिए एक विन्यास सेट करने के बाद, आपके सभी कुंजी जानकारी (पासवर्ड सहित)
ग्रेड

95

सुनिश्चित करें कि बिल्ड वेरिएंट एंड्रॉइड स्टूडियो में डिबग (और रिलीज नहीं ) पर सेट है ( बिल्ड वेरिएंट पैनल की जांच करें )।

यदि डीबग करने के लिए सेट किया गया है, तो यह स्वत: जनरेट किए गए डीबग कीस्टोर के साथ ऐप को साइन करना चाहिए, बिना बिल्ड स्क्रिप्ट को संपादित किए बिना।

हालाँकि आपको रिलीज़ के लिए एक विशिष्ट कीस्टॉर बनाने और कॉन्फ़िगर करने की आवश्यकता होगी।

आधिकारिक दस्तावेज, डिबग और रिलीज मोड को कवर: https://developer.android.com/tools/publishing/app-signing.html


54

हमेशा अपने build.gradle डीएसएल स्क्रिप्ट का उपयोग करके इस तरह अपने हस्ताक्षर करें:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}

यदि आप एंड्रॉइड स्टूडियो से जुड़े ग्रेडल बिल्ड सिस्टम के बारे में कुछ और समझना चाहते हैं, तो बस एक यात्रा का भुगतान करें:

ग्रेड प्लगइन उपयोगकर्ता गाइड


लेकिन मुझे ऐसा क्यों करना पड़ा है? गाइड पर वे कहते हैं "डिफ़ॉल्ट रूप से, एक डीबग कॉन्फ़िगरेशन है जो डीबग कीस्टोर का उपयोग करने के लिए सेटअप है, एक ज्ञात पासवर्ड और एक ज्ञात पासवर्ड के साथ एक डिफ़ॉल्ट कुंजी है।" मुझे अन्य अनुप्रयोगों के साथ कोई समस्या नहीं है।
andrew

यदि आपका पासवर्ड ठीक है और डीबग.स्टिस्टोर उपलब्ध है, तो मुझे नहीं पता। इसके साथ अतीत में मैंने जो सामान्य समस्याएं देखीं, वे हैं फ़ाइल अनुमति या निर्देशिका अनुमति। हो सकता है कि आपके द्वारा डाउनलोड किया गया प्रोजेक्ट एंड्रॉइड स्टूडियो स्थानीय फाइलों को रख रहा हो, जो आपकी तुलना में अन्य डीबग कीस्टोर को इंगित करता है। किसी भी स्थिति में आपके ग्रेडल लॉग को पथ त्रुटि दिखानी चाहिए, कृपया उस लॉग को अधिक सहायता के लिए शामिल करें।
मार्टिन रिवर्ट

हम्म, मेरे लिए भी काम नहीं करता है। कोई भी त्रुटि नहीं है, लेकिन फिर भी हस्ताक्षर करने में त्रुटि हो रही है (और यह मेरे keyfile पर बताया गया है)।
ब्रायन नोब्लुक

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

1
फ़ोल्डर debug.keystoreमें स्थित नहीं है .android? जब तक आप इसे अपने प्रोजेक्ट में नहीं ले जाते हैं, तब तक आप पूरा रास्ता देना चाहते हैं
गोखर अरीक

36

मैं सफलतापूर्वक हस्ताक्षरित डीबग करने में सक्षम था, इस प्रक्रिया का पालन करें: -

  1. "बिल्ड वेरिएंट" टूलबार में "रिलीज़" संस्करण चुनें
  2. में Build.gradleमॉड्यूल सेट के लिए debuggable trueरिहाई का निर्माण प्रकार के लिए
  3. फाइल पर जाएं-> प्रोजेक्ट स्ट्रक्चर-> साइनिंग टैब के तहत सभी जानकारी भरें-> फ्लेवर टैब के तहत-> साइन इन कॉन्‍फ़िगरेशन चुनें जो आपने बनाया है
  4. ब्रेकपॉइंट सेट करें
  5. एप्लिकेशन को डिबग मोड में चलाएं

मेरे लिए काम नहीं कर रहा है। मैंने स्टेजिंग वेरिएंट के लिए डीबग करने योग्य सत्य निर्धारित किया है, लेकिन फिर भी, बिल्डिंग से पहले एपीके पर हस्ताक्षर करने की आवश्यकता है।
निशांत तंवर

19

यदि कोई भी Android Studio 3.5 का उपयोग करके अलग बिल्ड वेरिएंट को डिबग और रिलीज़ करना चाहता है, तो नीचे दिए गए चरणों का पालन करें: 1. बिल्ड वेरिएंट को रिलीज़ मोड पर सेट करें।

वेरिएंट बनाएँ

  1. फाइल >> प्रोजेक्ट स्ट्रक्चर पर जाएं
  2. मॉड्यूल चुनें, फिर कॉन्‍फ़िगरिंग साइन इन करें
  3. साइनिंग कॉन्फ़िगरेशन के तहत प्लस आइकन में क्लिक करें

साइन इन कर रहा है

  1. रिलीज़ अनुभाग चुनें और अपनी रिलीज़ ऐप जानकारी प्रदान करें फिर आवेदन करें और ठीक करें।

साइन इन करें

  1. अपने एप्लिकेशन स्तर पर जाएं build.gradleऔर buildTypesस्क्रीनशॉट के नीचे अपना > "रिलीज़" खंड बदलें ।

अंतिम

फिर अपना प्रोजेक्ट चलाएं। हैप्पी कोडिंग।


आपको .jks फ़ाइल कहाँ से प्राप्त होती है?
मार्क अलेक्जेंडर

@MarcAlexander यहाँ कोई भी .jks कोड स्क्रीनशॉट नहीं है। आप एंड्रॉइड स्टूडियो एडिटर से .jks फाइल जेनरेट कर सकते हैं।
शोहेल राणा

14

SignTonfigs buildTypes से पहले होना चाहिए

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }

12

अगर आप डिबग मोड में ऐप चलाना चाहते हैं

1) लेफ्ट साइड बॉटम पर देखें, पसंदीदा ऊपर बिल्ड वेरिएंट है

2) बिल्ड वेरिएंट पर क्लिक करें। रिलीज़ पर क्लिक करें और डीबग चुनें

यह सही काम करता है !!!


10

आपके द्वारा डाउनलोड किए गए एप्लिकेशन प्रोजेक्ट में build.gradle की फ़ाइल में एक हस्ताक्षरित जानकारी शामिल हो सकती है। यदि आपने इन जैसे कोड देखे हैं:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}

आप उन्हें हटा सकते हैं और पुनः प्रयास कर सकते हैं।


9

कोटलीन के लिए डीएसएल

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}

7

स्टीफन द्वारा सुझाए गए बिल्ड वेरिएंट को बदलने से मेरी समस्या हल हो गई, अगर कोई भी "बिल्ड वेरिएंट" खोजने के लिए संघर्ष कर रहा था जैसा कि मैंने यहां किया था एक स्क्रीनशॉट है जहां आप इसे पा सकते हैं।

यहां छवि विवरण दर्ज करें


1
मैं डिबग से रिलीज़ तक बदलाव का निर्माण करने के बाद समस्याओं का सामना कर रहा हूं
पार्थ पटेल

6

सुरक्षा कारणों से, आप एंड्रॉइड पर एक अहस्ताक्षरित apk इंस्टॉल नहीं कर सकते हैं। इसलिए यदि आपके पास केवल अहस्ताक्षरित एपीके है: तो आपको इस पर हस्ताक्षर करना चाहिए। यहाँ है कि कैसे करना है: लिंक

ध्यान दें कि आप एपीके को एक स्व-हस्ताक्षरित प्रमाण पत्र के साथ हस्ताक्षर कर सकते हैं।

एक विकल्प या तो हो सकता है:

  • उपलब्ध होने पर हस्ताक्षर किए गए APK को डाउनलोड करने के लिए।
  • स्रोतों को डाउनलोड करने के लिए, उन्हें संकलित करें (Android-Studio या gradle या ... के साथ)। यह कई एप्स का उत्पादन करेगा और उनमें से एक को आपकी डिबग-की के साथ साइन किया जाएगा (और इसलिए आप इसे इंस्टॉल कर पाएंगे)

1
मुझे यकीन नहीं है कि मैं समझ रहा हूँ। मैं अनुप्रयोग के कोड की ज़िप डाउनलोड किया है और मैं एंड्रॉयड स्टूडियो ... के साथ संकलित करने के लिए कोशिश कर रहा हूँ
एंड्रयू

इसलिए आपको एक हस्ताक्षरित संस्करण संकलित करना होगा। आमतौर पर हस्ताक्षरित संस्करण एक ही समय में बनाया जाता है और एक ही निर्देशिका में अहस्ताक्षरित के रूप में स्थित होता है।
बेंज

अगर मैं एक हस्ताक्षरित APK उत्पन्न करता हूं तो यह काम करता है, लेकिन मैं हर बार मुझे ऐप का परीक्षण करने के लिए नहीं कर सकता। मैं यहाँ कुछ याद कर रहा हूँ, मैं सिर्फ एप्लिकेशन कोशिश के रूप में मैं अपने खुद के अनुप्रयोगों के साथ क्या चाहते हैं ...
एंड्रयू

2

टूल विंडो बार में बिल्ड वेरिएंट चेंज बिल्ड वेरिएंट को रिलीज़ से डेब्यू तक चुनें


2

मैंने इसे कैसे हल किया?

यह त्रुटि तब होती है क्योंकि आपने अपने बिल्ड वेरिएंट को रिलीज़ मोड में सेट कर दिया है। इसे मोड बनाने और प्रोजेक्ट को फिर से चलाने के लिए सेट करें।

यदि आप रिलीज़ मोड में चलना चाहते हैं, तो बस एक हस्ताक्षरित एपीके उत्पन्न करें जिस तरह से हम ऐप को जारी करते समय इसे सामान्य रूप से करते हैं


मेरे पास केवल "डीबग" और "रिलीज़" विकल्प हैं?
स्टीव स्मिथ

0

मेरा समाधान डिफ़ॉल्ट "कॉन्फ़िगर" से "डीबग" में मेरे हस्ताक्षर करने वाले कॉन्फ़िगरेशन का नाम बदलना था। सत्यापित करने के लिए, मैंने इसे किसी अन्य यादृच्छिक नाम में बदल दिया और त्रुटि फिर से प्राप्त की, और फिर इसे "डीबग" में बदल दिया और त्रुटि चली गई। तो जबकि यह कृत्रिम लगता है और मुझे विश्वास नहीं होता कि यह पूरी कहानी है, इस समाधान को आजमाएं।


0

मैं भी इस समस्या है, और नीचे मेरे कोड दिखाई देते हैं

        storeFile file(properties.getProperty("filepath"))
        storePassword properties.getProperty("keypassword")
        keyAlias properties.getProperty("keyAlias")
        keyPassword properties.getProperty("keypassword")

इसका कारण संपत्ति का नाम त्रुटि है, यह keyPassword होना चाहिए ना कि Keywordword


0

आखिरकार मेरे लिए क्या काम किया, और मुझे पता नहीं क्यों, है:

  • लास्टपास पर चला गया (सेवा मैं अपने सभी पासवर्ड रखने के लिए उपयोग करता हूं)
  • पासवर्ड के ऊपर कर्सर रखकर और डबल क्लिक करके मेरा पासवर्ड चुनें
  • एक बार चयनित होने के बाद मैं कॉपी करने के लिए cmd C दबाता हूं
  • पेस्ट करने के लिए Android अध्ययन और cmd V पर गए

सूचना मैंने पासवर्ड के अंत में क्लिक करके और माउस को ले जाकर पासवर्ड का चयन करके कई बार कॉपी करने का प्रयास किया।

यह अजीब है, लेकिन यह केवल इसे कॉपी करने के लिए पासवर्ड के शीर्ष पर डबल क्लिक करके काम करता है।

इसके अलावा, मैंने इस पोस्ट पर @NightFury द्वारा समझाए गए खुले मॉड्यूल सेटिंग्स> हस्ताक्षर ... विधि का उपयोग किया।


0

build.gradel फ़ाइल में कोड की नीचे की पंक्तियों को जोड़ना मेरे लिए काम करता है, उन्हें बिल्ड के नीचे जोड़ दें जैसा कि नीचे दिखाया गया है

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        applicationIdSuffix ".debug"
        debuggable true
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.