एक हालिया सबमिशन के बाद मुझे निम्नलिखित त्रुटि मिली है:
अमान्य हस्ताक्षर - नेस्टेड ऐप बंडल (FooBar.app/Contents/Frameworks/GData.framework) हस्ताक्षरित नहीं है, हस्ताक्षर अमान्य है, या यह Apple प्रस्तुत प्रमाण पत्र के साथ हस्ताक्षरित नहीं है। अधिक जानकारी के लिए कोड साइनिंग और एप्लिकेशन सैंडबॉक्सिंग गाइड देखें।
अमान्य हस्ताक्षर - नेस्टेड ऐप बंडल (FooBar.app/Contents/Frameworks/Growl.framework) हस्ताक्षरित नहीं है, हस्ताक्षर अमान्य है, या यह Apple प्रस्तुत प्रमाण पत्र के साथ हस्ताक्षरित नहीं है। अधिक जानकारी के लिए कोड साइनिंग और एप्लिकेशन सैंडबॉक्सिंग गाइड देखें।
अमान्य हस्ताक्षर - नेस्टेड ऐप बंडल लिबर्कल (FooBar.app/Contents/Frameworks/libcurl.framework) पर हस्ताक्षर नहीं किया गया है, हस्ताक्षर अमान्य है, या यह Apple जमा प्रमाण पत्र के साथ हस्ताक्षरित नहीं है। अधिक जानकारी के लिए कोड साइनिंग और एप्लिकेशन सैंडबॉक्सिंग गाइड देखें।
इसलिए मैंने प्रति टेक्नोलाजी 2206 में सभी ढांचे के बंडलों पर हस्ताक्षर किए :
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libcurl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libssh2.1.dylib
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./Growl.framework/Versions/A/Growl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./GData.framework/Versions/A/GData
2206 तकनीक कहते हैं:
साइनिंग फ्रेमवर्क
फ्रेमवर्क बंडलों के रूप में देखकर यह निष्कर्ष निकालना तर्कसंगत होगा कि आप सीधे एक रूपरेखा पर हस्ताक्षर कर सकते हैं। बहरहाल, मामला यह नहीं। फ्रेमवर्क पर हस्ताक्षर करते समय समस्याओं से बचने के लिए सुनिश्चित करें कि आप पूरे ढांचे के विपरीत एक विशिष्ट संस्करण पर हस्ताक्षर करते हैं:
# यह गलत तरीका है:
codeign -s my-हस्ताक्षर-पहचान ../FooBarBaz.framework
# यह सही तरीका है:
codeign -s my-हस्ताक्षर-पहचान ../FooBarBaz.framework/Versions/A
और जब मैं परिणामों को सत्यापित करने की कोशिश करता हूं, तो यह मुझे अच्छा लगता है:
% codesign -vvv FooBar.app/Contents/Frameworks/libcurl.framework
FooBar.app/Contents/Frameworks/libcurl.framework: valid on disk
FooBar.app/Contents/Frameworks/libcurl.framework: satisfies its Designated Requirement
% codesign -vvv FooBar.app/Contents/Frameworks/Growl.framework
FooBar.app/Contents/Frameworks/Growl.framework: valid on disk
FooBar.app/Contents/Frameworks/Growl.framework: satisfies its Designated Requirement
मज़े के लिए, मैंने सीधे फ्रेमवर्क बंडल पर हस्ताक्षर करने की कोशिश की और इसे अभी भी खारिज कर दिया गया। लेकिन यह वही है जो प्रलेखन ने कहा कि नहीं करना है।
कोई भी अनुमान लगाता है कि इसे अमान्य क्यों माना जाएगा? मैं उसी प्रमाणपत्र का उपयोग कर रहा हूं जिसका उपयोग मैं अपने ऐप पर हस्ताक्षर करने के लिए करता हूं - वह जो अतीत में काम कर चुका है।
मेरा एकमात्र अनुमान मौजूदा प्लास्टर्स के साथ कुछ करना होगा (क्या मुझे रूपरेखा के Info.plists? या एंटाइटेलमेंट में पहचानकर्ताओं के स्वामित्व की आवश्यकता है - कोई सुझाव?