एंड्रॉइड एपीके फ़ाइल पर हस्ताक्षर कैसे करें


111

मैं अपनी एपीके फ़ाइल साइन करने की कोशिश कर रहा हूं। मैं यह पता नहीं कर सकता कि यह कैसे करना है। मैं अच्छी दिशाओं में गहराई से नहीं देख सकता। मेरे पास बहुत कम प्रोग्रामिंग अनुभव है, इसलिए किसी भी मदद की सराहना की जाएगी।



2
आप इस बारे में यहाँ एक महान ट्यूटोरियल पा सकते हैं androidcookers.co.cc/2012/06/...
Bratin

1
मैंने इस संपूर्ण ट्यूटोरियल का उपयोग अपने स्वयं के कीस्टोर को बनाने से लेकर एक हस्ताक्षरित एपीके को निर्यात करने में किया। mahadera.com/export-signed-android-apk-in-eclipse-ide
जेसन तमायो

जवाबों:


84

मैनुअल पर्याप्त स्पष्ट है। कृपया निर्दिष्ट करें कि आपके द्वारा काम करने के बाद आप किस भाग के साथ फंस गए हैं, मैं सुझाव देता हूं:

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

ठीक है, संदर्भ के बिना एक छोटा सा अवलोकन या चारों ओर ग्रहण, इसलिए त्रुटियों के लिए कुछ स्थान छोड़ दें, लेकिन यह इस तरह से काम करता है

  • ग्रहण में अपनी परियोजना खोलें
  • दाएं-माउस दबाएं -> उपकरण (Android उपकरण?) -> निर्यात हस्ताक्षरित एप्लिकेशन (एपीके?)
  • जादूगर के माध्यम से जाओ:
  • एक नया की-स्टोर बनाएं। उस पासवर्ड को याद रखें
  • अपना ऐप साइन करें
  • इसे बचाओ आदि।

इसके अलावा, लिंक से:

ग्रहण एडीटी के साथ संकलित करें और हस्ताक्षर करें

यदि आप ADT प्लगइन के साथ एक्लिप्स का उपयोग कर रहे हैं, तो आप एक हस्ताक्षरित .apk को निर्यात करने के लिए एक्सपोर्ट विजार्ड का उपयोग कर सकते हैं (और यदि आवश्यक हो तो एक नया कीस्टोर भी बना सकते हैं)। निर्यात विज़ार्ड आपके लिए Keytool और Jarsigner के साथ सभी इंटरैक्शन करता है, जो आपको उपरोक्त चर्चा के अनुसार मैन्युअल प्रक्रियाओं को संकलित करने, साइन करने और संरेखित करने के बजाय GUI का उपयोग करके पैकेज पर हस्ताक्षर करने की अनुमति देता है। एक बार जब विज़ार्ड ने आपके पैकेज को संकलित और हस्ताक्षरित किया है, तो यह ज़िप संरेखण के साथ पैकेज संरेखण भी करेगा। क्योंकि निर्यात विज़ार्ड Keytool और Jarsigner दोनों का उपयोग करता है, इसलिए आपको यह सुनिश्चित करना चाहिए कि वे आपके कंप्यूटर पर सुलभ हैं, जैसा कि साइनिंग के लिए बेसिक सेटअप में ऊपर वर्णित है।

ग्रहण में हस्ताक्षरित और संरेखित .apk बनाने के लिए:

  1. पैकेज एक्सप्लोरर में परियोजना का चयन करें और फ़ाइल> निर्यात का चयन करें।
  2. Android फ़ोल्डर खोलें, निर्यात Android एप्लिकेशन का चयन करें, और अगला क्लिक करें।

    निर्यात Android एप्लिकेशन विज़ार्ड अब शुरू होता है, जो आपको अपने आवेदन पर हस्ताक्षर करने की प्रक्रिया के माध्यम से मार्गदर्शन करेगा, जिसमें .apk पर हस्ताक्षर करने के लिए निजी कुंजी का चयन करने के लिए कदम (या एक नई कीस्टॉर और निजी कुंजी बनाना) शामिल हैं।

  3. निर्यात विज़ार्ड को पूरा करें और आपके आवेदन को संकलित, हस्ताक्षरित, संरेखित और वितरण के लिए तैयार किया जाएगा।

