Xcode कमांड / usr / bin / codeign बाहर निकलने के कोड के साथ विफल रहा है


105

मैं डिवाइस पर एक ऐप का परीक्षण करने के लिए अपने Xcode में नई प्रोविजनिंग प्रोफाइल जोड़ने की कोशिश कर रहा हूं। यहाँ मेरे द्वारा अनुसरण किए गए चरण हैं:

  1. सभी प्रमाणपत्र और प्रोविज़निंग प्रोफाइल हटा दिए गए

  2. आईओएस देव प्रमाणपत्र बनाएं / जोड़ें

  3. मेरा आईओएस डिवाइस ऑनलाइन जोड़ें

  4. आईओएस प्रोविजनिंग प्रोफाइल बनाएं

  5. IOS प्रोविजनिंग प्रोफाइल जोड़ें

  6. स्वच्छ ऐप

  7. फिर रन एप का निर्माण करें

  8. बनाएँ सेटिंग्स में कोड प्रोविजनिंग एन डी प्रोविजनिंग प्रोफाइल सेट करें

  9. Googling के बहुत सारे> कोई सफलता नहीं

यहाँ मुझे त्रुटि मिली है:

CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app:     errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

1
त्रुटि प्रोविजनिंग प्रोफाइल सेटअप और प्रमाणपत्रों और बंडल आईडी में एक बेमेल से आती है। सुनिश्चित करें कि आपका PP, बंडल आईडी और प्रमाणपत्र सही ढंग से सेटअप हैं और itunes कनेक्ट और ऐप में सही तरीके से असाइन किए गए हैं।
एलेक्स पेलेटियर

1
मुझे इस समस्या का सामना करना पड़ा जो मेरे द्वारा बनाए गए फ्रेमवर्क के कोड साइनिंग के दौरान Xcode 11.2.1 से 11.3 तक जा रहा था। कोई प्रोविजनिंग प्रोफाइल शामिल नहीं थी। मोहित मन्हास के जवाब ने इसे साफ कर दिया।
डैनियल झांग

ऐसा तब होता है जब आप SSH का उपयोग कर रहे होते हैं और Codeign को कीचेन में निजी कुंजी तक पहुंच की अनुमति नहीं होती है। यह जांचने के लिए, किचेन में कुंजी ढूंढें, राइट क्लिक करें और "गेट इन्फो" चुनें, "एक्सेस कंट्रोल" पर जाएं और देखें कि क्या 'कोडसाइन' ऐप "हमेशा एक्सेस की अनुमति दें" की सूची में है। इस टिप्पणी को देखें github.com/electron-userland/electron-builder/issues/… मैंने जो किया उसने GUI से एक बार स्क्रिप्ट्स को चलाया और कुंजी एक्सेस के लिए "हमेशा अनुमति दें" पर क्लिक किया, फिर यह काम करना शुरू कर दिया।
ArticIceJuice

जवाबों:


240

किचेन एक्सेस खोलें , फिर फ़ाइल मेनू में सभी कीचेन लॉक चुनें ।

फिर Xcode पर वापस जाएं और साफ और पुनर्निर्माण करें। यह चाबी का गुच्छा अनलॉक करने के लिए आपको फिर से आपके पासवर्ड के लिए संकेत देगा।

इसके बाद, यह मानते हुए कि आपके पास कोई अन्य संकलन मुद्दे नहीं हैं, यह सफल होगा!


7
अविश्वसनीय है कि यह मूर्खतापूर्ण ताला और अनलॉक मदद करता है! धन्यवाद
जोसिप बी

8
यह स्वीकृत उत्तर होना चाहिए। रिबूट की तुलना में बहुत अधिक समझदार!
योनिक्स

3
मेरे लिए भी काम किया। एंड्रॉइड 30 सेकंड के लिए एक एपीकेटी बनाएं, आईओएस के लिए एक ऐप बनाएं .. 2hs।
गाबे

1
गंभीरता से WTF ?! धन्यवाद!
पीटर एन लुईस

1
@FredericP मेरे लिए मैंने हाल ही में अपना पासवर्ड बदला था। इसलिए अंतिम बार जब चाबी का गुच्छा xcode द्वारा अनलॉक किया गया था और पासवर्ड ऐसा करने के लिए उपयोग किया जाता है के बीच कुछ परस्पर क्रिया थी।
sherrellbc

77

ऐसा लगता है कि कोड हस्ताक्षर तंत्र में एक बग है, अपने मैक को पुनरारंभ करने से समस्या को हल करना चाहिए


अलग मामला, लेकिन समान त्रुटि संदेश - पुनरारंभ ने काम किया।
मिकस

लगभग चार साल बाद, और यह अभी भी काम करता है! मैं स्वर्ण नियम भूल गया - "यदि संदेह में है, तो रिबूट करें!"
एलन

