2010-11-22 6 views
24

एक प्रयोग के रूप में, मैं एक मनमाना APK, कि NDK के माध्यम से बनाया गया है पर हस्ताक्षर करने के अपने कस्टम एंड्रॉयड प्लेटफॉर्म का निर्माण के मंच कुंजी का उपयोग करना चाहते हैं। ऐसा करने की प्रक्रिया क्या है?एंड्रॉइड: मंच स्रोत बनाने के बाद, प्लेटफॉर्म कुंजी के साथ मनमानी एपीके पर हस्ताक्षर कैसे करें?

+0

आप भी apk में META-INF फ़ोल्डर हटाना चाहिए = ज़िप -d my_application.apk META-INF/\ * – kreker

उत्तर

44

आप अपने मंच कुंजी/प्रमाणपत्र जोड़ी (.pk8 + x509.pem) है। जो लुगदी एसडीके में निर्माण/लक्ष्य/उत्पाद/सुरक्षा के तहत पाया जा सकता है।

आप SignApk.jar कमांड लाइन से

जावा का उपयोग कर सकते जार SignApk.jar platform.x509.pem platform.pk8 Application.apk Application_signed.apk

या स्वचालन को आसान बनाने के लिए, आप keytool-importkeypair के साथ अपनी जावा कीस्टोर फ़ाइल में कुंजी/प्रमाणपत्र जोड़ी आयात कर सकते हैं, और हस्ताक्षर के लिए चींटी मेकफ़ाइल या ग्रहण का उपयोग कर सकते हैं।

Keytool-importkeypair -k ~/.android/debug.keystore -p एंड्रॉयड -pk8 platform.pk8 -cert platform.x509.pem -alias मंच

15

signapk.jar (सभी लोअरकेस) aprock' answer में उल्लिखित फ़ाइल prebuilts/sdk/tools/lib/signapk.jar (या out/host/linux-x86/framework/signapk.jar) पर पाई जा सकती है।

नीचे मैंने ग्रहण और ant release द्वारा प्रयोग किया जाता कीस्ट्रोक का प्रबंधन करने का वर्णन करेंगे।


निम्न आदेश कुंजी फ़ाइल platform.pk8 और X509 प्रमाणपत्र platform.x509.pem लेता है और tmp.p12 में महत्वपूर्ण सामग्री decrypted आउटपुट। नाम platformkey~/.android/debug.keystore जो पासवर्ड android साथ लॉक हो गया है पर कीस्ट्रोक का उपयोग

 
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 | \ 
    openssl pkcs12 -export -in platform.x509.pem -inkey /dev/stdin \ 
    -name platformkey -password pass: -out tmp.p12 

ग्रहण और ant debug किया जाता है। (यदि आप चाहते हैं, तो आप एक अन्य कीस्टोर फ़ाइल भी निर्दिष्ट कर सकते हैं, उदाहरण के लिए ~/.android/mykeys.keystore।) अगला कमांड कुंजी सामग्री में tmp.p12 से कुंजी सामग्री संग्रहीत करता है (कुंजी के लिए पासवर्ड के बिना, यदि आप एक चाहते हैं, तो नीचे -srcstorepass '' संपादित करें):

 
keytool -importkeystore -deststorepass android -srckeystore tmp.p12 \ 
    -srcstoretype PKCS12 -srcstorepass '' -destkeystore ~/.android/debug.keystore 

इस बिंदु पर, आप tmp.p12 फ़ाइल क्योंकि यह अब जरूरत है हटा सकते हैं।

आदेश क्या अपना कुंजी संग्रह में है, तो आप अगले keytool आदेश (उत्पादन यह उसके बाद लाइन पर दिखाया गया है) चला सकते हैं की जाँच करने के लिए:

 
$ keytool -list -keystore ~/.android/debug.keystore -storepass android 
... 
platformkey, Nov 23, 2013, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 12:34:56:(stripped):AB:CD:EF 

आप अब कुंजी की आवश्यकता है, यह हो सकता है

:

 
keytool -delete -keystore ~/.android/debug.keystore -storepass android -alias platformkey 

अपने local.properties फ़ाइल में डाल (यदि आप key.*.password विकल्पों को छोड़ देते हैं, तो आप इसे हर बार जब आप पर हस्ताक्षर APK दर्ज करनी): के साथ हटा दिया

key.store=${user.home}/.android/debug.keystore 
key.alias=platformkey 
key.store.password=android 
key.alias.password= 

अब आप एक कुंजी संग्रह में संग्रहीत मंच कुंजी का उपयोग कर अपने APK को हस्ताक्षरित करने के लिए ant release चला सकते हैं।

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

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