क्या मैं दो अलग-अलग अनुप्रयोगों पर हस्ताक्षर करने के लिए एक ही कीस्टोर फ़ाइल का उपयोग कर सकता हूं?


89

मुझे एक नया एप्लिकेशन अपलोड करना है, यह सिर्फ डिज़ाइन है जो थोड़ा अलग है। कल मैंने आवेदन पर हस्ताक्षर करने के लिए कीस्टोर फाइल तैयार की। क्या मैं उसी का उपयोग कर सकता हूं?


5
हाँ आप कर सकते हैं (यह भी, क्या आपने पूछने से पहले कोशिश की थी?)
njzk2

जवाबों:


96

आप keystoreकिसी भी संख्या में अनुप्रयोगों के लिए इसका उपयोग कर सकते हैं ।

कोई नया कीस्टार उत्पन्न करने की आवश्यकता नहीं है।


6
और 'उपनाम' के लिए, मुझे क्या लिखना चाहिए?
डॉ। जकी

12
एक कीस्ट्रोक को समाहित सार्वजनिक / निजी keypairs है कि एक पर हस्ताक्षर प्रमाण पत्र बना। एक कीस्टोर में कई कीप्स हो सकते हैं। एक 'उपनाम' कीस्टोर में एक विशेष कीपर का संदर्भ है। एक कीस्टॉर आपके सभी कीपर्स को पकड़ सकता है, लेकिन आपके पास प्रति ऐप में एक कीपेयर होना चाहिए। उस ऐप के नाम का उपयोग करें जिसे आप उपनाम के रूप में हस्ताक्षर कर रहे हैं। आपके पास अपने कीस्टॉर के लिए और इसके भीतर प्रत्येक कीपर के लिए अलग-अलग पासवर्ड हो सकते हैं। आप इन पासवर्डों को बदल सकते हैं और कीस्टोर से की-मेल आयात और निर्यात कर सकते हैं या अपने की -स्टोर में नए कीपेयर जोड़ सकते हैं। यह सब कमांड लाइन 'कीटल' कमांड के साथ किया जाता है। इसे देखो।
brycewjohnson

@brycewjohnson क्या जीयूआई के माध्यम से कीस्टोर में नए जोड़े जोड़े जा सकते हैं?
सिनेकाउट

43

मैं अब तक सर्वसम्मति के जवाब के लिए एक काउंटर तर्क दूंगा।

मैं मानता हूं कि ज्यादातर ऐप लेखकों के लिए, आपके ऐप्स के बीच एक ही कीस्टॉर / सर्टिफिकेट / पासवर्ड साझा करना ठीक काम करेगा। महत्वपूर्ण बात यह है कि " अपने अनुप्रयोगों के अपेक्षित जीवनकाल में एक ही प्रमाण पत्र का उपयोग करें " ताकि ऐप खुद को अपग्रेड कर सके।

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

इसके अलावा, मैं वास्तव में दस्तावेज़ में उसी तरह नहीं पढ़ता हूं जिस तरह @ol_v_er करता है। मुझे लगता है कि वर्तमान लाइन:

आपको अपने सभी एप्लिकेशन को अपने अनुप्रयोगों के अपेक्षित जीवनकाल में एक ही प्रमाण पत्र के साथ हस्ताक्षर करना चाहिए।

(ध्यान दें कि वर्तमान संस्करण में अल्पविराम की कमी है) केवल इस बात पर जोर दिया जा रहा है कि 'जीवनकाल' की सिफारिश सभी ऐप्स पर लागू होती है, न कि वास्तव में आपको अपने सभी ऐप्स के लिए एक ही प्रमाणपत्र का उपयोग करने के लिए निर्देशित करती है।


6
हर ऐप के लिए अलग कीस्टोर्स रखना, जाने का तरीका होना चाहिए!
Sufian

42

आधिकारिक दस्तावेज हमें बताता है:

सामान्य तौर पर, सभी डेवलपर्स के लिए अनुशंसित रणनीति आपके सभी अनुप्रयोगों को एक ही प्रमाण पत्र के साथ, आपके आवेदनों के अपेक्षित जीवनकाल में हस्ताक्षरित करना है। कई कारण हैं कि आपको ऐसा क्यों करना चाहिए ...

https://developer.android.com/studio/publish/app-signing.html#considerations

तो हां, अपने सभी एप्लिकेशन को एक ही प्रमाणपत्र के साथ साइन करने का प्रयास करें।


8
और 'उपनाम' के लिए, मुझे क्या लिखना चाहिए?
डॉ। जकी

6
इसे सरल बनाने के लिए, अपने सभी ऐप्स के लिए भी इसका उपयोग करें।
ol_v_er

18

मैं यहां कुछ स्पष्टीकरण जोड़ना चाहता हूं, क्योंकि इस सवाल और जवाब ने मेरे लिए भ्रम पैदा कर दिया है। यह समझना महत्वपूर्ण है कि वास्तव में कीस्टोर क्या है।

