objective c - आईओएस-बिल्ड कोकोआपोड्स के साथ विफल रहता है हेडर फाइल नहीं मिल सकता है




objective-c ios (16)

मेरे पास कोकोपोड्स का उपयोग करके आईओएस प्रोजेक्ट है। सब कुछ सुचारू रूप से काम कर रहा था जब तक कि एक और डेवलपर एक ही परियोजना पर काम करना शुरू नहीं कर देता। उन्होंने कुछ बदलाव किए (केवल जहां तक ​​मुझे पता है) कोड और रेपो में एक नई शाखा बनाई। मैंने अपनी शाखा की जांच की है और इसे बनाने की कोशिश की है, लेकिन मुझे एक त्रुटि मिल रही है: ASLogger / ASLogger.h फ़ाइल नहीं मिली।

यहां तक ​​कि अगर मैं पूरी परियोजना को हटा देता हूं और एक नई प्रतिलिपि बनाता हूं और 'पॉड्स इंस्टॉल' का उपयोग करता हूं। निर्माण विफलता अभी भी वहाँ है। क्या आपको कोई विचार है कि समस्या कहां हो सकती है? अगर आपको कुछ और इंफोस की ज़रूरत है, तो बस पूछें।


1.Check

बिल्ड सेटिंग्स -> खोज पथ -> उपयोगकर्ता शीर्षलेख खोज पथ ->

  • "$ {PODS_ROOT} /" रिकर्सिव

2. यदि आपके podfile सेट हो podfile तो आयात शैली (मुख्य बिंदु) देखें

use_frameworks!

आपके File-Bridging-Header.h , File-Bridging-Header.h को यह पसंद करना चाहिए

#import "MBProgressHUD.h"

और नीचे होना चाहिए

#import <MBProgressHUD.h>

3. यह काम होना चाहिए! मुझ पर विश्वास करो



किसी भी उत्तर ने मेरी मदद नहीं की (मेरे पास सभी लक्ष्यों से जुड़े मेरे फोड थे, कॉन्फ़िगरेशन सेटअप को सही तरीके से सेट करते थे, कोर्रेक्टी सेट सर्च पथ "$ (विरासत)" आदि ...)।

मानक इंस्टॉल / अपडेट कमांड का उपयोग कर नवीनतम, डीबग संस्करण में कोकोपोड अपडेट किए जाने के बाद समस्या स्वयं गायब हो गई:

   gem install cocoapods --pre

या:

   sudo gem install cocoapods --pre

(अगर स्थापना के दौरान सूडो का इस्तेमाल किया गया था)।

यह कोकोपोड्स बग होना चाहिए।


क्या आपने कोकोपोड्स शैली आयात करने का प्रयास किया था?

#import <ASLogger.h>

साइट पर जानकारी वास्तव में स्पष्ट नहीं है, मैंने एक पुल अनुरोध सबमिट किया है:

https://github.com/CocoaPods/cocoapods.org/pull/34

अद्यतन: उन्होंने मेरा अनुरोध खींच लिया :)


मुझे ${PODS_HEADERS_SEARCH_PATHS} गुम है और यह मेरी विकसित गिट शाखा में परिभाषित नहीं है, इसलिए मैंने हेडर खोज पथ के लिए रिकर्सिव के साथ "$(SRCROOT)/Pods/Headers/" जोड़ा

यह मेरे लिए ठीक है


मुझे एक ही समस्या है, लेकिन उपर्युक्त समाधान काम नहीं कर सकते हैं। मैंने इसे करके इसे ठीक कर दिया है:

  1. पूरी परियोजना को हटा दें
  2. गिट रन परियोजना को क्लोन करें और बंडल निष्पादन पॉड इंस्टॉल चलाएं
  3. cd peoject और रन रिमोट ऐड-रिमोट-रेप-एड अपस्ट्रीम जोड़ें
  4. गिट अपस्ट्रीम लाओ
  5. गिट चेकआउट मास्टर
  6. गिट अपस्ट्रीम / मास्टर मर्ज करें

और फिर यह काम करता है।


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


