2011-08-18 11 views
144

मैं कैसे जांच सकता हूं कि एक एंड्रॉइड एपीके रिलीज के साथ हस्ताक्षरित है और डीबग प्रमाण नहीं है? इस आदेशमैं कैसे सत्यापित करूं कि एक एंड्रॉइड एपीके रिलीज प्रमाणपत्र के साथ हस्ताक्षरित है?

+5

मैंने लिखा [एक स्क्रिप्ट] (https://raw.githubusercontent.com/johnnylambada/robospanner/master/apk/apk-validate) है कि एक कुंजी संग्रह के खिलाफ एक apk मान्य करेगा । – JohnnyLambada

+0

अगर आपको अपना मिल गया है तो जवाब स्वीकार करें। –

+0

@ जॉनी लम्बाडा मैं मैक में अपनी स्क्रिप्ट कैसे चला सकता हूं? –

उत्तर

248

का प्रयोग करें,

$ jarsigner -verify -verbose -certs my_application.apk 

यदि आपको "सीएन = Android डीबग" (जावा के लिए cmd प्रॉम्प्ट में < JDK < बिन पथ जाना), इसका मतलब है .apk उत्पन्न डिबग कुंजी के साथ हस्ताक्षर किए गए थे एंड्रॉइड एसडीके (इसका मतलब है कि यह हस्ताक्षरित है) द्वारा, अन्यथा आपको सीएन के लिए कुछ मिल जाएगा। अधिक जानकारी के लिए देखें: इस आदेश http://developer.android.com/guide/publishing/app-signing.html

+0

मुझे 2 diff apk फ़ाइलों के लिए कमांड निष्पादन के अंत में सत्यापित जार के रूप में संदेश मिला। इसलिए उलझन में आया। लेकिन चूंकि यह 1 एपीके के लिए सीएन = "एंड्रॉइड डीबग" देता है और अन्य एपीके के लिए अलग होता है। जिस पर 1 हस्ताक्षर किया जाता है। धन्यवाद। – iRunner

+0

@iRunner या तो डिबग कुंजी या वास्तविक कुंजी का उपयोग कर किसी डिवाइस पर इंस्टॉल करने से पहले सभी ऐप्स पर हस्ताक्षर करने की आवश्यकता है। – Chloe

+2

यह हस्ताक्षर कैसे सत्यापित करता है? क्या यह सिस्टम के विश्वसनीय सीए का उपयोग करेगा? या यह जार फ़ाइलों की अखंडता की जांच करने के लिए केवल एक उपकरण है? धन्यवाद –

52

उपयोग:

$ jarsigner -verify my_signed.apk 

.apk ठीक प्रकार से हस्ताक्षरित किया जाता है (Jarsigner अपने जावा बिन फ़ोल्डर में गोटो जावा> jdk-> cmd प्रॉम्प्ट में बिन पथ है) , Jarsigner प्रिंट "जार सत्यापित" कंसोल आदेश

+9

यह पर्याप्त नहीं है क्योंकि डीबग और रिलीज एपीके दोनों हस्ताक्षरित हैं, "जार सत्यापित" देंगे। @ एनास के उत्तर के विवरण देखें। – rpattabi

27

उपयोग:

apksigner verify --print-certs application-development-release.apk

यो आप apsigner ../sdk/build-tools/24.0.3/apksigner.bat में पा सकते हैं। केवल निर्माण उपकरण v। 24.0.3 और उच्चतम के लिए।

Google दस्तावेज़ पढ़ें: https://developer.android.com/studio/command-line/apksigner.html

+0

मैं '' में% LOCALAPPDATA% \ एंड्रॉयड \ एसडीके \ निर्माण उपकरण \ 25.0.3 \ '(और हर दूसरे निर्माण उपकरण संस्करण मैं स्थापित किया था) – Jon

+0

जानकारी यह पता लगाने के लिए कैसे apksigner' पाया: http://stackoverflow.com/q/40004884/1747983 – Tilo

+2

ध्यान दें कि बिल्ड-टूल्स के संस्करण '26.0.0' में' apksigner' गुम है। इसे https://issuetracker.google.com/issues/62696222 में ट्रैक किया गया है और अगले संस्करण में तय किया जाना चाहिए। तब तक कार्यवाही '25.0.3' से' apksigner' का उपयोग करना है। – friederbluemle

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