मुझे समझ में नहीं आता कि कैसे शुरू किया जाए। मैं ग्रहण संस्करण का उपयोग कर रहा हूं: हेलिओस सर्विस रिलीज 1
क्रिस

2
लेकिन कृपया पूरी बात पढ़ें। ग्रहण के लिए अंत में कुछ सुझाव भी दिए गए हैं
ननन

1
प्रमुख निर्माण में मुझे उपनाम के लिए प्रवेश करने की क्या आवश्यकता है?
च्रिस

9
क्या आपने मैनुअल पढ़ा? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.यह सिर्फ एक उपनाम है। एक नाम, अगर आप मैं "Firstkey" :-) का सुझाव दूंगा :-)
नैन

1
क्षमा करें, मुझे अभी भी समझ में नहीं आया है। मैं इस उपनाम का उपयोग कैसे करूंगा। इसका उद्देश्य क्या है?
user462990

37

यहाँ एक गाइड है कि कैसे मैन्युअल रूप से एक एपीके पर हस्ताक्षर करें। यह नया के बारे में जानकारी शामिल है apk-signerमें शुरू की build-tools 24.0.3 (10/2016)

स्वचालित प्रक्रिया:

इस टूल का उपयोग करें (Google से नए एस्किनगर का उपयोग करता है):

https://github.com/patrickfav/uber-apk-signer

अस्वीकरण: Im डेवलपर :)

मैनुअल प्रक्रिया:

चरण 1: कीस्टोर उत्पन्न करें (केवल एक बार)

आपको एक बार कीस्टोर जेनरेट करने और अपने unsignedएपीके पर हस्ताक्षर करने के लिए इसका उपयोग करने की आवश्यकता है । का प्रयोग करें JDK द्वारा प्रदान में पायाkeytool %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

चरण 2 या 4: Zipalign

zipalign जो कि उदाहरण के लिए एंड्रॉइड एसडीके द्वारा दिया गया एक टूल है, जो%ANDROID_HOME%/sdk/build-tools/24.0.2/ अगर आप प्ले स्टोर पर एपीके को अपलोड करना चाहते हैं तो एक अनिवार्य ऑप्टिमाइज़ेशन कदम है।

zipalign -p 4 my.apk my-aligned.apk

नोट: पुराने का उपयोग करते समय jarsignerआपको हस्ताक्षर करने के बाद ज़िप करने की आवश्यकता होती है । नए का उपयोग करते समय apksignerविधि आप यह कर पहले (भ्रमित, मुझे पता है) पर हस्ताक्षर। Apignigner से पहले zipalign को आमंत्रित करना ठीक काम करता है क्योंकि apignigner एपीके संरेखण और संपीड़न (jarsigner के विपरीत) को संरक्षित करता है

आप के साथ संरेखण को सत्यापित कर सकते हैं

zipalign -c 4 my-aligned.apk

चरण 3: हस्ताक्षर करें और सत्यापित करें

24.0.2 और पुराने उपकरणों का उपयोग करना

का प्रयोग करें jarsignerजो, Keytool की तरह, JDK वितरण के साथ आता है में पाया %JAVA_HOME%/bin/और यह बहुत पसंद का उपयोग करें:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

और के साथ सत्यापित किया जा सकता है

jarsigner -verify -verbose my_application.apk

24.0.3 और नए बिल्ड-टूल्स का उपयोग करना

