2015-02-03 9 views
7

एक्सकोड 6.1.1संदर्भित ढांचे के लिए Xcode6 कोड हस्ताक्षर आवश्यक है?

हम वितरण के लिए हमारे ऐप पर हस्ताक्षर करने की कोशिश कर रहे हैं (या यहां तक ​​कि केवल भौतिक डिवाइस पर परीक्षण करने के लिए)। हमारे पास हमारे प्रोजेक्ट में एक संदर्भित ढांचा है। हम धारणा है कि हम केवल हमारे एप्लिकेशन को स्वयं पर हस्ताक्षर करना चाहिए के अधीन थे (और हम सभी कोड पहचान पर हस्ताक्षर करने, प्रोफाइल प्रावधान, आदि की स्थापना की है), लेकिन हम इस बाहरी ढांचे पर हस्ताक्षर नहीं करना चाहिए, क्योंकि हम यह नहीं लिखा था। इसे मूल परियोजना से कोड कोडिंग प्रमाण पत्र प्राप्त करना चाहिए।

हालांकि हर बार जब हम शारीरिक डिवाइस पर चलाने का प्रयास, यह संदर्भित ढांचा निर्माण त्रुटि फेंकता है: "codesign त्रुटि: कोड हस्ताक्षर एसडीके के iOS 8.1 'में उत्पाद प्रकार' फ्रेमवर्क 'के लिए आवश्यक है।"

इसका मतलब यह है कि हम वास्तव में इस पर हस्ताक्षर कोड करने के लिए है?

विशेष रूप से, हम जिस फ्रेमवर्क का उपयोग करने का प्रयास कर रहे हैं वह अलामोफ़ीयर है।

उत्तर

4

मैं इसे जहां उन चौखटे से आते हैं पर निर्भर करता है लगता है:

  • वे तुम्हारा कर रहे हैं (अर्थात आंतरिक पुस्तकालय आप अपने प्रोजेक्ट के साथ बांध दिया रहे हैं), उन पर हस्ताक्षर करने की जरूरत है।
  • यदि वे एक ओपन सोर्स प्रोजेक्ट से आते हैं जो आप स्रोत से बना रहे हैं (यानी कोकोपोड्स से एक फली) तो आपको उन्हें साइन करना होगा।
  • वे एक 3-पक्ष डेवलपर से आते हैं, तो वे पहले से ही हस्ताक्षर किया जाना चाहिए।

वहाँ लक्ष्य जहां जो ढांचा कोड पर हस्ताक्षर करने के लिए अपने बंडल में एम्बेड और क्या करने के लिए निर्दिष्ट कर सकते हैं की "के चरण का निर्माण" के अंतर्गत आ कदम "एम्बेड फ़्रेमवर्क" कहा जाता है:

Embed frameworks build phase

यह नहीं करता है इससे कोई फर्क नहीं पड़ता कि उनके पास पहले से हस्ताक्षर है: आपका जो भी वहां था उसे बदल देगा।

तुम हमेशा codesign कमांड लाइन उपकरण के साथ एक रूपरेखा का प्रमाण पत्र की स्थिति की जांच कर सकते हैं:

xcrun codesign --verify --verbose [MYFramework.framework/MYFramework]

और साथ गायन इकाई प्रिंट:

xcrun codesign --display --verbose [MYFramework.framework/MYFramework]

Xcode 7 इस नहीं करता है के साथ
+0

अब काम नहीं कर रहा है। मेरे पास "कॉपी साइन ऑन कॉपी" है लेकिन ढांचे को कोड पर हस्ताक्षर नहीं मिल रहा है। अजीब बात यह है कि मुझे पता है कि ढांचे पर हस्ताक्षर किए गए थे क्योंकि मैंने कोड को एक अलग परियोजना में बनाया और इसे अपने "आईफोन डेवलपर" प्रमाण पत्र के साथ हस्ताक्षर किया। इसके अलावा, जब मैं अपना ऐप बनाता हूं वहां एक चेतावनी होती है: "कॉपी फिस स्ट्रिप छोड़ना, बाइनरी कोड हस्ताक्षरित है"। इसलिए हर कोई सोचता है कि यह कोड हस्ताक्षरित है, लेकिन जब मैं ऐप स्टोर पर अपलोड करने का प्रयास करता हूं तो यह शिकायत करता है कि ढांचा कोड पर हस्ताक्षर नहीं है और बाइनरी स्वीकार नहीं करेगा। कैच -22, सुनिश्चित नहीं है कि क्या करना है ... – Bungles

+0

मुझे इस समय Xcode 7 के साथ कोई समस्या नहीं है। ढांचे को उसी प्रमाण पत्र के साथ हस्ताक्षर किया जाना चाहिए जैसा ऐप अन्यथा आईट्यून्स शिकायत करेगा। यदि आपके कुंजीपटल "आईफोन डेवलपर" में कई प्रमाणपत्र हैं तो कभी-कभी विभिन्न परियोजनाओं के लिए अलग-अलग चुनते हैं। – duhanebel

+0

ऐसा लगता है, XCode 8 में आप सभी करता है, तो आप उन्हें अकेला वितरित करना चाहते हैं पर गतिशील चौखटे codesign की जरूरत नहीं है। इसलिए, आप केवल संपूर्ण ऐप निर्माण प्रक्रिया के दौरान अंतिम हस्ताक्षर पर भरोसा कर सकते हैं। लेकिन मैंने सुना है कि नेस्टेड ढांचे के साथ कुछ समस्याएं हैं - उन्हें प्रतिलिपि चरण के दौरान हस्ताक्षरित छोड़ दिया जा सकता है, और यह एक समस्या है। – JustAMartin

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