2
यदि आप एक कम विनाशकारी समाधान के लिए इंतजार कर रहे हैं, तो मोहित मन्हास का जवाब नीचे देखें
yonix

मेरी मदद नहीं की
अनूप वैद्य

70

यह तब होता है जब लॉगिन चाबी का गुच्छा बंद होता है। लॉगिन चाबी का गुच्छा अनलॉक करने के लिए, चलाएं:

security unlock-keychain login.keychain

यदि आपका चाबी का गुच्छा पासवर्ड से सुरक्षित है, तो -pविकल्प का उपयोग करके पासवर्ड निर्दिष्ट करें ।

फिर बिल्ड या कोड-साइनिंग ऑपरेशन को फिर से आज़माएँ। प्रश्न में त्रुटि कोड को Apple के डॉक्स में आंतरिक त्रुटि के रूप में वर्णित किया गया है , इसलिए यह पूरी तरह से संभव है कि यह अन्य मामलों में भी होता है।


1
दुर्भाग्य से यह समाधान पूरी तरह से परिपत्र लगता है: उपरोक्त कमांड को चलाने के लिए आपको पासवर्ड दर्ज करने की आवश्यकता होती है, जो स्पष्ट रूप से एक गैर-संवादात्मक सत्र में एक नो-गो है (जैसे कि जेनकींस जैसे सीआई एजेंट के माध्यम से इसे निष्पादित करते हुए)।
कोनराड रुडोल्फ

यह एक अच्छा बिंदु है - जैसा कि आप कहते हैं, यह गैर-संवादात्मक सत्र जैसे कि सीआई बॉट के लिए उपयुक्त नहीं है। जब कमांड-लाइन सत्र (जैसे ssh के माध्यम से) में रिमोट बनाता है तो यह उपयोगी होता है।
cbracken

3
हमें जेनकिन्स पर एक समान समस्या थी, और उपरोक्त कमांड में जो उल्लेख किया गया है उसके अलावा हमें कमांड के तर्क के रूप में पासवर्ड पास करना था, इसलिए हमने "सुरक्षा अनलॉक-किचेन-पी $ कीचैनपासवर्ड <लॉगिन-कीचिन>" किया। जहाँ आप आसानी से जेनकींस पर कीचेनपासवर्ड को सुरक्षित रूप से स्टोर कर सकते हैं।
मोहित टेटर

1
मैं आपको इस पोस्ट के लिए पर्याप्त धन्यवाद नहीं दे सकता। मैंने कुछ दिन बिताने की कोशिश की कि codesignअसफल क्यों हो रहा था और यह जादू की आज्ञा है जिसने मुझे बचाया है !!!
दिमू 4

32

पर एक ही मुद्दा था High Sierra/ Xcode 9.4.1, पर हस्ताक्षर करने के सभी प्रयास समाप्त हो गएerrSecInternalComponent

    • किचेन एक्सेस पर जाएं
    • लॉगिन कीचेन पर जाएं
    • "मेरा प्रमाण पत्र" श्रेणी चुनें
    • जिस प्रमाणपत्र के साथ आप हस्ताक्षर कर रहे हैं, उसे ढूंढें और कुंजी को देखने के लिए उसका विस्तार करें।
    • कुंजी को डबल क्लिक करें
    • "एक्सेस कंट्रोल" टैब पर जाएं।
    • "इस आइटम को एक्सेस करने के लिए सभी एप्लिकेशन को अनुमति दें" के लिए कुंजी एक्सेस कंट्रोल अपडेट करें

वैकल्पिक रूप से:

मैक टर्मिनल पर कोडसाइन कमांड चलाएं और "हमेशा अनुमति दें" / usr / बिन / कोडसाइन एक्सेस को कुंजी के लिए

  1. यदि ssh / CI से साइन इन करने की कोशिश की जा रही है, तो आपको चलाने की आवश्यकता है

    security unlock-keychain login.keychain

    एप्लिकेशन बंडल पर हस्ताक्षर करने का प्रयास करने से पहले


क्या आप "सभी एप्लिकेशन को इस आइटम को एक्सेस करने की अनुमति दें" के लिए "मुख्य कुंजी नियंत्रण अपडेट" पर विस्तृत कर सकते हैं? मुझे नहीं पता कि इसका क्या मतलब है।
जॉन मैकक्लब

2
@JonMcClung ओपन कीचेन एक्सेस, लॉगिन कीचेन पर जाएं - मेरे प्रमाण पत्र। उस प्रमाणपत्र को ढूंढें, जिसके साथ आप हस्ताक्षर कर रहे हैं, इसे कुंजी को देखने के लिए विस्तारित करें। कुंजी को डबल क्लिक करें और आपको "एक्सेस कंट्रोल" टैब देखना चाहिए। स्विच करने की अनुमति है
संतुलन

