2011-01-03 15 views
27

मैं जब ग्रहण में हस्ताक्षरित APK निर्यात करने के लिएके दौरान त्रुटि चल zipalign

त्रुटि की कोशिश करते समय zipalign चल रहा यह त्रुटि आई: ज़िप संग्रह के रूप में खोलने में असमर्थ

मैं मदद के समाप्त हो गया है> के लिए जाँच करें यह सुनिश्चित करने के लिए अपडेट नवीनतम अपडेट स्थापित है और एसडीके टूल्स भी अद्यतित हैं।

+1

क्या आप http://d.android.com/guide/publishing/app-signing.html#releasemode में चरणों को चला सकते हैं और पहले आदेश का आउटपुट दे सकते हैं जो त्रुटि देता है? – sargas

उत्तर

3

मैंने तैनाती निर्देशिका में एपीके फ़ाइल हटा दी और निर्यात ठीक काम किया।

61

मुझे एक ही त्रुटि संदेश मिल रहा था। जब तक मुझे पता चला कि मेरा गंतव्य पथ अमान्य था तब तक मुझे पागल कर दिया।

zipalign आपको लगता है कि त्रुटि भले ही apk पूरी तरह से वैध है दे देंगे, लेकिन

  • apk को पथ अमान्य है
  • गंतव्य अमान्य है या मौजूद नहीं है
  • अनुमतियाँ हैं अमान्य (एपीके अन्य प्रोग्राम द्वारा लॉक किया गया है)
+3

ग्रेट उत्तर। यह मेरी समस्या के मामले में था, विशेष रूप से ऐसा इसलिए था क्योंकि गंतव्य पथ मौजूद नहीं था। तो, नोटिस: zipalign आपके लिए निर्देशिका नहीं बनाएगा। – ubzack

+3

यह त्रुटि तब भी आती है जब पहला पथ अमान्य है। –

+1

निर्देशिका पर खराब अनुमतियां भी इसका कारण बन सकती हैं। –

1

मुझे यह त्रुटि मिली क्योंकि मेरे पास लक्ष्य निर्देशिका में कोई लेखन पहुंच नहीं थी। अनुमति बदलकर तदनुसार समस्या का समाधान किया।

+0

ls /var/lib/jenkins/workspace/PP_androidBuild/PatientPortal/platforms/android/build/outputs/apk/android-debug.apk -lthr -rw-r-- आर-- 1 जेनकिन्स जेनकींस 5.9 एम सितंबर 8 13:10 /var/lib/jenkins/workspace/PP_androidBuild/PatientPortal/platforms/android/build/outputs/apk/android-debug.apk –

0

कभी-कभी गंतव्य फ़ाइल पथ में/के बजाय एक सरल \ इसके कारण हो सकता है। अपनी मल्टीप्लाफार्म चींटी फाइलों को दो बार जांचें!

6

मुझे यह वही समस्या थी और हाँ, ऐसा इसलिए था क्योंकि उपकरण पथ को पहचान नहीं सका। मैं गलत स्लैश का उपयोग कर रहा था क्योंकि मुझे डेवलपर ब्लॉग से बुरी सलाह मिली थी।

नमूना लाइन आदेश अगर फाइल "origin.apk" एक फ़ोल्डर सी निर्देशिका में "भंडारण" कहा जाता है:

zipalign -f -v 4 “c:\storage\origin.apk” “c:\storage\done.apk” 

आपके द्वारा दर्ज की कुंजी ... एक बहुत ऊपर स्लैश का उपयोग सुनिश्चित करें मैंने "उदाहरण" में से एक को शिफ्ट कुंजी द्वारा उपयोग किया है और यह काम नहीं करेगा। यह "origin.apk" नामक एपीके लेगा और इसे ज़िप्लाइन करेगा और फिर उसे "done.apk" फ़ाइल के समान निर्देशिका में सहेज देगा।

शायद यह Vista पर है, मुझे नहीं पता। मैं विंडोज विस्टा 32-बिट का उपयोग कर रहा हूँ।

+0

तो विंडोज़ बैकस्लैश का उपयोग करें :), धन्यवाद, यह मेरे लिए किया था। – Tycho

0

यदि गंतव्य फ़ाइल पहले से मौजूद है और इसे किसी अन्य प्रक्रिया द्वारा खोला गया है, तो आपको यह त्रुटि दिखाई देगी।

हल करने की विधि: गंतव्य फ़ाइल का नाम बदलें, या उस एप्लिकेशन को बंद करें जो पहले से ही फ़ाइल खोलता है।

-2

मैक

लिए

क्योंकि एन्कोडिंग के परिणाम आप इस करना चाहिए से मेल नहीं खाता:

  1. खुला eclipse.ini
  2. जोड़ने -Dfile.encoding=utf-8
+0

आप कोशिश करते हैं? मैंने इस विधि का सफलतापूर्वक – Mosquito

0

स्थान पर उपलब्ध की जाँच करें गंतव्य डिस्कमुझे एक ही त्रुटि मिली क्योंकि मेरी डिस्क पूरी थी :-)

0

