2011-09-13 7 views
8

मैंने कुंजीपैन निर्दिष्ट करने के लिए OTHER_CODE_SIGN_FLAGS का उपयोग करने की संभावना के बारे में अभी सीखा है जिसमें ऐप बनाने और हस्ताक्षर करने के लिए आवश्यक प्रमाणपत्र शामिल है। लेकिन दुर्भाग्य से मैं इसे काम नहीं कर सकता।OTHER_CODE_SIGN_FLAGS कीचेन ध्वज अनदेखा किया गया?

मेरे स्क्रिप्ट इस तरह दिखता है:

#!/bin/bash 
TARGET="MyProject" 
CONFIGURATION="Release" 
SDK="iphoneos" 
IDENTITY="iPhone Developer: John Doe (XX22RR22O)" 
KEYCHAIN="/Users/username/Library/Keychains/someKeyChain.keychain" 
PASSWORD="" 

security unlock-keychain -p ${PASSWORD} ${KEYCHAIN} 
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk $SDK CODE_SIGN_IDENTITY="${IDENTITY}" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}" 

लेकिन वह विफल रहता है:

Check dependencies 
[BEROR]Code Sign error: The identity 'iPhone Developer: John Doe (XX22RR22O)' doesn't match any valid certificate/private key pair in the default keychain 

लेकिन अगर मैं कीचेन करने के लिए स्विच पहले यह काम करता है लेकिन यह है कि जहाँ एक से अधिक निर्माण सर्वर पर useable नहीं है निर्माण एक साथ हो सकता है:

#!/bin/bash 
TARGET="MyProject" 
CONFIGURATION="Release" 
SDK="iphoneos" 
IDENTITY="iPhone Developer: John Doe (XX22RR22O)" 
KEYCHAIN="/Users/username/Library/Keychains/someKeyChain.keychain" 
PASSWORD="" 

security unlock-keychain -p ${PASSWORD} ${KEYCHAIN} 
security default-keychain -s ${KEYCHAIN} 
xcodebuild -target "${TARGET}" -configuration ${CONFIGURATION} -sdk $SDK CODE_SIGN_IDENTITY="${IDENTITY}" OTHER_CODE_SIGN_FLAGS="--keychain ${KEYCHAIN}" 

आशा है कि आपकी मदद कर सकते हैं-मोर्टन

उत्तर

3

उत्तर अपग्रेड करना है: Check dependencies बिल्ड चरण के दौरान OTHER_CODE_SIGN_FLAGS ध्वज का सम्मान करता है।

+0

देरी के लिए धन्यवाद और खेद है :) – mbogh

1

आईओएस परियोजनाओं के लिए सीआई स्थापित करने की कोशिश करते समय मैं एक ही समस्या में भाग गया। मैं एक कीचेन विकल्प पास करने का समर्थन करने के लिए PackageApplication पर्ल स्क्रिप्ट को अपडेट करना समाप्त कर दिया। स्थान:

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication 

मैं अभी भी इतना है कि मैं GitHub करने के लिए अपने अद्यतन स्क्रिप्ट प्रकाशित कर सकते हैं एप्पल से कुछ लाइसेंस स्पष्टीकरण के लिए प्रतीक्षा कर रहा हूँ।

+0

दिलचस्प लगता है, कृपया मुझे और जानें जब आप और जानें। – mbogh

+0

क्या आप कभी इसे प्रकाशित करने में सक्षम थे? – atreat

0

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

अपने समय बर्बाद न करें, बस ऐप्पल को कॉल करें और उन्हें अपने प्रमाणपत्रों का नाम बदलने के लिए कहें (वे वास्तव में आपकी कंपनी का नाम बदलेंगे --- प्रत्यय को जोड़कर --- और आपको बस अपने प्रमाणपत्रों को पुन: उत्पन्न करना होगा और अपडेट करना होगा आपकी प्रोफाइल)।

3

मुझे पता चला कि अगर मैंने खोज सूची में कीचेन नहीं जोड़ा है, तो xcodebuild OTHER_CODE_SIGN_FLAG --keychain सेटिंग का सम्मान नहीं करेगा। मैं इस कोड को जोड़ना था:

// Early in the script 
ORIGINAL_KEYCHAINS=`security list-keychains -d user` 

// After I create my keychain, add it to the list 
security list-keychains -d user -s ${ORIGINAL_KEYCHAINS} "${KEYCHAIN_NAME}" 

// On cleanup 
security list-keychains -d user -s ${ORIGINAL_KEYCHAINS} 

जरूरत नहीं कहने के लिए, मैं घंटे इस पता लगाना खो दिया है।

सहायता के अलावा, सुनिश्चित करें कि कीचेन आपके निर्माण की लंबाई के लिए खुला रहता है। advised here:

security -v set-keychain-settings -lut 7200 ${KEYCHAIN_NAME} 
+0

यह बहुत उपयोगी है, लेकिन मैंने पाया कि 'ORIGINAL_KEYCHAINS' में उपयोगकर्ता कीचेन की सूची में प्रत्येक के लिए apostrophes शामिल है; क्लीनअप को निष्पक्ष रूप से काम करते समय कोड के माध्यम से उस चर को 'CLEAN_KEYCHAINS = "$ {ORIGINAL_KEYCHAINS // \"} "' (यह सभी एस्ट्रोफ़ेस को प्रतिस्थापित करता है) के माध्यम से चला रहा है। – Luke