2012-04-27 13 views
8

मुझे पता है कि इस सवाल से पहले पूछा गया है, लेकिन मैंने जो भी खोजा है उसे मैंने कोशिश की है और इसमें से कोई भी काम नहीं कर पाया है।आईओएस एडमोब नेटवर्क मध्यस्थता: डुप्लिकेट सिंबल त्रुटि all_load और ObjC

मेरे पास एक पूरी तरह कार्यात्मक आईओएस ऐप है, जिसे मैं अब एडमोब नेटवर्क मध्यस्थता को एकीकृत करना चाहता हूं। मैंने पहले से ही एडमोब को ठीक से काम कर लिया है, लेकिन मध्यस्थ को लिंकर्स '-all_load' और '-ObjC' सेट करने की आवश्यकता है (अन्य लिंकर ध्वज में)। निश्चित रूप से पर्याप्त अगर मैं उनके बिना निर्माण करता हूं, कोई विज्ञापन नहीं दिखाया जाता है और लॉग में यह कहता है कि इसे सेट करने की आवश्यकता है।

समस्या यह है कि मैं अपने ऐप को या तो all_load या ObjC सेट के साथ सफलतापूर्वक नहीं बना सकता। मैंने पढ़ा है कि आईओएससी के लिए ओबीजेसी आवश्यक नहीं है, लेकिन इसके बिना भी मुझे अभी भी all_load के साथ समस्या है। समस्या यह है कि मुझे यह त्रुटि मिल रही है:

ld: डुप्लिकेट प्रतीक [कुछ कमांड लाइब्रेरी] और [उसी कमांड के लिए पथ] आर्किटेक्चर armv7 क्लैंग: त्रुटि: लिंकर कमांड निकास कोड 1 (उपयोग के साथ विफल -v आमंत्रण देखने के लिए)

अगर मैं अपमानजनक स्थिर पुस्तकालय को हटाता हूं और पुनर्निर्माण करता हूं, तो त्रुटि बस मेरे पास आने वाली अगली स्थिर लाइब्रेरी पर जाती है। ऐसा होने के नाते मैं एक विज्ञापन मध्यस्थ स्थापित करने की कोशिश कर रहा हूं, मेरे ऐप को विभिन्न विज्ञापन नेटवर्क से कई स्थिर पुस्तकालयों की आवश्यकता है।

यहां कुछ समाधान है कि मैं कोशिश की है की है कि विफल रहे हैं:

  • ARMv6 के लिए संकलन, ARMv7 नहीं (नहीं एक आदर्श ठीक वैसे भी, जैसा कि मैंने दोनों चाहते हैं)
  • साथ force_load [पथ all_load की जगह लाइब्रेरी के लिए], और एक वास्तविक आईओएस डिवाइस पर परीक्षण के रूप में जाहिर है कि यह विधि किसी सिम्युलेटर के साथ काम नहीं करती है (यह कुछ भी नहीं प्रतीत होता है, मुझे वही समस्या मिलती है, वैसे भी त्रुटि में पाए गए उसी पथ का उपयोग करके)
  • all_load को हटा रहा है (बनाता है लेकिन जैसा कि मैंने कहा, AdMob मध्यस्थता की आवश्यकता है)
  • को हटाने हमलावर पुस्तकालयों (क्योंकि त्रुटि के बारे में मेरी स्थिर पुस्तकालयों जो मैं जरूरत से हर एक शिकायत स्पष्ट रूप से काम नहीं करता है)

किसी भी मदद के इस मुद्दे को हल करने में सराहनीय है।

संपादित करें: मेरी समस्या

का हल यह पता चला है के रूप में, केवल एक चीज मैं कोशिश नहीं की केवल एक वास्तविक डिवाइस पर -ObjC उपयोग कर रहा था, यह मेरे लिए काम करने के लिए लगता है!

EDIT2: कोई बात नहीं, अब भी समस्या आ रही है

मैं मेरी टिप्पणी नीचे जब उनसे पूछा गया कि स्थिर पुस्तकालयों मुझे समस्याओं पैदा कर रहे थे बोली होगी:

