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)
Ответы
Ответ 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
мне