5
security unlock-keychain -p <password> login.keychainसीआई से @KonradRudolph ।
संतुलन

1
यदि आपने एक निजी कुंजी का उपयोग करने के लिए कोडसाइन की अनुमति दी है, तो @KonradRudolph सुरक्षा अनलॉक-किचेन के लिए पासवर्ड प्रदान करना आवश्यक नहीं है। यह एक पासवर्ड के रूप में एक खाली स्ट्रिंग छोड़ने के लिए पर्याप्त है।
कामिल सोज़ोकोव्स्की

1
@KonradRudolph शायद अभी भी आदर्श नहीं है, लेकिन आप उस अनलॉक कमांड को स्थानांतरित कर सकते हैं ~/.bash_profileताकि किचेन SSH क्लाइंट स्टार्टअप पर अनलॉक हो जाए लेकिन आपको इसे अपने CI स्क्रिप्ट से संदर्भ की आवश्यकता नहीं है
sschilli

17

मैं एक ही समस्या से मिला है, मैं अपने macOS को पुनरारंभ करता हूं, और यह काम करता है।

चीन में, हम डेवलपर्स के बीच एक कहावत है:

छोटी समस्याएं, बस पुनः आरंभ करें। बड़ी समस्याओं के बाद, पुनः स्थापित करना चाहिए।

कभी-कभी, उपरोक्त कहावत आपकी बहुत मदद करेगी!


7
हम अमेरिका में कह रहे हैं - 'नेवर रिबूट ओल्ड हार्डवेयर'
ब्रंट

@Brant तुम यह क्यों कह रहे हो? यह दिलचस्प है।
ifeegoo

बस मजाक कर रहा था - लेकिन हमें एक समान समस्या थी और अंत में एक पुराने सर्वर को रिबूट करने का सहारा लिया।
ब्रांट

1
@ifeegoo पुराने सर्वरों को वापस बूट करने में समस्याएँ हो सकती हैं (हो सकता है कि ओएस ने खुद को अपडेट किया हो? हो सकता है कि किसी ने बूटअप स्क्रिप्ट को तोड़ा हो?) या कुछ मैनुअल स्टार्टअप प्रक्रिया की आवश्यकता है जो उपलब्ध नहीं है। आप इसे आज़माने से पहले नहीं जान सकते। शायद बायोस का रोम-रोम खराब हो गया था। यह उन चीजों में से एक है, जिन्हें ठीक से रखे गए वातावरण में समस्या नहीं होना चाहिए, लेकिन आप वास्तव में कोशिश करने से पहले नहीं जानते हैं और आप कोशिश नहीं करेंगे।
लस्सी किन्नुनेन

1
@LassiKinnunen आप सही हैं, हम Android और iOS के लिए मोबाइल डेवलपर हैं, इसलिए इस तरह की स्थिति सर्वरों की परवाह नहीं करती है। सर्वर वास्तव में खतरनाक हैं, यह स्थितिजन्य नहीं है।
ifeegoo

8

यदि यह किसी और की मदद करता है, तो मुझे एक errSecInternalComponentत्रुटि का सामना करना पड़ा codesignक्योंकि मैं इसे अपने macOS मशीन में ssh सत्र में चला रहा था। MacOS मशीन पर एक टर्मिनल विंडो से एक ही कमांड चलाना स्वयं काम करता है।

संभवत: ऐसा इसलिए है क्योंकि codesignलॉगिन कीचेन से निजी कुंजी तक पहुंच की आवश्यकता है।

एक ही सत्र से रनिंग security unlock-keychain login.keychain(जैसा कि cbracken के जवाब द्वारा समझाया गया है ) को भी काम करना चाहिए।


यह बहुत अजीब है, यहां तक ​​कि चाबी का गुच्छा अनलॉक कमांड चलाना चुपचाप विफल होने लगता है क्योंकि कोडसाइन अभी भी काम नहीं करता है। लेकिन रिमोट डेस्कटॉप (एसएसएच के बजाय) का उपयोग करके समान कमांड चलाना ठीक काम करता है।
मैक्स

2

अगर ssh रन कमांड से साइन करने की कोशिश की जा रही है:

security unlock-keychain login.keychain

एप्लिकेशन बंडल पर हस्ताक्षर करने का प्रयास करने से पहले

या यूआई से

"इस आइटम को एक्सेस करने के लिए सभी एप्लिकेशन को अनुमति दें" के लिए कुंजी एक्सेस कंट्रोल अपडेट करें

Thx to @Equilibrium और @Jon McClung


2

मेरे पास एक ही मुद्दा था पता चला कि समस्या कोड पर हस्ताक्षर करने की है।

Opened the developer account and accepted the updated agreement and it worked.  

यहां छवि विवरण दर्ज करें