"ठीक है मुझे मिल गया AdMob मध्यस्थ द्वारा किसी भी अन्य नेटवर्क के बिना काम ऑल_लोड को छोड़कर और ओबीजेसी को छोड़कर, जो ठीक से काम कर रहा था, जब तक कि मैंने अपना पहला नेटवर्क नहीं जोड़ा, एडफोनिक, जो वर्तमान में मोबाइल ऐपट्रैकिंग के साथ विवाद कर रहा है, मुझे मिलता है: ld: डुप्लिकेट प्रतीक _ ओबीजेसी_आईवीएआर _ $ _ रीचबिलिटी.रेचबिलिटी [पथ]/एडफोनिक एसडीके/libAdfonic में रीफ .a (Reachability.o) और [पथ]/ऑब्जेक्ट्स-सामान्य/armv6/पहुंच योग्यता।o आर्किटेक्चर armv6 clang के लिए: त्रुटि: लिंकर कमांड निकास कोड 1 के साथ विफल रहा (उपयोग -v को देखने के लिए उपयोग करें) "

मेरे पास अन्य सभी विज्ञापन नेटवर्क पुस्तकालयों को हटाकर काम कर रहे Admob मध्यस्थ की नंगे हड्डियां थीं, लेकिन मेरे पहले तीसरे के साथ -पक्ष नेटवर्क एकीकरण मुझे लगता है कि दोनों के बीच एक और संघर्ष है और एक ट्रैकिंग लाइब्रेरी मैं लागू कर दिया है हो रही है, MobileAppTracking। फिर भी हल करने के लिए 'डुप्लीकेट प्रतीकों' एक समाधान की तलाश में।

संपादित 3

मैं पुष्टि कर सकता है कि प्रत्येक विज्ञापन विज्ञापन जिसे मैं AdMob मध्यस्थ (AdMob खुद को छोड़कर) के साथ आज़माता हूं, संकलित करने में विफल रहता है, उनमें से अधिकतर डुप्लिकेट प्रतीक त्रुटि के कारण ओआरएस। मुझे समझ में नहीं आता कि यह कैसे हो सकता है, क्योंकि मुझे यकीन है कि मैं एडमोब की मध्यस्थता सेवा का उपयोग करने वाला अकेला नहीं हूं।

संपादित 4

मैं नीचे मेरी टिप्पणी को उद्धृत करता हूँ:

"मैं वास्तव में विज्ञापन नेटवर्क और मेरे लिए काम पुस्तकालयों का सबसे पाने में कामयाब रहे, मैं नीचे काफी कुछ संदर्भों को नष्ट करने के लिए किया था संकलन स्रोत, लेकिन मुझे यह अभी भी कम-से-कम, अभी भी उपयोग कर रहा है- ओबीजेसी और -all_load! "

+0

क्या आप इनमें से कुछ स्थिर पुस्तकालयों को सूचीबद्ध कर सकते हैं जिनके बारे में शिकायत हो रही है? मैं इस मुद्दे को पुन: पेश करने की कोशिश कर रहा हूं। – RajPara

+0

वैसे मुझे ऑलमोब मध्यस्थता को सभी_लोड को छोड़कर और ओबीजेसी समेत किसी भी अन्य नेटवर्क के बिना काम कर रहा है, जो तब तक ठीक काम कर रहा था जब तक कि मैंने अपना पहला नेटवर्क नहीं जोड़ा, एडफ़ोनिक, जो वर्तमान में मोबाइल ऐपट्रैकिंग के साथ विवादित है, मुझे मिलता है: ld: डुप्लिकेट प्रतीक _OBJC_IVAR_ $ _Reachability.reachability [पथ]/Adfonic SDK/libAdfonic.a (Reachability.o) और [पथ]/ऑब्जेक्ट्स-सामान्य/armv6/पहुंच योग्यता में रीफ।o आर्किटेक्चर armv6 क्लैंग के लिए: त्रुटि: लिंकर कमांड निकास कोड 1 के साथ विफल रहा (उपयोग -v को देखने के लिए उपयोग करें) – Paul

+1

अभी भी इस समस्या को पुन: उत्पन्न करने में परेशानी हो रही है, मुझे बिना किसी त्रुटि के AdMob और AdFonic मिला। एक्सकोड और आईओएस का कौन सा संस्करण चल रहा है? क्या आपने अपनी साइट से AdMob उदाहरण में अन्य नेटवर्क जोड़ने की कोशिश की? – RajPara

उत्तर

0

में एक-एक फ़ोल्डर हटाएं, मुझे एक ही समस्या थी। अन्य लिंकर्स में -ओबीजेसी जोड़ने के बाद, मैं संकलित नहीं कर सका (यह डुप्लिकेट प्रतीकों और पहुंच के बारे में शिकायत कर रहा था।)। इसे हटाने से मुझे संकलन करने दिया जाएगा, लेकिन AdMob ऐप को क्रैश कर रहा था।

