2015-05-15 4 views
16

एम्बेड करने में सिम्युलेटर पर डीबग करने में विफल रहता है मुझे आईओएस> = आईओएस 8 की ओर लक्षित एक्सकोड 6 के साथ बनाया गया कोको टच फ्रेमवर्क मिला है। इस ढांचे की लक्ष्य आर्किटेक्चर सेटिंग्स डिफ़ॉल्ट हैं, जिसका अर्थ है कि मैंने कुछ भी नहीं बदला है। आर्किटेक्चर मानक पर सेट हैं (जिसमें x86_64 शामिल नहीं है, बाद में उस पर अधिक)। ढांचे में स्वयं स्विफ्ट और ऑब्जेक्टिव-सी कोड दोनों शामिल हैं, इसलिए रे वेंडरलिच से स्थिर लाइब्रेरी वर्कअराउंड का उपयोग करके इसे बनाना काम नहीं करेगा।कोको टच फ्रेमवर्क परियोजना

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

हालांकि, अगर मैं .framework फ़ाइल लेता हूं और इसे किसी अन्य प्रोजेक्ट में जोड़ता हूं जैसे कि आप कोई अन्य ढांचा जोड़ते हैं, तो परियोजना सिम्युलेटर के लिए नहीं बनाई जाएगी। खैर, यह निर्माण करता है, लेकिन यह दुर्घटनाग्रस्त हो जाता है क्योंकि यह प्रासंगिक वर्ग नहीं ढूंढ सकता है। यह डिवाइस पर ठीक काम करता है और जैसा कि अपेक्षित काम करता है।

फ्रेमवर्क प्रोजेक्ट स्वयं ही मुझे चेतावनी देता है; "ऐप्पल मैक-ओ लिंकर चेतावनी - निर्देशिका विकल्प के लिए नहीं मिली .... (डीबग-ओपोनोस)"।

किसी भी मदद की अत्यधिक सराहना की जाएगी!

उत्तर

7

मुझे अंततः इस मुद्दे का समाधान मिला है। जैसा कि यह पता चला है, एक्सकोड अब बॉक्स से बाहर वसा बाइनरी नहीं बनाता है। इस बात का कोई अंदाजा नहीं है कि इसके पीछे ऐप्पल का तर्क क्या हो सकता है, मैं भी ऐसा लगता हूं कि कभी-कभी एक्सकोड के लिए जिम्मेदार लोग अपने उत्पाद का उपयोग कर डेवलपर्स का मज़ा लेना पसंद करते हैं ...

वैसे भी, आप इस बारे में निश्चित मार्गदर्शिका कैसे प्राप्त कर सकते हैं सिम्युलेटर और सभी आईओएस उपकरणों के लिए एक वसा बाइनरी बनाने के लिए (हाँ, आपको नए और पुराने उपकरणों पर काम करने वाले ढांचे को प्राप्त करने के लिए विभिन्न आर्किटेक्चरों को भी लिप करना होगा): https://kodmunki.wordpress.com/2015/03/04/cocoa-touch-frameworks-for-ios8-remix/

संक्षेप में;

  • एक कोको टच रूपरेखा बनाएं
  • आर्किटेक्चर सेट arm64 को arm64 को, ARMv7, और armv7s
  • सेट "सक्रिय वास्तुकला का निर्माण करने के लिए" "नहीं"
  • सेट "मान्य आर्किटेक्चर", armv1, और armv7s
  • निम्न स्क्रिप्ट को ढांचे के निर्माण योजना के रूप में एक संग्रह पोस्ट-एक्शन के रूप में जोड़ें;

    सेट -e

    DEVICE_BIN = "$ {OBJROOT}/UninstalledProducts/$ {TARGET_NAME} .framework" SIMULATOR_BIN = "$ {SYMROOT} /../../../../ उत्पाद/डीबग- iphonesimulator/$ {TARGET_NAME}।रूपरेखा "

    ARCHIVE_PATH =" $ {SRCROOT}/_ संग्रह " rm- आरएफ" $ {ARCHIVE_PATH} " mkdir" $ {ARCHIVE_PATH} "

    अगर [" $ {विन्यास} "=" रिलीज़ " ]; तो

    अगर [-d "$ {DEVICE_BIN}"]; तो DEVICE_PATH = "$ {ARCHIVE_PATH}/रिलीज" mkdir "$ {DEVICE_PATH}" cp -r "$ {DEVICE_BIN}" " $ {DEVICE_PATH} " fi यदि [-d" $ {SIMULATOR_BIN} "]; तो SIMULATOR_PATH =" $ {ARCHIVE_PATH}/डीबग " mkdir "$ {SIMULATOR_PATH}" cp -r "$ {DEVICE_BIN}" "$ {SIMULATOR_PATH}" लिपो -क्रेट "$ {DEVICE_BIN}/$ {TARGET_NAME}" "$ {SIMULATOR_BIN}/$ {TARGET_NAME}" आउटपुट "$ {SIMULATOR_PATH}/$ {TARGET_NAME} .framework/$ {TARGET_NAME}"

    फाई

    फाई

    बाहर निकलने 0;

यह आपकी प्रोजेक्ट की निर्देशिका में एक _ आर्चिव निर्देशिका बनाएगा जहां आप डीबग और रिलीज दोनों के लिए ढांचे को पा सकते हैं।

महत्वपूर्ण: आज (22 मई 2015) के रूप में आपको पहले सिम्युलेटर के साथ प्रोजेक्ट बनाना होगा, और उसके बाद डिवाइस के साथ संग्रह करना होगा। अन्यथा आपको सार्वभौमिक बाइनरी नहीं मिलेगी!

यह पोस्ट पैकेजिंग प्रक्रिया के अपडेट के लिए मृत लिंक त्रुटियों से बचने के लिए बनाया गया है, कृपया हमेशा ऊपर लिंक किए गए कोडमंकी वेबसाइट पर पोस्ट किए गए चरणों का प्रयास करें क्योंकि इस पोस्ट में दिए गए चरणों को पुराना हो सकता है पहले से!

+0

"जैसा कि यह पता चला है, एक्सकोड अब बॉक्स से बाहर वसा बाइनरी नहीं बनाता है।" एक्सकोड ने सिम्युलेटर और डिवाइस दोनों के लिए कभी नहीं किया। ये दो अलग-अलग एसडीके हैं। – quellish

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