मेरे लिए समस्या अन्य लिंकर झंडे मूल्य में थी। किसी कारण से मेरे पास झंडे में कोई उद्धरण नहीं था -l"xml2" -l"Pods-MBProgressHUD"


मैं इस मुद्दे का सामना करने वाली टीम में एकमात्र डेवलपर था, यह पूरी तरह से सभी के लिए काम करता था इसलिए मुझे एहसास हुआ कि यह मेरा पर्यावरण होना चाहिए। मैंने एक ही निर्देशिका में एक ही प्रोजेक्ट के git clone की कोशिश की और इसे पूरी तरह से संकलित किया, फिर मुझे एहसास हुआ कि इसे कहीं मेरे प्रोजेक्ट पथ के लिए एक्सकोड कैशिंग सामान होना चाहिए, कि "कहीं कहीं" डेरिवेटडाटा फ़ोल्डर है, बस इसे हटाएं और एक साफ बिल्ड करें आपकी परियोजना के, यह मेरे लिए काम किया।

आप मार्ग प्राप्त कर सकते हैं और यहां तक ​​कि खोजक में फोल्डर को खोलकर भी जा सकते हैं:

एक्सकोड -> प्राथमिकताएं -> स्थान -> ** व्युत्पन्न डेटा


मैं एक्सकोड 5.0 के जीएम बीज पर था और मुझे काम के इन उत्तरों में से कोई भी नहीं मिला। मैंने हेडर आयात w / cocoapods के बारे में कई अलग-अलग प्रश्नों पर एसओ पर हर एक जवाब की कोशिश की।

आखिर में मुझे एक समाधान मिला जो मेरे लिए काम करता था : मैक ऐपस्टोर (जीएम बीज के शीर्ष पर स्थापित) के माध्यम से मैंने एक्सकोड 5.0 में अपग्रेड किया और अब हेडर आयात अपेक्षित काम कर रहे हैं।

मेरे सिस्टम पर अभी भी एक्सकोड 5 का बीटा संस्करण था और मैंने इसे भी हटा दिया। शायद यह दो चीजों का संयोजन था, लेकिन उम्मीद है कि यह किसी और की मदद करेगा।


यदि आपके पास " पॉड इंस्टॉल " या " पॉड अपडेट " के बाद बिल्डिंग त्रुटियां हैं, तो हो सकता है कि आपके पॉड्स में से एक को एक्सकोड 6.3 के साथ बनाया गया हो, जबकि आप अभी भी पिछले संस्करण का उपयोग कर रहे हैं।

मेरे मामले में मुझे अपने ओएसएक्स को मैवरिक्स से योसामेट में एक्सकोड 6.3 करने और समस्या को हल करने के लिए अद्यतन करना पड़ा


यदि उपरोक्त में से कोई भी आपके लिए काम नहीं करता है और आपको यह त्रुटि मिल रही है क्योंकि आपने अभी use_frameworks! स्विच किया है use_frameworks! अपने पॉडफाइल में, इस पर पढ़ें:

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

आपको अपनी ब्रिजिंग हेडर फ़ाइल से सभी आयातों को हटाने की ज़रूरत है, और इसके बजाय स्विफ्ट import Module का उपयोग अपनी व्यक्तिगत स्विफ्ट फ़ाइलों में आवश्यकतानुसार करें, जैसे आप स्विफ्ट फ्रेमवर्क के लिए करेंगे।