2

मैं भागा security unlock-keychain login.keychainऔर मेरा लॉगिन पासवर्ड काम नहीं किया। इसलिए मैंने रिबूट किया, और फिर बस फिर से एक्सकोड चला गया और यह काम किया। रनिंग कमांड भी काम करता है। अजीब मुद्दा।


2

जैसा कि टिप्पणियों में से एक में @Equilibrium द्वारा बताया गया है, यदि आप कमांड लाइन में हैं। जेनकिंस (मेरा मामला) की तरह, आपको समाधानों में उल्लिखित सुरक्षा-अनलॉक कमांड के लिए पासवर्ड पारित करने की आवश्यकता हो सकती है ।

इसलिए उपयोग करने के बजाय,

security unlock-keychain login.keychain

उपयोग:

security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>

जहाँ पाथ-टू-लॉगिन किचेन $ HOME / Library / Keychains / login.keychain (मेरा मामला) हो सकता है या बस login.keychain हो सकता है


आपका उत्तर @equilibrium उत्तर पर आधारित है, लेकिन मैं इसे स्वीकार करूंगा। पर बांस सीआई मुझे मदद की कमान सुरक्षा अनलॉक-कीचेन -p {खाता-पासवर्ड} login.keychain
A.Kant

2

जेनकिंस और ssh से इस मुद्दे का सामना करने वाले किसी के लिए:

उच्च संभावना है कि आपने चाबी का गुच्छा में निजी कुंजी तक पहुंच प्रदान नहीं की है, मैंने कोशिश की लेकिन यह सुनिश्चित नहीं किया कि ये सभी काम क्यों नहीं कर रहे हैं:

  1. सुरक्षा आयात .p12 फ़ाइल -A या -T / usr / bin / codeign के साथ
  2. सुरक्षा सेट-की-पार्टीशन-लिस्ट -S ऐप्पल-टूल:, ऐप्पल:, कोडसाइन: -s -k # {पासवर्ड} # {keychainPath}
  3. सभी प्रोविज़निंग प्रोफाइल को [UUID] में बदल दें। मोबाइलप्रोविजन करें और उन्हें '~ / लाइब्रेरी / MobileDevice / प्रोविज़निंग' प्रोफाइल पर जेंकिंस सर्वर पर कॉपी करें
  4. स्वच्छ व्युत्पन्न डेटा और रिबूट जेनकींस सर्वर
  5. सुनिश्चित करें कि डिफ़ॉल्ट चाबी का गुच्छा लॉगिन चाबी का गुच्छा है और इसे अनलॉक किया है।

अंत में इसके द्वारा हल किया गया:

1. ssh [उपयोगकर्ता] @ [jenkinsServerIP] -L 5900: लोकलहोस्ट: 5900, लॉग इन करें सर्वर

2. 'वीएनसी: // लोकलहोस्ट'

यदि आपका जेनकींस सर्वर इसकी अनुमति देता है, तो यह एक दूरस्थ स्क्रीन लॉन्च करेगा ...

फिर निजी कुंजी को / usr / bin / codeign की पहुंच प्रदान करने के लिए keychain.app खोलें

सौभाग्य


1

बस इसे एक बार मैक टर्मिनल का उपयोग करके देखें, लेकिन ssh सत्र से नहीं

security unlock-keychain login.keychain

और चुने गए संवाद में हमेशा अनुमति दें चुनें। और फिर आप दूरस्थ सत्र में xcodebuild कर सकते हैं।


1

चाबी का गुच्छा में कोडिंग सर्टिफिकेट के साथ जुड़ी निजी कुंजी पर राइट क्लिक करना, और उसके बाद of सभी एप्लिकेशन को अनुमति दें ’पर क्लिक करने के बजाय, यह मेरे लिए तुरंत निर्धारित करने के बजाय, क्योंकि ssh के माध्यम से बिल्ड हो रहा था।


0

मुझे करना पड़ा:

1) परियोजना से जुड़े प्रमाण पत्र को हटा दें

2) Xcode पर वापस जाएं और ऐप सर्टिफिकेट को निरस्त करें

3) Xcode को एक नए प्रमाणपत्र की आवश्यकता होती है

4) सभी किचेन को लॉक करें

5) परियोजना को साफ करें

६) पुनर्निर्माण

बस। आशा है कि यह किसी को भी मदद करता है।


0

उपरोक्त तरीके मेरे लिए बेकार हैं।

मैंने इसे फिर से याद किया:

  1. किचेन एक्सेस खोलें।
  2. लॉगइन मेनू पर क्लिक करें।
  3. सभी व्यक्तिगत प्रमाण पत्र निकालें।
  4. प्रोजेक्ट को साफ करें।
  5. पुनर्निर्माण।

बस। आशा है कि यह किसी को भी मदद करता है।

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