मेरे मामले में समस्या utf-8 नाम फ़ोल्डर थी। मैंने इसे अंग्रेजी में बदल दिया और काम किया। मैं विंडोज 8 एक्स 64 एंटरप्राइज़ संस्करण का उपयोग कर रहा हूँ।

0

यह समस्या मेरे लिए आई जब मेरे पास विंडोज एक्सप्लोरर में मेरा प्रोजेक्ट bin फ़ोल्डर खुल गया।

मैंने अपनी पुरानी एपीके फ़ाइल को हटाने की कोशिश की (जो Export उपकरण असफल रूप से ओवरराइट करने का प्रयास कर रहा था), लेकिन मैं ऐसा नहीं कर सका क्योंकि मेरे पास आवश्यक अनुमति नहीं थी या क्योंकि किसी अन्य प्रक्रिया पर लॉक था फ़ाइल।

समाधान मेरे कंप्यूटर को पुनरारंभ करना था जो एपीके फ़ाइल पर लॉक जारी करता था। ग्रहण Export उपकरण फिर ठीक काम किया।

अद्यतन विंडोज एक्सप्लोरर में या कमांड विंडो में पुरानी एपीके फ़ाइल को हटा नहीं सका (यहां तक ​​कि जब मैंने इसे व्यवस्थापक अधिकारों के साथ खोला), लेकिन मैं इसे FileZilla एफ़टीपी क्लाइंट एप्लिकेशन में देखकर एपीके हटा सकता था। जाहिर है, यह कंप्यूटर को पुनरारंभ करने से कहीं अधिक सुविधाजनक है।

0

zipalign उपकरण स्रोत फ़ाइल के लिए उपयोग कर सकते हैं नहीं है, तो आप पथ, फ़ाइल नाम, विस्तार, अनुमतियों की पुष्टि करनी चाहिए ...

3

मैं अहस्ताक्षरित APK फ़ाइल करने के लिए पूर्ण पथ प्रदान करना पड़ा: प्लेटफार्मों /android/build/outputs/apk/android-release-output.apk

2

मेरे मामले में, मैंने निर्देशिका से कमांड चलाया जहां हस्ताक्षरित एपीके था और यह पूरी तरह से भाग गया।

cd /platforms/android/build/outputs/apk 
zipalign -v 4 android-release-unsigned.apk signed.apk 

इस तरह, मुझे निर्देशिका निर्दिष्ट करने की चिंता करने की आवश्यकता नहीं थी।

ps: मैंने यह उबंटू पर किया था।

+0

$ zipalign zipalign: कमांड नहीं मिला जेनकिंस @ आईपी-172-31-22-20: ~/वर्कस्पेस/PP_androidBuild/PatientPortal $ sudo apt-get zipalign इंस्टॉल करें पैकेज सूची पढ़ना ... हो गया बिल्डिंग निर्भरता पेड़ राज्य की जानकारी पढ़ना ... हो गया ई: पैकेज zipalign –

+0

स्थापित करने में असमर्थ Zipalign अब त्रुटि हो रही है: जेनकींस @ आईपी-172-31-22-20: ~/वर्कस्पेस/PP_androidBuild/PatientPortal $/opt/एंड्रॉइड-एसडीके-लिनक्स/बिल्ड-टूल्स/23.0.1/zipalign -f -p 4 /var/lib/jenkins/workspace/PP_androidBuild/PatientPortal/platforms/android/build/outputs/apk/android-debug.apk ज़िप संरेखण उपयोगिता कॉपीराइट (सी) 200 9 एंड्रॉइड ओपन सोर्स प्रोजेक्ट उपयोग: zipalign [-f] [-p] [-v] [-z] infile.zip outfile.zip zipalign -c [-v] infile.zip –

2

यदि आपका पूर्व-संरेखण एपीके 2 जीबी से बड़ा है, तो यह भी इस समस्या का कारण बन जाएगा। विंडोज 10 मशीन पर बिल्ड-टूल्स 23.0.1 के साथ परीक्षण किया गया।

+0

मुझे यह समस्या मिल रही है, क्या आपने कभी कामकाज मिलते हैं? धन्यवाद – Beloudest

+0

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

+0

उत्तर के लिए धन्यवाद, एंड्रॉइड एपीके के लिए विस्तार फ़ाइल आकार के कारण, जो 2 जीबी है। मुख्य के लिए 2 जीबी और पैच के लिए 2 जीबी। यह मेरे और मेरे क्लाइंट के लिए अफ्रीका के रेगिस्तान में उपयोगकर्ताओं के लिए एक आसान स्थापित फ़ाइल बनाने की कोशिश कर रहा है। :( – Beloudest

0

मेरी समाधान पर जोड़ना:

मेरे समस्या यह है कि मेरी संपत्ति फ़ोल्डर बहुत बड़ा था, और किसी भी तरह ज़िप करने के साथ खिलवाड़ किया गया है चाहिए था। मुझे संपत्ति फ़ोल्डर में फ़ाइलों को निकालना पड़ा (या उन्हें _pre_production में जोड़ें)।

-1

मेरे मामले में, लिनक्स (मिंट) पर, मुझे मैन्युअल रूप से ज़िप्पाइन की निष्पादन अनुमति सेट करनी पड़ी और फिर यह एक आकर्षण की तरह काम करता था।

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