IOS के लिए पार्स: एप्लिकेशन को चलाने की कोशिश करते समय त्रुटियां


80

मैं पार्स एसडीके के साथ काम कर रहा हूं और मैंने क्विकस्टेप गाइड का पालन किया। जब मैं चलाने की कोशिश करता हूं, तो मुझे ये 8 त्रुटियां मिलती हैं। कोई विचार कि ऐसा क्यों है? ऐसा लगता है कि पार्स के फेसबुक भाग के साथ कुछ करना है जो मैं उपयोग नहीं कर रहा हूं।

 Undefined symbols for architecture armv7:
"_FBTokenInformationTokenKey", referenced from:
  -[PFFacebookTokenCachingStrategy accessToken] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setAccessToken:] in Parse(PFFacebookTokenCachingStrategy.o)
 "_FBTokenInformationExpirationDateKey", referenced from:
  -[PFFacebookTokenCachingStrategy cacheTokenInformation:] in     Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy expirationDate] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setExpirationDate:] in Parse(PFFacebookTokenCachingStrategy.o)
 "_OBJC_METACLASS_$_FBSessionTokenCachingStrategy", referenced from:
  _OBJC_METACLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBSessionTokenCachingStrategy", referenced from:
  _OBJC_CLASS_$_PFFacebookTokenCachingStrategy in Parse(PFFacebookTokenCachingStrategy.o)
"_FBTokenInformationUserFBIDKey", referenced from:
  -[PFFacebookTokenCachingStrategy facebookId] in Parse(PFFacebookTokenCachingStrategy.o)
  -[PFFacebookTokenCachingStrategy setFacebookId:] in Parse(PFFacebookTokenCachingStrategy.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
  objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
"_OBJC_CLASS_$_FBSession", referenced from:
  objc-class-ref in Parse(PFFacebookAuthenticationProvider.o)
 ld: symbol(s) not found for architecture armv7
 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ऐसा लगता है कि आपको लक्ष्य करने के लिए .m फ़ाइलों को जोड़ने की आवश्यकता है: stackoverflow.com/a/5300901/620197
माइक डी

2
लगता है कि अगर उन 2 झंडों में से -ObjC और -all_load मौजूद हैं, तो Facebook SDK मौजूद / स्थापित होना चाहिए ... या आप उन झंडों को हटा सकते हैं यदि आपको वास्तव में उनकी आवश्यकता नहीं है, लेकिन मुझे लगता है कि restKit को उनकी आवश्यकता है, इसलिए मुझे उनकी आवश्यकता है parse.com/questions/…
topwik

बस मेरे लिए काम bolt.framework और facebook.framework -objc flag.its जोड़ दें।
शौकत शेख

ld: फ्रेमवर्क नहीं मिला आर्किटेक्चर armv7 क्लैंग के लिए मेटल: एरर: लिंकर कमांड एग्जिट कोड 1 (इन्वॉल्वमेंट देखने के लिए -v)
sanjeev sharma

जवाबों:


137

यह कुछ प्रकार की बग है जो पारस iOS 1.1.33 रिलीज के साथ जुड़ा हुआ है क्योंकि कई लोग एक ही त्रुटियों को देख रहे हैं- खुद शामिल।

वर्कअराउंड के कुछ जोड़े हैं-

यदि आप किसी ऐसे पुस्तकालय का उपयोग नहीं कर रहे हैं जिसके लिए -OjjC लिंकर ध्वज की आवश्यकता है, तो आप अपनी परियोजना से -OjjC को हटा सकते हैं:

बिल्ड सेटिंग्स> अन्य लिंकर फ्लैग्स> निकालें -ObjC

या यदि आप एक पुस्तकालय का उपयोग कर रहे हैं जिसके लिए उस ध्वज की आवश्यकता है, तो आप फेसबुक एसडीके जोड़ सकते हैं।

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

यहां चर्चा का पालन करें:

https://parse.com/questions/cocoapods-incompatibility


हटाना -ObjC ने मेरे लिए इसे ठीक नहीं किया। dbquarrel की प्रतिक्रिया हालांकि नीचे दी गई थी।
शिम

2
मैंने -all_load लिंकर ध्वज को हटा दिया और इसने मेरे लिए इसे ठीक कर दिया, इसलिए आप इस उत्तर को भी अपडेट कर सकते हैं उस ध्वज को शामिल करें C:
A'sa Dickens

1
अन्य लिंकर झंडों में 'पॉड इंस्टॉल' से पहले मेरे पास '-all_load' था, इसने 'अन्य लिंकर ध्वज' को '$ (विरासत में मिला)' सेट करने का सुझाव दिया, इसने बिना किसी समस्या के काम किया।
टर्बो

क्या आप कृपया यह बता सकते हैं कि Xcode 6.2 (iOS 8) में फेसबुक एसडीके को कहां से और कैसे जोड़ें? मेरे पास Developers.facebook.com/docs/ios है जहां Facebook.pkg स्थापित करने के बाद मुझे FacebookSDK.frameworkफ़ाइल नहीं मिल सकती है और अन्य अनावश्यक फ़ाइलें हैं।
इनकैप्टर

यदि आप -ObjC लिंकर स्विच को हटाते हैं तो एक समस्या है। LibCordova.a लाइब्रेरी NSString पर कुछ श्रेणियां निर्दिष्ट करती है, जो -ObjC हटाए जाने पर लोड नहीं होंगी। चारों ओर एक काम से जुड़े हुए चौखटे से libCordova.a हटाने और अन्य लिंकर झंडे निर्माण सेटिंग में जोड़ने के लिए है: -force_load $ (BUILT_PRODUCTS_DIR) /libCordova.a
Nijil नायर

102

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

  1. FBMissingSymbols नामक आपके एप्लिकेशन में एक ऑब्जेक्ट बनाएं

  2. .H हटाएं। आपको इसकी आवश्यकता नहीं होगी

  3. इसे .m में रखें:

NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end

6
मेरी समस्या का समाधान किया। धन्यवाद और +1
अली सूफियान

2
तेज और सरल! धन्यवाद। +1
डेविड डा सिल्वा कॉन्टिन

1
धन्यवाद @dbquarrel, +1
iBhavik

2
यह जादुई समाधान है .. यदि आप नहीं चाहते कि आपके ऐप में एफबी एकीकरण इसके लिए जाए।
भारत

1
सबसे आसान समाधान :-)
मुज़म्मिल

