2017-03-07 15 views
120

चयन करें कम से कम हस्ताक्षर संस्करण 2.3एंड्रॉइडस्टूडियो में हस्ताक्षरित एपीके उत्पन्न करते समय हस्ताक्षर संस्करणों के बीच अंतर - वी 1 (जार हस्ताक्षर) और वी 2 (पूर्ण एपीके हस्ताक्षर)?

एंड्रॉयड स्टूडियो में उपयोग करने के लिए में से एक अब जबकि एंड्रॉयड स्टूडियो में प्रवेश किया हुआ apk उत्पन्न करते समय, दो विकल्प (चेकबॉक्स) अर्थात् 1. V1(Jar Signature) और 2. `V2 (पूर्ण दिखा रहा है एपीके हस्ताक्षर) 'हस्ताक्षर संस्करण हस्ताक्षरित एपीके जनरेटिंग प्रक्रिया के अंतिम चरण में।

**Signature Versions** options

तो, इन V1 (जार हस्ताक्षर) और V2 (पूर्ण APK हस्ताक्षर) नए Android स्टूडियो में अद्यतन के बीच क्या अंतर है?

और मुझे प्ले स्टोर रिलीज के लिए एपीके पर हस्ताक्षर करने के लिए (या दोनों) का उपयोग करना चाहिए?

इसके अलावा मुझे त्रुटि मिल रही है पार्स असफल कोई प्रमाणपत्र इंस्टॉल करें जबकि मैं दूसरे विकल्प का उपयोग करते समय एपीके इंस्टॉल करते समय।

उत्तर

118

यह एंड्रॉइड 7.0 में पेश किया गया एक नया हस्ताक्षर तंत्र है, जिसमें एपीके हस्ताक्षर को और अधिक सुरक्षित बनाने के लिए डिज़ाइन की गई अतिरिक्त सुविधाएं हैं।

यह अनिवार्य नहीं है। यदि संभव हो तो आपको उन चेकबॉक्सों में से दोनों को जांचना चाहिए, लेकिन यदि नई वी 2 हस्ताक्षर तंत्र आपको समस्याएं देता है, तो आप इसे छोड़ सकते हैं।

तो यदि आप समस्याओं का सामना करते हैं तो आप केवल V2 अनचेक छोड़ सकते हैं, लेकिन यदि संभव हो तो इसे जांचना चाहिए।

+0

आपको अपने प्रश्न को फिर से लिखना चाहिए, ऐसा लगता है कि आपने लिंक किए गए दस्तावेज को भी पढ़ा नहीं है ... यह जानना उपयोगी है कि आप उस चेकमार्क को अनचेक कर सकते हैं। शायद यदि आप "त्रुटि संदेश और समस्या का सामना करते हैं) जोड़ते हैं, तो v2 का उपयोग करने के बाद भविष्य में – Booger

+0

के लिए यह प्रश्न अधिक मूल्यवान हो जाएगा। इसलिए, मैं v2 छोड़ देता हूं। –

+0

मैंने V1 और V2 का उपयोग करके हस्ताक्षरित एप्लिकेशन द्वारा ऐप अपलोड किया है उसके बाद मैं Google play से एप्लिकेशन डाउनलोड करता हूं और एंड्रॉइड स्टूडियो से एक ही संस्करण चलाता हूं, यह मुझे दिखाता है कि "स्थापना विफल है क्योंकि डिवाइस के पास एक ही पैकेज के साथ एक एप्लीकेशन है लेकिन एक अलग हस्ताक्षर है। । । .. " क्या आप मुझे सुझाव दे सकते हैं कि मैं build.gradle को अपडेट करने के लिए गलत क्या कर रहा हूं? –

18

यह here लिखा गया है कि "डिफ़ॉल्ट रूप से, एंड्रॉइड स्टूडियो 2.2 और ग्रैडल 2.2 के लिए एंड्रॉइड प्लगइन एपीके हस्ताक्षर योजना v2 और पारंपरिक हस्ताक्षर योजना दोनों का उपयोग करके आपके ऐप पर हस्ताक्षर करता है, जो जेएआर हस्ताक्षर का उपयोग करता है।"

ऐसा लगता है कि ये नए चेकबॉक्स एंड्रॉइड 2.3 के साथ दिखाई दिए, मैं समझता हूं कि एंड्रॉइड स्टूडियो के मेरे पिछले संस्करण (कम से कम 2.2) ने दोनों हस्ताक्षरों के साथ साइन किया था। इसलिए, जैसा कि मैंने पहले किया था, जारी रखने के लिए, मुझे लगता है कि दोनों चेकबॉक्स जांचना बेहतर है।

संपादित करें मार्च 31 वें, 2017: दोनों हस्ताक्षरों के साथ प्रस्तुत कई क्षुधा => कोई समस्या नहीं :)

3

मुझे लगता है कि this एक अच्छा जवाब प्रतिनिधित्व करता है।

APK हस्ताक्षर योजना v2 सत्यापन

  1. APK Signing Block का पता लगाएँ और सत्यापित करें कि: APK Signing Block की
    1. दो आकार के खेतों में एक ही मूल्य होते हैं।
    2. ZIP Central Directory तुरंत ZIP End of Central Directory रिकॉर्ड के बाद आता है।
    3. ZIP End of Central Directory अधिक डेटा के बाद नहीं है।
  2. APK Signing Block के अंदर पहले APK Signature Scheme v2 Block का पता लगाएं। यदि मौजूद होने पर v2 ब्लॉक, चरण 3 पर जाएं।अन्यथा, v1 योजना का उपयोग करके एपीके की पुष्टि करने के लिए वापस आना।
  3. APK Signature Scheme v2 Block में प्रत्येक हस्ताक्षरकर्ता के लिए:
    1. चुनें हस्ताक्षर से सबसे मजबूत समर्थित हस्ताक्षर एल्गोरिथ्म आईडी। ताकत आदेश प्रत्येक कार्यान्वयन/मंच संस्करण तक है।
    2. सार्वजनिक कुंजी का उपयोग करके हस्ताक्षरित डेटा के हस्ताक्षर से संबंधित हस्ताक्षर सत्यापित करें। (अब हस्ताक्षरित डेटा पार्स करने के लिए सुरक्षित है।)
    3. सत्यापित करें कि पाचन और हस्ताक्षर में हस्ताक्षर एल्गोरिदम आईडी की क्रमबद्ध सूची समान है। (यह हस्ताक्षर स्ट्रिपिंग/जोड़ को रोकने के लिए है।)
    4. हस्ताक्षर एल्गोरिदम द्वारा उपयोग किए गए डाइजेस्ट एल्गोरिदम के रूप में एक ही डाइजेस्ट एल्गोरिदम का उपयोग करके एपीके सामग्री के पाचन की गणना करें।
    5. सत्यापित करें कि गणना की गई पाचन डाइजेस्ट से संबंधित पाचन के समान है।
    6. सत्यापित करें कि प्रमाण पत्र के पहले प्रमाणपत्र के SubjectPublicKeyInfo सार्वजनिक कुंजी के समान हैं।
  4. सत्यापन सफल होता है यदि कम से कम एक हस्ताक्षरकर्ता पाया गया था और प्रत्येक 3 पाए गए हस्ताक्षरकर्ता के लिए चरण 3 सफल हुआ।

नोट: APK v1 योजना का उपयोग कर यदि एक विफलता चरण 3 में होता है या 4.

जार-हस्ताक्षरित APK सत्यापन (v1 योजना)

जार-हस्ताक्षरित सत्यापित नहीं किया जाना चाहिए एपीके एक मानक हस्ताक्षरित जेएआर है, जिसमें META-INF/MANIFEST.MF में सूचीबद्ध प्रविष्टियां होनी चाहिए और जहां सभी प्रविष्टियों को हस्ताक्षरकर्ताओं के एक ही सेट द्वारा हस्ताक्षरित किया जाना चाहिए।

  1. प्रत्येक हस्ताक्षरकर्ता एक META-INF/<signer>.SF और META-INF/<signer>.(RSA|DSA|EC) JAR प्रविष्टि का प्रतिनिधित्व करती है: इसकी अखंडता के रूप में निम्नानुसार सत्यापित है।
  2. <signer>.(RSA|DSA|EC)PKCS #7 CMS ContentInfo हस्ताक्षरडेटा संरचना के साथ है जिसका हस्ताक्षर <signer>.SF फ़ाइल पर सत्यापित है।
  3. <signer>.SF फ़ाइल में META-INF/MANIFEST.MF का एक पूर्ण-फ़ाइल पाचन है और META-INF/MANIFEST.MF के प्रत्येक अनुभाग की पाचन है। MANIFEST.MF की संपूर्ण-फ़ाइल पाचन सत्यापित है। यदि यह विफल रहता है, तो प्रत्येक MANIFEST.MF अनुभाग की पाचन इसके बजाय सत्यापित की जाती है।
  4. META-INF/MANIFEST.MF प्रत्येक ईमानदारी से संरक्षित जेएआर प्रविष्टि के लिए, एक संगत नामित खंड है जिसमें प्रविष्टि की असम्पीडित सामग्री का पाचन होता है। ये सभी पाचन सत्यापित हैं।
  5. एपीके सत्यापन विफल रहता है यदि एपीके में जेएआर प्रविष्टियां हैं जो MANIFEST.MF में सूचीबद्ध नहीं हैं और वे जेएआर हस्ताक्षर का हिस्सा नहीं हैं। सुरक्षा श्रृंखला इस प्रकार <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MF → प्रत्येक अखंडता-संरक्षित जेएआर प्रविष्टि की सामग्री है।
19

क्या मुझे प्ले स्टोर रिलीज के लिए एपीके पर हस्ताक्षर करने के लिए (या दोनों) का उपयोग करना चाहिए? एक उत्तर हाँ है।

अनुसार https://source.android.com/security/apksigning/v2.html#verification :

एंड्रॉयड 7.0 में, आपके पास ऐसे APK APK हस्ताक्षर योजना वी 2 (v2 योजना) या जार पर हस्ताक्षर (v1 योजना) के अनुसार सत्यापित किया जा सकता। पुराने प्लेटफ़ॉर्म v2 हस्ताक्षरों को अनदेखा करते हैं और केवल v1 हस्ताक्षर सत्यापित करते हैं।

मैं जाँच V2 (पूर्ण APK हस्ताक्षर) विकल्प के साथ निर्माण उत्पन्न करने की कोशिश। फिर जब मैंने 7.0 डिवाइस में रिलीज़ बिल्ड स्थापित करने का प्रयास किया और मैं डिवाइस में बिल्ड इंस्टॉल करने में असमर्थ हूं।

इसके बाद मैंने दोनों संस्करण चेकबॉक्स की जांच करके और रिलीज बिल्ड उत्पन्न करके निर्माण करने की कोशिश की। फिर निर्माण स्थापित करने में सक्षम।

1

इस लिंक के अनुसार: signature help

APK हस्ताक्षर योजना v2 प्रदान करता है:

  1. तेज़ एप्लिकेशन अनधिकृत परिवर्तन के खिलाफ
  2. अधिक सुरक्षा APK फ़ाइलों को बार स्थापित करें।

एंड्रॉयड 7.0 का परिचय APK हस्ताक्षर योजना वी 2, एक नया एप्लिकेशन-हस्ताक्षर करने योजना तेजी से एप्लिकेशन APK फ़ाइलों को अनधिकृत परिवर्तन के खिलाफ बार और अधिक सुरक्षा स्थापित प्रदान करता है कि। डिफ़ॉल्ट रूप से, एंड्रॉइड स्टूडियो 2.2 और ग्रैडल 2.2 के लिए एंड्रॉइड प्लगइन दोनों एपीके हस्ताक्षर योजना v2 और पारंपरिक हस्ताक्षर योजना, जो JAR हस्ताक्षर का उपयोग करता है, का उपयोग करके अपने ऐप पर हस्ताक्षर करें।

यह है सिफारिश APK हस्ताक्षर योजना v2 उपयोग करने के लिए लेकिन अनिवार्य नहीं है।

हालांकि हम आपके ऐप पर एपीके हस्ताक्षर योजना v2 लागू करने की सलाह देते हैं, यह नई योजना अनिवार्य नहीं है। यदि आपका ऐप एपीके हस्ताक्षर योजना v2 का उपयोग करते समय ठीक से नहीं बनाता है, तो आप नई योजना को अक्षम कर सकते हैं।

+0

हाय @ शिरिश, क्या हम ग्रहण से v2 बना सकते हैं? –

संबंधित मुद्दे