2015-04-27 2 views
7

У меня возникла проблема после обновления рамки crashlytics в моем проекте, через приложение с тканью, конечно, это ошибка компоновщика точно, журнал ниже.Неопределенные символы после обновления crashlytics

Ld /Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Products/Debug-iphonesimulator/InternalApp.app/InternalApp normal x86_64 
cd /Users/losiennik/temp/InternalApp-ios-fork_DONOTREMOVE 
export IPHONEOS_DEPLOYMENT_TARGET=7.0 
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk -L/Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Products/Debug-iphonesimulator -F/Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Products/Debug-iphonesimulator -F/Users/losiennik/temp/InternalApp-ios-fork_DONOTREMOVE -filelist /Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Intermediates/InternalApp.build/Debug-iphonesimulator/InternalApp.build/Objects-normal/x86_64/InternalApp.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lPods-AFNetworking -lPods-ActivateYourSalon -lPods-CocoaLumberjack -lPods-Foursquare-API-v2 -lPods-GZIP -lPods-MBProgressHUD -lPods-MLPAutoCompleteTextField -lPods-MTDates -lPods-UICKeyChainStore -lPods-UIResponder+KeyboardCache -lPods-WYPopoverController -lPods-zipzap -lc++ -lz -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework QuartzCore -framework Security -framework SystemConfiguration -framework UIKit -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -stdlib=libc++ -mios-simulator-version-min=7.0 -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Intermediates/InternalApp.build/Debug-iphonesimulator/InternalApp.build/InternalApp.app.xcent -framework EventKit -framework MessageUI -framework Crashlytics -framework QuartzCore -framework MapKit -framework CoreLocation -framework CoreGraphics -framework UIKit -framework Foundation -lPods -framework Fabric -Xlinker -dependency_info -Xlinker /Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Intermediates/InternalApp.build/Debug-iphonesimulator/InternalApp.build/Objects-normal/x86_64/InternalApp_dependency_info.dat -o /Users/losiennik/Library/Developer/Xcode/DerivedData/InternalApp-cujowfodrnucvoglpkjjfmshsvrs/Build/Products/Debug-iphonesimulator/InternalApp.app/InternalApp 

Undefined symbols for architecture x86_64: 
    "_CLSLog", referenced from: 
     -[IAPSyncManager processSuccessfulHTTPRequest] in IAPSyncManager.o 
     -[IAPLogService writeContentsOfURL:toStream:] in IAPLogService.o 
     -[IAPServerObjectMapping serializedPrimaryKeyToJSONStringFrom:forObject:] in IAPServerObjectMapping.o 
    "_CLSNSLog", referenced from: 
     ___65-[IAPWeekDashboardViewController asyncInternalAppFetchSuccess:failure:]_block_invoke in IAPWeekDashboardViewController.o 
     -[IAPSyncManager prepareForSynchronizationInForeground:] in IAPSyncManager.o 
     ___50-[IAPSyncManager reenableIdleTimerAfterTwoMinutes]_block_invoke in IAPSyncManager.o 
     -[IAPSyncManager reenableIdleTimer] in IAPSyncManager.o 
     -[IAPJSONValidator validateJSONWithError:] in IAPJSONValidator.o 
     -[IAPSynchronisationRelationship stringWithID:] in IAPSynchronisationRelationship.o 
     _POSTDataDictionary in IAPSyncConstants.o 
     ... 
    "_OBJC_CLASS_$_Crashlytics", referenced from: 
     objc-class-ref in IAPSyncManager.o 
     objc-class-ref in Crashlytics+Utilities.o 
     l_OBJC_$_CATEGORY_Crashlytics_$_Utilities in Crashlytics+Utilities.o 
     objc-class-ref in IAPAppDelegate.o 
    (maybe you meant: _OBJC_CLASS_$_CrashlyticsPlaceholderStatic) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Я попытался исправить это с большим количеством манер, но не могу. Способы, которые я пытался:

  • Xcode Clean действия по проекту
  • удаляемого содержание /Users/losiennik/Library/Developer/Xcode/DerivedData
  • удаление и добавление снова Crashlytics.framework и Fabric.framework в Xcode 6.3.1 мишени Build Phases от Link Binary from Libraries
  • удалить эти рамочные файлы из проекта физически и добавление их снова из другого проекта, где я установил рамки с нуля
  • удаление /var/folders

Я сделал все возможное сочетание этого возможного решения, а также попытался запустить и убил xcode, перезапустив ОС. Ничего не работает.

Есть ли у вас какие-либо другие идеи? Может быть, кто-нибудь знает, где еще Xcode хранит временные файлы, которые можно использовать при компиляции и связывании процессов? У кого-то есть аналогичный опыт при обновлении этой структуры?

ответ

3

Оказалось, что причина проблемы связана с другой проблемой, с которой я столкнулся. Эта проблема привела к тому, что я не смог зарегистрировать конкретный идентификатор приложения с помощью теневого плагина, который ранее был добавлен в нашу старую учетную запись организации. Я удалил этот идентификатор приложения из этой старой организации, но не смог добавить его в новую организацию.

Благодаря члену поддержки ткани, оказалось, что мой идентификатор приложения находился в странном состоянии на стороне бэкэнд. Когда это было исправлено, мой идентификатор приложения появился в нашей учетной записи организации, а затем плагин для ткани загрузил правильную версию файла Crashlytics.framework. После этого у меня нет никаких проблем с Apple Mach-O Linker Error, связанным с бинарниками Crashlytics.

Подведение итогов, если только у вас возникла проблема, описанная выше, или проблема с добавлением идентификатора приложения, напишите непосредственно в поддержку ткани и не теряйте время.

Спасибо, команда ткани :)!

+1

Это не делает * никаких * смысла и не может быть проблемой. Состояние вашего идентификатора приложения на каком-то удаленном сервере никак не влияет на компоновщик. – trojanfoe

+0

Да, вы правы, это также не имело никакого смысла для меня на несколько дней. Но в этом конкретном случае плагин для ткани отвечает за загрузку адекватных фреймворков (Fabric.framework & Crashlytics.framework). Хотя состояние идентификатора приложения было неправильным, плагин fabric обновил только Fabric.framework без Crashlytics.framework (у меня также не было версий новейших библиотек). Тогда у меня не было правильной версии бинарных файлов crashlytics, что привело к ошибке компоновщика. – losiennik

+0

Хорошо, это имеет смысл. – trojanfoe

0

Если вы решили не использовать CocoaPods, то вы, очевидно, используется 2-й вариант, поставив Run Script внутри Строительства фазам:

./Fabric.framework/run YourUniqueId!#[email protected]#%!#$%@#$^@$3295209582523#@%!#[email protected]%!#%235 

Сценарий запуска будет копировать файлы:

  • Crashlytics.framework
  • Fabric.framework

В ваш каталог проектов, но иногда этого недостаточно, и вам также нужно скопировать/привязать 2 фреймворка к вашему проекту Xcode.

Возможно использование двух фреймворков (до описанной выше процедуры копирования), но Xcode нуждается в ссылке на них.

Должен компилироваться после этого.

0

Эта проблема пришла ко мне, когда я обновил Xcode. Он был исправлен после удаления и установки более новой версии, а не обновления.

Смежные вопросы