27

आपको पुराने को हटाना होगा ParseFacebookUtils.frameworkऔर नया ParseFacebookUtilsV4.frameworkकाम करने के लिए रखना होगा ।


3
अरे, आप इस त्रिज्या को नियंत्रित कर रहे हैं, यह सही उत्तर है! / \
राफेल ओलिवेरा

यह वही है जो मेरे लिए तय हो गया है! Parse की वेबसाइटों या यहाँ अन्य उत्तरों पर कोई भी देव टिप्पणी नहीं की गई ... अगर मैं कर सका तो +9000!
वेंडीकिड

आसान और सही। धन्यवाद!
लैपिडस

हाँ ... यह बात है। क्यों यह पुरानी पर्दाफाश लाइब्रेरी अभी भी पार्स एसडीके के साथ भेज दी गई है ?? यह इतना जटिल नहीं होना चाहिए।
18

23

मुझे dbquarrel का उत्तर बहुत पसंद था, लेकिन यह अब काम नहीं करता है क्योंकि इसमें कुछ नए सामाजिक वर्गों की कमी है।

तो एक ही काम करो, लेकिन इसके बजाय, इसे जोड़ें:

NSString *FBTokenInformationExpirationDateKey = @"";
NSString *FBTokenInformationTokenKey = @"";
NSString *FBTokenInformationUserFBIDKey = @"";
NSString *SLServiceTypeTwitter = @"";
NSString *ACAccountTypeIdentifierTwitter = @"";
@interface FBAppCall:NSObject
@end
@implementation FBAppCall
@end
@interface FBRequest:NSObject
@end
@implementation FBRequest
@end
@interface FBSession:NSObject
@end
@implementation FBSession
@end
@interface FBSessionTokenCaching:NSObject
@end
@implementation FBSessionTokenCaching
@end
@interface FBSessionTokenCachingStrategy:NSObject
@end
@implementation FBSessionTokenCachingStrategy
@end
@interface ACAccountStore:NSObject
@end
@implementation ACAccountStore
@end
@interface SLRequest:NSObject
@end
@implementation SLRequest
@end
@interface SLComposeViewController:NSObject
@end
@implementation SLComposeViewController
@end

