Undefined символы для архитектуры x86_64 в Xcode после обновления Firebase

Я обновил FirebaseUI до последней версии и обновил TwitterCore 3.0.0 (был 2.8.0), с тех пор как я получил эту ошибку компилятора в Xcode:

Undefined symbols for architecture x86_64:
  "_TWTRIdentifierForAdvertising", referenced from:
      +[TWTRCardConfiguration deviceID] in TwitterKit(TWTRCardConfiguration.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

В настоящее время я вернусь к предыдущей версии TwitterCore, хотя это явно не было написано в моем подфайле. Я написал pod 'TwitterCore', '~>2.8.0'

Ответы

Ответ 1

Я исправил TwitterCore > 3.0.0 - проблема для FirebaseUI > 3.0.0 или update pod

pod 'FirebaseUI'
pod 'TwitterCore', '<=2.8.0' # fixed

Удачи.

Ответ 2

Я получил аналогичную ошибку ( "_TWTRIdentifierForAdvertising", на которую ссылается:) после обновления до Firebase 4.0.0, хотя я не использую TwitterCore. и разрешил его, исключив "FirebaseUI" из подкаса. Затем я заметил, что в Firebase DatabaseExample podfile, включенном в quickstart-ios, "FirebaseUI" был переименован в "FirebaseUI/Database". Я добавил его в podfile с правильным именем, и все выглядит нормально.

Ответ 3

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

В настоящий момент FirebaseUI версия 4.1.1 и TwitterKit >= 2.4 удовлетворяет ее требованиям, но согласно моему тесту последняя версия 2. * (которая теперь 2.8.1) генерирует ошибку с undefined.

Я проверил, что FirebaseUI 4.1.1 отлично работает с предыдущим TwitterKit 2.7. Поэтому мое решение - просто заставить te cocoapod установить эту версию.

Следуйте процедуре:

1) Добавьте эти два экземпляра в свой подфайл. (вы можете выборочно добавить подпрограммы FirebaseUI, если вы не хотите их устанавливать).

pod 'TwitterKit' , '2.7' 

pod 'FirebaseUI', '~> 4.0'

2) Запуск:

pod update

Ответ 4

Я решил это, используя:

# Uncomment this line to define a global platform for your project
platform :ios, '9.0'
# Uncomment this line if you're using Swift
use_frameworks!

target 'app name' do

#pod 'FirebaseUI'
pod 'FirebaseUI/Database'
pod 'Firebase/Storage'

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '3.0'
end
end
end
end

Итак, как вы можете видеть, я прокомментировал FirebaseUI и использовал FirebaseUI/Database для базы данных и Firebase/Storage для хранения.

Ответ 5

Это будет пример того, как определить версию podfile.

Exemple:

target 'Your_project' do

pod 'Firebase', '~> 1.0'

конец

Ответ 6

В моем случае это было просто прокомментировано:

# pod 'FirebaseUI/Twitter'

Ответ 7

В Xcode 9, Swift 3, Firebase

- > _TWTRIdentifierForAdvertising ", ссылка

Это помогает мне:

сначала добавьте в свой подфайл: pod 'FirebaseUI' , '~ > 4.0'

после того, как: Обновление pod

Ответ 8

Если вы используете его в тестировании. Вы должны добавить pod в цель MyAppTests.

например:

platform :ios, '9.0'

target 'MyApp' do
  use_frameworks!

  pod 'TwitterCore', '~>3.0.0'

  target 'MyAppTests' do
    inherit! :search_paths

    pod 'TwitterCore', '~>3.0.0'

  end

end