और यदि आप अपने ओब्जे-सी कक्षाओं में किसी भी फ्रेमवर्क हेडर का उपयोग कर रहे हैं (मेरे मामले में हमारे पास एक सुविधा वर्ग है जो एफबीएसडीके का उपयोग करता है) तो आपको इसे स्थानीय से वैश्विक आयात में बदलना होगा (इसका मतलब है #import "Module.h" से #import <Module/Module.h> , जब आप फ्रेमवर्क नाम टाइप करना शुरू करते हैं तो आपके लिए स्वत: पूर्ण होना चाहिए। मेरे मामले में यह <AFNetworking/AFHTTPRequestOperationManager.h> )।

संपादित करें: मैंने तब से सीखा है कि @import Module करने से छतरी फ़ाइल का उपयोग किया जाता है जो कि सुरक्षित भी है।


यहां एक और कारण है: सभी हेडर पथ ठीक लगते थे, लेकिन हमें अभी भी प्रीकंपिल्ड (.pch) फ़ाइल में एक त्रुटि है जो एक पॉड हेडर पढ़ने की कोशिश कर रहा है

(यानी # आयात <CocoaLumberjack / CocoaLumberjack.h>)।

कच्चे निर्माण आउटपुट को देखते हुए, मैंने अंत में देखा कि त्रुटि हमारे वॉच ओएस एक्सटेंशन लक्ष्य को तोड़ रही थी, न कि मुख्य लक्ष्य जिसे हम बना रहे थे, क्योंकि हम वॉच ओएस लक्ष्यों में .pch प्रीकंपील्ड हेडर फ़ाइल आयात कर रहे थे, और यह असफल रहा क्या आप वहां मौजूद हैं। सुनिश्चित करें कि आपके साथ चलने वाले ओएस लक्ष्य सेटिंग्स .pch फ़ाइल आयात करने का प्रयास नहीं करते हैं (विशेष रूप से यदि आप मास्टर लक्ष्य सेटिंग से आयात को सेट करते हैं, जैसे मैंने किया था!)


यहां मेरे लिए क्या काम किया गया है:

लक्ष्य> "सेटिंग्स बनाएं" टैब पर जाएं और "उपयोगकर्ता शीर्षलेख खोज पथ" सेटिंग ढूंढें।

इसे "$ (BUILT_PRODUCTS_DIR)" पर सेट करें और "रिकर्सिव" चेक बॉक्स को चेक करें।

अब निर्मित लक्ष्य लिंक करने योग्य हेडर फ़ाइलों का पता लगाने के लिए वर्कस्पेस की साझा बिल्ड निर्देशिका को खोजेगा।

====

अद्यतन करें

मेरे पास हाल ही में एक समान (हालांकि थोड़ा अलग) समस्या थी। यह पता चला कि .xcodeproj पॉड्स नहीं ढूंढ सका क्योंकि मैंने .xcodeproj फ़ाइल की बजाय .xcodeproj फ़ाइल खोल दी थी। भविष्य में दूसरों की मदद कर सकते हैं।


wiki इस समस्या को हल करने के बारे में सलाह देता है:

यदि एक्सकोड निर्भरताओं के शीर्षलेख नहीं ढूंढ सकता है:

जांचें कि पॉड हेडर फ़ाइलों को पॉड्स / हेडर में सही ढंग से सिम्लिंक किया गया है और आप HEADER_SEARCH_PATHS को ओवरराइड नहीं कर रहे हैं (देखें # 1)। यदि एक्सकोड अभी भी उन्हें नहीं ढूंढ पा रहा है, तो आखिरी उपाय के रूप में आप अपने आयात को प्रीपेड कर सकते हैं, उदाहरण के लिए # आयात करें "पॉड्स / एसएसजेप आर्चिव एच।"।


अद्यतन करें

मैंने इसे अपने मूल उत्तर के बाद से अपडेट किया है, जिसे डाउनवोट मिला है, इसलिए मुझे आशा है कि इससे मदद मिलती है। और अगर ऐसा होता है, तो उम्मीद है कि यह मेरा वोट वापस ले जाएगा।

यदि शीर्षलेख आयात नहीं किए जा रहे हैं, तो संभवत: HEADER_SEARCH_PATHS में आपका कोई संघर्ष हो सकता है। अपनी बिल्ड सेटिंग्स में हेडर खोज पथ में $(inherited) को जोड़ने और जोड़ने के लिए यह सुनिश्चित करने के लिए कि यह आपके कोकोपोड्स से .xcconfig फ़ाइल में शामिल किसी भी खोज पथ में खींचता है।

इससे किसी भी विवाद में मदद मिलनी चाहिए और आपका स्रोत सही तरीके से आयात किया जाना चाहिए।





cocoapods