3
इसे अपडेट करने के लिए धन्यवाद!
श्रीविजय

अपने एप्लिकेशन में एक ऑब्जेक्ट बनाएं जिसे कहा गया है FBMissingSymbols, .h को हटाएं (क्योंकि आपको इसकी आवश्यकता नहीं है), फिर ऊपर रखेंFBMissingSymbols.m
नैट ली

क्या इस नई .mफ़ाइल #import <Foundation/Foundation.h>को शीर्ष पर शामिल करने की आवश्यकता नहीं है ?
एडमट

10

जाँच करें और सुनिश्चित करें कि आपके पास "ParseFacebookUtils" ढांचे के दो संस्करण नहीं हैं:

ParseFacebookUtilsV4 और ParseFacebookUtils

एक बार मैंने ParseFacebookUtils को हटा दिया, और ParseFacebookUtilsV4 को ठीक रखा।


ठीक यही समस्या थी। एक बार हटाने के बाद, सभी 9 त्रुटियां दूर हो गईं! धन्यवाद
Nick89

7

मेरा समाधान निश्चित रूप से काम करेगा और आप अन्य लिंकर झंडे में -ObjC का उपयोग कर सकते हैं।

  1. "Social.framework", "Account.framework" जोड़ें
  2. "FacebookSDK.framework" जोड़ें

चीयर्स .... अब यह काम करता है ..... और हटाने की कोई आवश्यकता नहीं है -ओबीजेसी।


यह वास्तव में सरल और महान जवाब है। लेकिन केवल एक चीज मेरे मामले में है, मैंने Facebook.framework नहीं जोड़ा है और फिर भी इसने बिना किसी त्रुटि के एप्लिकेशन बनाया है। लेकिन सरल समाधान के लिए वैसे भी, +1।
iOS Coder

मेरे लिए यह सिर्फ "Social.framework", "Account.framework" को जोड़ रहा था। धन्यवाद, एक आकर्षण की तरह काम करता है :)
evya

3

लगता है कि आपको 'Account.Framework' और / या 'Social.Framework' को जोड़ना पड़ सकता है।


2

@BlueHula द्वारा उत्तर के लिए एक पूरक। पार्से ने अपने ढांचे से फेसबुक एसडीके को हटा दिया है, जिसका अर्थ है कि कुछ निश्चित संस्करण (1.1.33 शायद) से पार्स को एकीकृत किया जा रहा है। Framework को एफबी एसडीके को स्वतंत्र रूप से एकीकृत करने के साथ होना चाहिए।

कृपया फेसबुक sdk को शामिल किए बिना पार्स आईओएस एसडीके का उपयोग करके इस लिंक को देखें

मुख्य बिंदु -force_load $(SRCROOT)/path/libname.aआवश्यक तृतीय-पक्ष पुस्तकालयों के साथ लिंक करने के लिए उपयोग करने के बजाय उपयोग करने के लिए -all_loadऔर है-ObjC


1

यह एक लिंकर त्रुटि है ... आप अपनी परियोजना में एक आवश्यक ढांचे को शामिल नहीं कर रहे हैं जिसे आप हेडर फ़ाइलों में से एक में संदर्भित कर रहे हैं।

इसलिए, उदाहरण के लिए, यदि आपके पास अपने कोड में शामिल है:

#import <Parse/Parse.h>

इसे संभवतः एक सहायक ढांचे की आवश्यकता है, और आपको इसे अपने ऐप में शामिल करना होगा। क्या आपने parse.frameworkXcode के भीतर से शामिल किया था ?

Xcode चौखटे


1

मेरे पास एक ही उपयोग था और मेरे पास केवल तीसरी पार्टी थी, जो PayPal SDK थी। हटाने के बाद -ObjC सब कुछ ठीक बनाया। (सेटिंग बदलने से पहले हमेशा प्रोजेक्ट का बैकअप लें)


1

यह २०१५ है और मेरे पास बस यही त्रुटि थी। दुर्भाग्य से, उपरोक्त जवाबों में से किसी ने भी मेरे लिए काम नहीं किया। लेकिन यह किया:

लक्ष्य> बिल्ड फ़ेज़ > लिंक बाइनरी लाइब्रेरीज़ के साथ फिर libstdc ++ जोड़ें। 6.dylib

इससे मेरे लिए समस्या हल हो गई।


मुद्दों का हिस्सा तय करने के लिए लगता है
21

0

कई फ्रेमवर्क हैं जिन्हें सेट करने की जरूरत है -ObjC ध्वज को अन्य लिंक किए गए ध्वज के रूप में, जबकि पार्स आपको ऐसा करने की अनुमति नहीं देता है। इससे निपटने के लिए आप निम्नलिखित चीजों में से एक कर सकते हैं। मैंने Google मानचित्र SDK का उदाहरण दिया है, जिन्हें -ObjC ध्वज की आवश्यकता है, लेकिन उसी परियोजना में पार्स के कारण मैं सीधे उपयोग नहीं कर सकता:

समाधान 1 - बल_लोड ध्वज का उपयोग करना

अन्य लिंक्ड फ़्लैग के रूप में -Ojj फ्लैग को सेट करने के बजाय, विशेष फ्रेमवर्क या लाइब्रेरी को लोड करने के लिए फ़ोर्स_लोड फ़्लैग का उपयोग करें।

-force_load $(SRCROOT)/GoogleMaps.framework/Versions/A/GoogleMaps

समाधान 2 - फेसबुक एसडीके का उपयोग करना

बस फेसबुक एसडीके को एक अलग ढांचे के रूप में जोड़ें, यह आपको -OjjC ध्वज का उपयोग करने की अनुमति देगा। यह भी सुनिश्चित करें कि आपने जोड़ा है Accounts.frameworkऔर Social.framework। यदि आपने Bolt.framework और Parse रिक्त प्रोजेक्ट का उपयोग किया है, तो डुप्लिकेट प्रतीक हटाने से निपटने के लिए Bolt.framwork। यदि अभी भी इसमें कुछ त्रुटियां हैं, तो खातों और सामाजिक ढांचे को हटा दें और इसे फिर से जोड़ें (यदि आपने पार्स डिफ़ॉल्ट रिक्त परियोजना का उपयोग किया है तो यह मामला होगा)।


-1

मैं इस मुद्दे पर कई दिनों से परेशान था। मैंने सभी तीसरे एसडीके को प्रबंधित करने के लिए कोकोपोड्स का उपयोग किया।

यहां बताया गया है कि मैंने इस मुद्दे को कैसे हल किया। पॉड प्रोजेक्ट पर जाएं और आइटम को "केवल आर्किटेक्चर का निर्माण करें" को NO पर सेट करें।

फली परियोजना का पुनर्निर्माण और फिर लिंक त्रुटियाँ हो गई हैं! इसकी मदद से किसी ऐसे व्यक्ति की मदद कर सकते हैं जो कोकोपोड्स का उपयोग कर रहा है।यहाँ छवि विवरण दर्ज करें


-1

मुझे भी यही समस्या थी। मैंने पिछले संस्करण (1.1.32) को यहाँ से डाउनलोड करके हल किया है:

https://parse.com/downloads/ios/parse-library/1.1.32

(मेरे मामले में मुझे -OjjC ध्वज की आवश्यकता थी)

संपादित करें: ऐसा लगता है कि संस्करण 64 बिट आर्किटेक्चर के साथ काम नहीं करता है।


-1

इस में स्थित परियोजना फ़ाइल से हटाया जा सकता है <projectname>/cordova/<projectname>/platforms/ios/<projectname>.xcodeproj/project.pbxprojऔर

के लिए फ़ाइल खोजें -ObjC, कई स्थान हैं। यह इस तरह दिख रहा है:

OTHER_LDFLAGS = (
    "-weak_framework",
    CoreFoundation,
    "-weak_framework",
    UIKit,
    "-weak_framework",
    AVFoundation,
    "-weak_framework",
    CoreMedia,
    "-weak-lSystem",
    "-force_load",
    "\"$(BUILT_PRODUCTS_DIR)/libCordova.a\"",
    "-ObjC",
);

-1

कोकोआपोड्स स्थापित करें और इसे अपने पॉडफाइल में जोड़ें:

pod 'Facebook-iOS-SDK'
pod 'Parse'
pod 'ParseFacebookUtils'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.