एक कीस्टोर सार्वजनिक / निजी कुंजी जोड़ी को सुरक्षित रूप से संग्रहीत करने का एक साधन है जिसका उपयोग आपके Android एप पर हस्ताक्षर करने के लिए किया जाता है। तो हाँ, आप बिना समस्या के, कई एप्स पर हस्ताक्षर करने के लिए एक ही कीस्टोर का उपयोग कर सकते हैं । आप एक से अधिक उपनाम पर हस्ताक्षर करने के लिए एक ही उपनाम (प्रत्येक उपनाम एक प्रमाण पत्र) का उपयोग कर सकते हैं, और यह काम करेगा। हालाँकि इसके सुरक्षा निहितार्थ हैं। यदि आपके एकल उर्फ ​​के साथ छेड़छाड़ की जाती है, तो आपके सभी ऐप्स समझौता कर चुके होंगे।

हालाँकि, यदि आप एक दिन अपने ऐप्स को अधिकार बेचने का इरादा रखते हैं, तो आपके सभी ऐप्स के लिए एक ही उपनाम का उपयोग करना एक अच्छा विचार नहीं हो सकता है। हालांकि, एक ही कीस्टोर का उपयोग करते हुए, बशर्ते आप प्रत्येक एपीके के लिए एक अलग उपनाम का उपयोग करें, जरूरी नहीं कि यह एक बुरा विकल्प हो। मुझे यकीन है कि एक तरीका है कि आप एक प्रमाणपत्र को एक कीस्टोर से दूसरे में स्थानांतरित कर सकते हैं, ताकि आप सुरक्षित रूप से अपने खरीदार को केवल उस प्रमाणपत्र के लिए आवश्यक कुंजी दे सकें।

इसे बहुत स्पष्ट करने के लिए, एक कीस्टोर बस है, जो किज़ के लिए स्टोरेज माध्यम है। यह एपीके साइन करने की प्रक्रिया में कोई वास्तविक भूमिका नहीं निभाता है, लेकिन केवल उन कुंजियों को संग्रहीत करने का कार्य करता है जो वास्तव में एपीके पर हस्ताक्षर करने के लिए उपयोग किए जाते हैं।

संदर्भ:

कीस्टोर, सर्टिफिकेट और उपनाम से समझना

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


1
कृपया कई प्रश्नों के समान उत्तर न दें। एक अच्छा उत्तर पोस्ट करें, फिर डुप्लिकेट के रूप में अन्य प्रश्नों को बंद करने के लिए वोट / ध्वज दें। यदि प्रश्न डुप्लिकेट नहीं है, तो प्रश्न के अपने उत्तरों को दर्जी करें।
पॉल राउब

क्षमा याचना। मैं एसओ के लिए एक noob हूँ।
एंथोनी डाइवर्स

1
मेरे पास डुप्लिकेट के लिए वोट करने के लिए पर्याप्त प्रतिनिधि नहीं है। इसलिए यदि आप डुप्लिकेट के रूप में निम्नलिखित प्रश्नों को वोट देना चाहते हैं, तो मुझे लगता है कि यह प्रश्न नॉन-डुप्लिकेट होने के लिए सबसे उपयुक्त है। यह प्रासंगिक कीवर्ड के लिए Google में पहली रैंक है, और इसके सबसे अधिक प्रासंगिक उत्तर हैं। stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
एंथोनी डाइवर्स

रुको! मैं एक ही कीस्टॉर का उपयोग कैसे कर सकता हूं लेकिन प्रत्येक ऐप के लिए अलग-अलग उपनाम के साथ ?!
ज़ियाद एच।

5

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


2

मैं एक ही प्रमाण पत्र (कीस्टोर) का उपयोग करके अपने सभी ऐप पर हस्ताक्षर करता हूं। यह एक फायदा देता है अगर मैं अपना दिमाग बदल दूं और चाहता हूं कि मेरे ऐप अपना डेटा साझा करें।

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

एंड्रॉइड डॉक्टर एंड्रॉइड से: shareUserId

एंड्रॉयड: sharedUserId

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


1

ताज़ा अपडेट

यदि आप Google द्वारा ऐप साइनिंग में नामांकन करना चाहते हैं, तो आपको अपने APK या बंडल पर हस्ताक्षर करने के लिए नई भिन्न कुंजी का उपयोग करना होगा अन्यथा Google कंसोल अपलोड करने के बाद आपको त्रुटि संदेश मिलेगा

आपने एक एपीके या एंड्रॉइड ऐप बंडल अपलोड किया है जो एक कुंजी के साथ हस्ताक्षरित है जिसका उपयोग उपयोगकर्ताओं को वितरित किए जाने वाले APK पर हस्ताक्षर करने के लिए भी किया जाता है। क्योंकि आप Google Play द्वारा ऐप साइनिंग में नामांकित हैं, आपको अपलोड करने से पहले एक नई कुंजी के साथ अपने एपीके या एंड्रॉइड ऐप बंडल पर हस्ताक्षर करना चाहिए


मैं एंड्रॉइड स्टूडियो apk साइनिंग स्क्रीन के अंदर एक नई कुंजी उत्पन्न करने में सक्षम था। नए कीस्टोर और उर्फ ​​उत्पन्न करें और यह काम कर सकता है। इसने मेरे लिए काम किया।
नुमान करासलान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.