एंड्रॉइड 7.0 एपीके सिग्नेचर स्कीम v2 पेश करता है, एक नई ऐप-साइनिंग स्कीम जो एपीपी फाइलों में अनधिकृत बदलावों के खिलाफ तेजी से इंस्टॉल किए गए समय और अधिक सुरक्षा प्रदान करती है ( अधिक विवरण के लिए यहां और यहां देखें)। Threfore Google ने अपना खुद का एपीके साइनरapksigner लागू किया, जिसे (duh!) स्क्रिप्ट फ़ाइल में पाया जा सकता है %ANDROID_HOME%/sdk/build-tools/24.0.3/(.jar /libउप-फ़ोल्डर में है)। इसे इस तरह इस्तेमाल करें

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

और के साथ सत्यापित किया जा सकता है

apksigner verify my-app.apk

आधिकारिक दस्तावेज यहां पाया जा सकता है।


10

इंटेलीज आईडीईए या एंड्रॉइड स्टूडियो के उपयोगकर्ताओं के लिए ये चरण बनाते हैं:
* मेनू से Build/Generate signed APK
* आपको कीस्टोर पथ बनाने की आवश्यकता है। संवाद क्लिक से Create new। आप एक jks फ़ाइल बनाएंगे जिसमें आपकी कुंजियाँ शामिल होंगी। फ़ोल्डर का चयन करें, एक पासवर्ड परिभाषित करें। तो आपका keystore ठीक है।
* उपनाम, कुंजी पासवर्ड, अपना नाम आदि का उपयोग करके अपने आवेदन के लिए नई कुंजी बनाएं।
* अगला क्लिक करें।
* डायलॉग में से या तो Proguard का चयन करें या नहीं।

आपकी हस्ताक्षरित एपीके फ़ाइल तैयार है।

मदद फ़ाइल: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html


8

चिंता मत करो ...! इन नीचे दिए गए चरणों का पालन करें और आपको अपनी हस्ताक्षरित .apk फ़ाइल मिल जाएगी। मुझे इस बात की भी चिंता थी, लेकिन ये कदम मुझे हताशा से दूर कर देते हैं। अपने आवेदन पर हस्ताक्षर करने के लिए कदम:

  1. अहस्ताक्षरित पैकेज निर्यात करें:

ग्रहण में परियोजना पर राइट क्लिक करें -> एंड्रॉइड टूल -> निर्यात रहित अनुप्रयोग पैकेज (जैसे यहां हम अपने GoogleDriveApp.apk को डेस्कटॉप पर निर्यात करते हैं)

अपने कीस्टोर और जार्सिग्नर टूल का उपयोग करके एप्लिकेशन पर हस्ताक्षर करें (नीचे दिए चरणों का पालन करें):

ओपन cmd -> निर्देशिका बदलें जहां आपका "jarsigner.exe" मौजूद है (जैसे कि मेरे सिस्टम में यह "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin" पर मौजूद है)

अब cmd में belwo कमांड डालें:

jarsigner -verbose -keystore c: \ users \ android \ debug.keystore c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias

यह आपको अपना पासवर्ड प्रदान करने के लिए कहेगा: केस्टर के लिए पासफ़्रेज़ दर्ज करें: यह आपके एपीके पर हस्ताक्षर करेगा। यह सत्यापित करने के लिए कि हस्ताक्षर सफल है आप चला सकते हैं:

jarsigner -verify c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk

इसे वापस आना चाहिए: जार सत्यापित।

विधि 2

यदि आप ADT के साथ ग्रहण का उपयोग कर रहे हैं, तो यह वितरण के लिए संकलित, हस्ताक्षरित, संरेखित और तैयार करने के लिए सरल है। आपको केवल इस चरणों का पालन करना होगा।

  • फ़ाइल> निर्यात करें।
  • Android एप्लिकेशन निर्यात करें
  • ब्राउज़ करें -> अपनी परियोजना का चयन करें
  • अगला -> अगला

ये चरण आपके प्रोजेक्ट को संकलित, हस्ताक्षरित और ज़िपित करेंगे और अब आप अपनी परियोजना को वितरित करने या Google Play स्टोर पर अपलोड करने के लिए तैयार हैं।


