Подтвердить что ты не робот

GoogleMapsSDK: Undefined символы для архитектуры x86_64

Я пытаюсь установить SDK карт Google, и я запускаю эту ошибку при запуске:

Undefined symbols for architecture x86_64:
  "_CBAdvertisementDataManufacturerDataKey", referenced from:
      -[GMSx_PEBeaconScanner centralManager:didDiscoverPeripheral:advertisementData:RSSI:] in GoogleMaps(PEBeaconScanner.o)
  "_CBAdvertisementDataServiceDataKey", referenced from:
      -[GMSx_PEBeaconScanner centralManager:didDiscoverPeripheral:advertisementData:RSSI:] in GoogleMaps(PEBeaconScanner.o)
  "_CBCentralManagerScanOptionAllowDuplicatesKey", referenced from:
      -[GMSx_PEBeaconScanner scanIfAppropriate] in GoogleMaps(PEBeaconScanner.o)
  "_OBJC_CLASS_$_CBCentralManager", referenced from:
      objc-class-ref in GoogleMaps(PEBeaconScanner.o)
  "_OBJC_CLASS_$_CBUUID", referenced from:
      objc-class-ref in GoogleMaps(PEBeacon.o)
      objc-class-ref in GoogleMaps(PEBeaconScanner.o)
  "_vImageBoxConvolve_Planar8", referenced from:
      (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
4b9b3361

Ответ 1

Я заметил следующие изменения, когда я обновил приложение, использующее старый SDK карт Google, который был установлен вручную:

  • Необходимо связать с CoreBluetooth.framework и Accelerate.framework в фазах сборки → Связывание с библиотеками.
  • Флаг -all_load в разделе "Другие флаги компоновщика" приведет к ошибкам "дублировать символ". (Вместо этого используйте -ObjC.)

Если вы используете метод установки CocoaPods (в ​​соответствии с их текущими инструкциями), он должен принимать необходимые фреймворки, но он все равно будет испорчен -all_load.

Ответ 2

убедитесь, что следующие включены

Структура и пакет SDK GoogleMaps

GoogleMaps (с расширением .framework) присутствует в вашем корневом каталоге (где находится ваш .xcodeproj)

GoogleMaps (с расширением .bundle) ссылается на ваш проект xcode

Следующие структуры

Accelerate.framework

AVFoundation.framework

CoreBluetooth.framework

CoreData.framework

CoreGraphics.framework

CoreLocation.framework

CoreText.framework

GLKit.framework

ImageIO.framework

LibС++. Dylib

libicucore.dylib

libz.dylib

OpenGLES.framework

QuartzCore.framework

Security.framework

SystemConfiguration.framework

Настройки сборки

Значение архитектуры в ваших настройках проекта включает armv7.

Другие флаги компоновщика имеют -ObjC, если нет, добавьте его

Ответ 3

**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)**

This required "Accelerate.framework". So, please add it.

Steps:
1)Build Phases -> Link Bundle with Libraries.
2)Click "+",
3)Select "Accelerate.framework". Finish.

===================================

Others errors required "CoreBluetooth.framework. So, please add it also in similar way.

Ответ 4

Похоже, Google API нуждается в CoreBluetooth для местоположения Beacon. Ссылка на CoreBluetooth.framework в фазах сборки и все должно быть хорошо.

enter image description here

EDIT: Не забудьте установить GoogleMaps с помощью этих инструкций, чтобы избежать любой проблемы: https://developers.google.com/maps/documentation/ios/start

Ответ 5

У меня такая же проблема, в моем случае у меня есть 2 ссылки на GoogleMap.framework, я удалил старую ссылку на структуру и проблема решена:)

  • Нажмите на проект
  • В Фазы сборки Связать двоичные файлы с библиотеками → Проверить наличие дублирующей ссылки для GoogleMaps.framework
  • Если да, то удалите один, который вы не добавили.

Ответ 6

**_vImageBoxConvolve_Planar8, referenced from: (anonymous namespace)::CreateBlurredImage(CGImage*, double, double) in GoogleMaps(GLWaterGroup.o)**

This required "Accelerate.framework". So, please add it.

Steps:
1)Build Phases -> Link Bundle with Libraries.
2)Click "+",
3)Select "Accelerate.framework". Finish.

Ответ 7

Удаление флага -all_load из (Targets- > Build Settings- > Other linker flag) разрешило мою проблему при использовании cocoa pods.

Ответ 8

Если кто-то испытывает это сегодня, связывание двоичного CoreLocation.framework в настройках сборки CoreLocation.framework мне