बहुत सारे परीक्षणों के साथ बहुत सारे परीक्षण और खेल के बाद मैंने निम्नलिखित किया और अब यह काम कर रहा है: मैं लक्ष्य -> ​​ऐपनाम -> बिल्ड चरण -> संकलन स्रोतों और Reachability.m को हटा दिया गया। यह सिर्फ ठीक है और एडमोड क्रैश किए बिना भी काम कर रहा था।

+0

हां यह मेरी समस्या थी, कई तृतीय पक्ष पुस्तकालय -ओबीजेसी जोड़कर लिंकर त्रुटियों का कारण बन रहे थे, समाधान प्रत्येक लिंकर त्रुटि को बारीकी से जांचना था और प्रत्येक लिंकर त्रुटि के लिए .m को हटा देना था जो संभवतः किसी अन्य लाइब्रेरी में शामिल था। कभी-कभी यह स्पष्ट नहीं होता कि कौन से लोगों को हटाना है, लेकिन Reachability.m मेरे मामले में एक था। – Paul

2

आप -force_load "path/to/अपने/libGoogleAdMobAds.a" उपयोग कर सकते हैं बजाय -all_load की, यह आपके libGoogleAdMobAds लोड होगा केवल

+0

जैसा कि मैंने उपरोक्त कहा है, मैंने यह कोशिश की है, लेकिन ऐसा लगता है कि मेरे पास पथ सही है। अगर मैं सही पथ का उपयोग नहीं करता, तो मुझे एक त्रुटि मिलती है कि फ़ाइल नहीं मिली, और यदि मैं डुप्लिकेट प्रतीकों त्रुटि में निर्दिष्ट पथ का उपयोग करता हूं, तो मुझे कोई फ़ाइल त्रुटि नहीं मिली है, लेकिन मैं अभी भी उस पुस्तकालय के लिए डुप्लिकेट त्रुटि प्राप्त करें। – Paul

+0

हम्म, मुझे लगता है कि यह काम करना चाहिए, क्या आपने साफ करने की कोशिश की है? मुझे लगता है कि उपयोग करने का मार्ग सापेक्ष पथ है जहां से आपका एक्सकोड प्रोजेक्ट – RajPara

+0

रहता है मैंने अभी एक साफ करने की कोशिश की है, और मैंने force_load विधि को पुनः प्रयास किया है, लेकिन मुझे अभी भी वही समस्या मिलती है। मुझे अपने अन्य लिंकर्स '-fobjc-arc -force_load "पर सेट की गई निम्न त्रुटि मिलती है MMSDK/libMMSDK_4.5.5.a"' (-फोबजेक-आर्क एक अलग पुस्तकालय द्वारा आवश्यक है): ld: डुप्लिकेट प्रतीक _OBJC_METACLASS _ $ _ एसबीजेसन पार्सर [पथ]/ऑब्जेक्ट्स- असामान्य /armv7/SBJsonParser.o और MMSDK/libMMSDK_4.5.5.a (SBJsonParser.o) आर्किटेक्चर armv7 क्लैंग के लिए: त्रुटि: लिंकर कमांड निकास कोड 1 के साथ विफल रहा (उपयोग -v आमंत्रण देखने के लिए) यह तब होता है जब मेलेनियल एसडीके का उपयोग करने की कोशिश की जाती है, लेकिन मुझे दूसरों के साथ एक ही समस्या मिलती है। – Paul

1

उपयोगकर्ता परिभाषित निर्माण नाम "के साथ सेटिंग जोड़ें EXCLUDED_SOURCE_FILE_NAMES ": जैसा कि this article में दिखाया गया है, या this article द्वारा दिखाए गए .a फ़ाइल को संशोधित करें।

0

"मध्यस्थता" फ़ोल्डर को छोड़कर "एड-ऑन" फ़ोल्डर में सभी फ़ोल्डरों को हटा रहा है।

यह मेरे लिए काम करता है।

1

क्या आपको यह समस्या ठीक करने के लिए मिला?

मैं सिर्फ -all_load param को हटा देता हूं और मेरा ऐप मेरे डिवाइस पर अच्छी तरह से काम करता है। लेकिन मुझे इस चाल के बारे में निश्चित नहीं है।

+0

यह इसे हटाने के तुरंत बाद मेरे लिए काम किया – kezi

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