Использование Google Maps SDK с Parse.com Project iOS Swift

Я работаю над проектом (xcode 6.3+, swift), используя Parse SDK (parse.com) для обработки данных. Недавно мы решили использовать Google Maps SDK, чтобы предоставить пользователю маршруты с помощью API направлений. Поскольку вы можете использовать этот API без карты Google, я начал его интегрировать. Это мой первый раз с какаоподами, поэтому я последовал инструкции и начал играть.

pod init для создания файла спецификаций модуля

вот мой конфиг из гугл начального руководства

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'
pod 'GoogleMaps'

pod install, затем запуск проекта с помощью .xworkspace

Я напрямую пытаюсь построить проект, и он возвращает 34 ошибки. тип ошибки всегда один и тот же: Apple Match-O Linker Error

введите здесь описание изображения

введите здесь описание изображения

Итак, я начинаю искать в Google, потому что я сделал то же самое с пустым проектом, и все работало очень хорошо.

Я начинаю находить информацию о том, что использование Parse SDK вызывает конфликты с флагами компоновщика -ObjC, которые необходимы для работы GoogleMaps. большинство ответов дают два возможных решения:

<сильный>1. добавить платформу Facebook-iOS-SDK

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

<сильный>2. Принудительно загрузите платформу GoogleMaps, заменив флаг -ObjC следующим

-force_load $(PROJECT_DIR)/Pods/GoogleMaps/Frameworks/GoogleMaps.framework

это также возвращает ошибку: введите здесь описание изображения

так что теперь я совершенно потерял способ решить эту проблему. Кто-нибудь нашел способ интегрировать GoogleMaps SDK с Parse?

ОБНОВЛЕНИЕ

Я попробовал другой подход, внедрив GoogleMaps без кокоаподов. Для этого я использовал этот метод: GoogleMaps без CocoaPods.

Кажется, он правильно интегрируется, но флаг -ObjC остается. С использованием

-force_load $(PROJECT_DIR)/GoogleMaps.framework/GoogleMaps

теперь отвечает, но вызывает duplicate symbols for architecture x86_64errors. не может, кажется, найти способ исправить это.


person SKYnine    schedule 11.11.2015    source источник


Ответы (2)


Вам нужно сделать это

Нажмите на свой проект (цели). Нажмите «Настройки сборки» в разделе «Пути поиска фреймворка» (укажите путь к фреймворку).

Щелкните правой кнопкой мыши папку вашего фреймворка (например, GoogleMaps.framework), выберите «Получить информацию», скопируйте путь из «Общие» -> «Где» и вставьте этот путь в путь поиска вашего фреймворка (путь должен содержать одну строку). Удачи.

person BilalReffas    schedule 11.11.2015
comment
к сожалению, это тоже не работает. в пути поиска уже есть $(унаследовано) и $(PROJECT_DIR). при добавлении пути к фреймворку google он не действует, а при удалении унаследованного или project_dir не находит фреймворк google и возвращает другую ошибку. кажется, уже импортировано правильно. - person SKYnine; 11.11.2015

Итак, мне удалось найти работающее решение для интеграции GoogleMaps Sdk и Parse с какаоподами и без них. Однако использование флагов -ObjC в GoogleMaps вынудило меня интегрировать FacebookSDK в уравнение. Я не мог найти способ заставить это работать без него

Таким образом, эта конфигурация работает с xcode 6.3+, и для нее требуется использовать и более старую версию Facebook SDK (если не используются кокаоподы).

С CocoaPods

1/. Добавьте Parse SDK, как описано на их веб-сайте. (существующая версия проекта)

2/. Добавьте дополнительные платформы (AdSupport, Account и Social), а также libstdc++.6.dylib

3/. Откройте терминал в корневую папку

4/. $ pod init

5/. откройте Podfile и замените содержимое следующим:

use_frameworks! 
platform :ios, ‘8.0’
pod 'GoogleMaps'

6/. $ pod install затем $ pod update

7/. загрузите FacebookSDK по этой ссылке

8/. Добавьте FBSDKCoreKit и FBSDKLoginKit фреймворки в свой проект

9/. построить свой проект.

Если произойдет какая-то ошибка, возможно, вам придется удалить ParseFacebookUtils.framework из вашего проекта и оставить только ParseFacebookUtilsV4.

Без CocoaPods

Таким образом, это почти та же процедура, за исключением того, что вместо использования модулей для установки SDK GoogleMaps вы интегрируете его вручную, используя ссылку, указанную в вопросе, или перейдя к модулям GoogleMaps и получив доступ к исходному URL-адресу для загрузки последнего.

Обязательно добавьте GoogleMaps.framework, а также GoogleMaps.bundle, который можно найти, щелкнув правой кнопкой мыши GoogleMaps.framework /показать в поисковике в разделе "Ресурсы". Перетащите в проект и убедитесь, что он связан с настройками сборки проекта/Копировать ресурсы пакета.

Кроме того, убедитесь, что все необходимые фреймворки и библиотеки перечислены в ссылке, указанной в вопросе.

Добавьте флаг -ObjC в разделе Build Settings/Other Linker Flags.

Когда дело доходит до интеграции FacebookSDK, я заметил, что использование последней версии не работает. По-видимому, он был подготовлен для работы с xcode 7. Обойти это, просто загрузив более старую версию здесь

Добавьте в проект FBSDKCoreKit и FBSDKLoginKit, и все будет готово. Надеюсь, что это поможет кому-то, потому что это было больно, чтобы сделать эту работу...

person SKYnine    schedule 12.11.2015