2016-02-23 16 views
5

के साथ स्थिर पुस्तकालय के साथ निजी पॉड मैं आईओएस देव टीम (निजी रेपो पर) के लिए फली विकास पर काम कर रहा हूं। मेरे निम्न-स्तरीय सी/ओब्जे-सी कोर पॉड में कुछ शीर्षलेख वाले स्थिर लाइब्रेरी होती है और इसे अन्य फोडों में निर्भरता के रूप में उपयोग किया जाता है (--use-libraries के साथ धक्का दिया जाता है)।स्विफ्ट पॉड

अब आईओएस टीम स्विफ्ट फली को एकीकृत करना चाहता है, उन्हें अपनी परियोजनाओं के पॉडफाइल में use_framework! विकल्प जोड़ना पड़ा। बेशक, वे pod install दौरान निम्न त्रुटि प्राप्त:

'XXX' लक्ष्य सकर्मक निर्भरता है कि स्थिर बाइनरी

मैं वेब पर आधे से एक दिन बिताया एक रास्ता बनाने के लिए की तलाश में शामिल है व्यर्थ में use_framework! विकल्प के साथ संगत मेरे फोड। यह बहुत निराशाजनक है, क्योंकि Google सर्विसेज फोड सबूत हैं कि इस समस्या को एक साफ तरीके से बाईपास करना संभव है (verify_no_static_framework_transitive_dependencies चाल के साथ नहीं): मुख्य फली और लगभग सभी इसकी निर्भरताओं में स्थिर पुस्तकालय होते हैं, और सब कुछ स्विफ्ट फली के साथ पूरी तरह से काम करता है । Google/SignIn के साथ उदाहरण जो Google/कोर (विक्रेता_ पुस्तकालय: पुस्तकालय/libGGLCore.a) और GoogleSignIn (विक्रेता_ पुस्तकालय: पुस्तकालय/libSignIn.a) पर निर्भर करता है।

use_framework! विकल्प के साथ अपने फोड को संगत बनाने के लिए मैं क्या कर सकता हूं इसका कोई विचार?

आप सभी धन्यवाद,

चीयर्स,

टॉम

+0

हे टॉम, मैं भी इसके साथ लड़ रहा हूं ... और ईमानदारी से मेरे पास अभी कोई सुराग नहीं है। मैं किस बारे में सोच रहा था: क्या आप निश्चित हैं कि Google ने चाल की है? मुझे लगता है कि GoogleSignIn उद्देश्य-सी में लिखी एक स्थिर पुस्तकालय है। इसलिए वे मुझे सही करते हैं अगर मुझे यह गलत लगता है- "use_framework" का उपयोग करने की ज़रूरत नहीं है! बिलकुल ... – niggeulimann

+0

हाँ, लेकिन मुझे लगता है कि GoogleSignIn स्थिर भी है ... – niggeulimann

+0

Google/साइनइन पॉड Google/कोर पॉड और GoogleSignIn फोड पर निर्भर करता है जिसमें दोनों केवल स्थिर पुस्तकालय (.a निष्पादन योग्य) और शीर्षलेख होते हैं। मूल रूप से मेरे फली के समान ही। यदि आप Google/साइनइन पॉड के साथ एक पॉडफ़ाइल बनाते हैं, तो एक स्विफ्ट पॉड (उदाहरण के लिए अलामोफ़ीयर), और 'use_framework!' विकल्प, _pod install_ पूरी तरह से ठीक काम करता है। अगर मैं Google/SignIn की बजाय अपने पॉड के साथ ऐसा करता हूं, तो मेरे पास "ट्रांजिटिव निर्भरता" त्रुटि है ... यह पता नहीं लगा सकता कि उन्होंने क्या किया:/ – LeT0C

उत्तर

3

मुझे लगता है कि मैं अपनी समस्या के लिए एक हैक पाया। यह काफी अजीब है, लेकिन मैं कहूंगा कि यह उत्पादन में इसका उपयोग करने के लिए पर्याप्त साफ है;)

मुझे यह here मिला। विचार आपके पॉडस्पेक के अंदर आपकी स्रोत_फाइल सूची में एक स्रोत फ़ाइल (यहां तक ​​कि एक खाली) को शामिल करना है।

मूल रूप से, मेरे podspec के स्रोत अनुभाग इस तरह दिखता है:

s.source_files = "myLib/Empty.m", "myLib/Headers/*.h" 
s.vendored_libraries = "myLib/myLib.a" 

केवल संशोधन मैंने बनाया स्रोत फ़ाइलों में "myLib/Empty.m" जोड़ने के लिए है (Empty.m सख्ती से खाली है) । इसके बिना, मैं व्यवस्थित रूप से संक्रमणीय निर्भरता त्रुटि करता हूं जब मैं पॉड स्थापित। इसके साथ, पॉड इंस्टॉल ठीक काम करता है। यह मेरे लिए Cocoapods 0.0.39 और 1.0.0.beta.4 दोनों के साथ काम किया।

ठीक है, ऐसा लगता है कि यह इतना गंदे समाधान नहीं है, लेकिन मुझे यकीन नहीं है कि यह हर मामले में काम करेगा। और कोकोपोड की सफाई के बारे में कोई अच्छी खबर नहीं है ...

जैसा कि मैंने पहले टिप्पणियों में उल्लेख किया था, Google को क्लीनर समाधान मिल गया है। तो अगर किसी को असली स्वच्छ समाधान का कोई विचार है, तो कृपया साझा करें!

चीयर्स,

टॉम

पुनश्च: मुझे लगता है कि मैं फ़ाइल को नाम देंगे DirtyCocoapodHack.m बजाय खाली।एम, सुनिश्चित करें कि वे इसे देव टीम में पसंद करेंगे;)

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