यह वही है जो मुझे चाहिए था, एक नए ऑनलाइन बिल्ड टूल का उपयोग कर रहा था और मुझे अपने पिछले कीस्टोर का उपयोग करना था, न कि उनके नए जेनरेट किए गए। केवल एक चीज जो मुझे याद आ रही थी वह थी APK ALIGNING APK, इसलिए अगर किसी को भी यही समस्या है, तो यहां जाएं stackoverflow.com/a/22682132/826194
लार्जन ऑक्ट

5

एपीके साइनिंग प्रोसेस

एंड्रॉइड एपीके फ़ाइल को मैन्युअल रूप से साइन करने के लिए इन तीन कमांड को चलाएं:

  1. Keystore फ़ाइल जनरेट करें

    keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
  2. अपनी एपीके फ़ाइल का उपयोग करके साइन इन करें jarsigner

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
  3. संरेखित करें APK का उपयोग करके zeepign उपकरण

    zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH

चरण 1


Generate Keystore file

keytool -genkey -v -keystore Your_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000

उदाहरण:

keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000

कीस्टोर पासवर्ड: yourApp @ 123 कुंजी पासवर्ड: yourApp @ 123

सीएमडी ओ / पी

D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
 -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  MySignedApp Sample
What is the name of your organizational unit?
  [Unknown]:  Information Technology
What is the name of your organization?
  [Unknown]:  MySignedApp Demo
What is the name of your City or Locality?
  [Unknown]:  Mumbai
What is the name of your State or Province?
  [Unknown]:  Maharashtra
What is the two-letter country code for this unit?
  [Unknown]:  IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
  [no]:  y

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
        for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
 C=IN
Enter key password for <MySignedApp>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]

D:\ru\SignedBuilds\MySignedApp>

चरण 2


Sign your app with your private keystore using jarsigner

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -Stystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME

उदाहरण

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id

सीएमडी ओ / पी

D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
   adding: META-INF/MANIFEST.MF
   adding: META-INF/---.SF
   adding: META-INF/---.RSA
  signing: AndroidManifest.xml
  ..... 
    signing: classes.dex
  signing: lib/commons-codec-1.6.jar
  signing: lib/armeabi/libkonyjsvm.so
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.

D:\ru\SignedBuilds\MySignedApp>

Verify that your APK is signed

jarsigner -verify -verbose -certs JARSIGNED_APK_FILE_PATH

उदाहरण

jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk

सीएमडी ओ / पी

D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
 s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
 future revocation date.

D:\ru\SignedBuilds\MySignedApp>

चरण 3


अंतिम एपीपी पैकेज को संरेखित करें जिसमें zipalign का उपयोग किया गया है

zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK

उदाहरण

zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

सीएमडी ओ / पी

D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

  4528613 classes.dex (OK - compressed)
 5656594 lib/commons-codec-1.6.jar (OK - compressed)
 5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

Verify that your APK is Aligned successfully

zipalign -c -v 4 your_APK_PATH

उदाहरण

zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

सीएमडी ओ / पी

D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

 4453984 res/drawable/zoomout.png (OK)
 4454772 res/layout/tabview.xml (OK - compressed)
 4455243 res/layout/wheel_item.xml (OK - compressed)
 4455608 resources.arsc (OK)
 4470161 classes.dex (OK - compressed)
 5597923 lib/commons-codec-1.6.jar (OK - compressed)
 5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

ध्यान दें:

सत्यापित कमांड केवल यह जांचने के लिए है कि क्या एपीके का निर्माण किया गया है और सही तरीके से हस्ताक्षरित है!

संदर्भ

मुझे आशा है कि यह एक और सभी की मदद करेगा :)


2

मैं इस समस्या में भाग गया और प्रकट में मिनट एसडीके संस्करण की जांच करके हल किया गया था। इसे 15 (ICS) पर सेट किया गया था, लेकिन मेरा फोन 10 (जिंजरब्रेड) चला रहा था

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.