2015-03-28 7 views
5

एक Cocoapod पुस्तकालय जो मैं खुद अन्य प्रकाशित Cocoapod पुस्तकालय की निर्भर है का निर्माण करने की कोशिश कर रहा है पर निर्भर करता है बनाना, XCode ठीक बनाने के लिए परियोजना है, लेकिन फली वैधता की जाँच के लिए pod lib lint आदेश चलाकर error: include of non-modular header inside framework module पर साथ विफल लाइब्रेरी (पॉड) की हेडर फाइलें मैं इस पर निर्भर हूं। सभी स्रोत ओबीजे-सी स्विफ्ट नहीं है।एक फली है कि एक और फली

मैं निम्नलिखित की कोशिश की थी, सिफारिशों के अनुसार here

  • पाया public के बजाय project
  • निर्भर पुस्तकालय के हेडर फाइल स्थापना प्रत्येक लक्ष्य
  • है कि प्रासंगिक पुष्टि करने के लिए CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES स्थापना निर्माण चरणों में हेडर public के तहत हैं।

लेकिन समस्या बनी रहती है, मैं पॉड प्रकाशित नहीं कर सकता और न ही इसका परीक्षण कर सकता हूं।

अद्यतन जब मैं अपने नए फली की मेरी podspec फ़ाइल में s.dependency 'OldPodIDependOn' लाइन बाहर टिप्पणी तो त्रुटि गायब हो लेकिन निर्भर हेडर नहीं पाए जाते हैं। अगर मैं फली शामिल नहीं हैं मैं ./Example फ़ोल्डर के अंतर्गत Podfile में पर निर्भर करते हैं, तो जैसे:

target 'NewPod', :exclusive => true do 
    pod "NewPod", :path => "../" 
    pod "OldPodIDependOn", :path => "../../OldPodIDependOn/" 
end 

तो परियोजना सिर्फ XCode में निर्माण नहीं करेगा क्योंकि OldPodIDependOn फ़ाइलों परियोजना का हिस्सा नहीं हैं। एक चिकन-या-अंडे की समस्या का थोड़ा सा मिला।

अद्यतन 2 इसके अलावा फली है कि एक स्थानीय एक के बजाय प्रकाशित किया गया है को संदर्भित करने के :path => "../../OldPodIDependOn/" घटक को दूर करने की कोशिश की - मदद नहीं करता है।

, मैं podspec फाइल करने के लिए s.resources = 'Pod/Classes/UI/NewPod.storyboard' लाइन जोड़ा, और हटा दिया फली लक्ष्य से स्टोरीबोर्ड स्रोतों (अन्यथा xcode का निर्माण नहीं होगा) संकलन वर्थ उल्लेख है कि इस फली एक यूआई इसलिए एक स्टोरीबोर्ड शामिल है और संदर्भित किया जाएगा शामिल होंगे । मुझे नहीं लगता कि इस समस्या के साथ कुछ करने के लिए है लेकिन उल्लेख करने लायक है, शायद मैं वहां कुछ गलत कर रहा हूं।

मैं क्या गलत कर रहा हूं? किसी भी मदद की सराहना की जाएगी!

उत्तर

4

अंततः इस समस्या को हल करने के लिए मुझे pob lib create बनाया गया कार्यक्षेत्र छोड़ना पड़ा - इसके चारों ओर कोई रास्ता नहीं था, मैंने "फ्रेमवर्क के अंदर गैर-मॉड्यूलर हेडर" त्रुटियों से छुटकारा पाने के लिए सभी संभव संयोजन/सिफारिश/कोड संशोधन की कोशिश की लेकिन कुछ भी काम नहीं लग रहा था। pod lib lint हमेशा विफल रहा।

मैं अपने खुद के स्थिर पुस्तकालय xcode प्रोजेक्ट बनाया खरोंच से, तो Podfile लिए निर्भर फली जोड़ने के बाद इस पर pod update चलाने के लिए, तो यह lib के लिए एक .podspec फ़ाइल बनाई और "प्रतिलिपि फ़ाइलें" के लिए निर्भर फली हेडर फाइल जोड़ा स्थाई lib लक्ष्य + libPods.a फ़ाइल "चरण के साथ लिंक बाइनरी" निर्माण चरण के चरण का निर्माण चरण। Poof! pod lib lint से कोई और "गैर मॉड्यूलर हेडर" त्रुटियां, भले ही मैं व्यावहारिक रूप से एक ही चीज़ कर रहा हूं। सबक सीखा है कि सभी कोकोपॉड मामलों के लिए pod lib create की अनुशंसा नहीं की जाती है।

+0

असल में, गैर-मॉड्यूलर समस्या केवल कोकोपोड बिल्डिंग के दौरान गतिशील ढांचे में repos, अगर आप libPods.a आयात करने के लिए इस्तेमाल किया, यह बिल्कुल नहीं था। – Itachi

1

सामान्य error: include of non-modular header inside framework module में तात्पर्य है कि परिणामस्वरूप ढांचे के अंदर हेडर फाइलों में से एक (फ्रेमवर्क के अंदर कोकोपोड्स लिंट्स अब) और ढांचे के अंदर संग्रहित नहीं है, या सार्वजनिक हेडर के रूप में वर्गीकृत नहीं है।

यह आमतौर पर कार्यान्वयन फ़ाइलों में बाहरी imports को स्थानांतरित करने के आसपास काम किया जा सकता है, यह Modified to support using framework #353 देखें।

+0

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

+0

"फ्रेम मॉड्यूल = YES" में गैर-मॉड्यूलर को शामिल करने के लिए "पॉड लिब लिंट' को बल देने के लिए एक तरीका है"? यह एक्सकोड प्रोजेक्ट में हां के रूप में सेट है, यह सुनिश्चित नहीं है कि यह पॉड लिब लिंट – mindbomb

+0

को प्रभावित करता है, नहीं, सभी मेटाडाटा को पॉडस्पेक के अंदर रखा जाता है, एक्सकोड में कोई भी परिवर्तन पॉड में दिखाई नहीं देता है। '--verbose' के साथ चलाएं और आप इसे अपने स्वयं के xcodproj डाउनलोड और बनाने के लिए देखेंगे। – orta

2

मैं एक ही मुद्दा था, और मैं

pod lib lint MyPod.podspec --allow-warnings --use-libraries 

इस्तेमाल किया जब --use-पुस्तकालयों विकल्प जोड़ने, यह काम किया।

+0

अच्छा शॉट, मैंने इससे पहले कई चीजों की कोशिश की। यह काम करता है :) धन्यवाद – tryp

+0

धन्यवाद !! यह काम करता हैं। – Nori

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