Проблема компоновщика Xcode 7 с SDK Google Maps

Я только что загрузил Xcode 7 beta 4 и пытаюсь создать свое приложение Swift 2.0, но получаю следующую ошибку, решение которой я не могу найти:

ld: предупреждение: -weak_framework обрабатывается как -framework при использовании с -bitcode_bundle (настройка Xcode ENABLE_BITCODE = YES). Слабое связывание все еще может происходить из-за разметки доступности в заголовках ld: «путь / Pods / GoogleMaps / Frameworks / GoogleMaps.framework / GoogleMaps (GMSBillingPointRecorder.o)» не содержит битового кода. Вы должны перестроить его с включенным битовым кодом (параметр Xcode ENABLE_BITCODE), получить обновленную библиотеку от поставщика или отключить битовый код для этой цели. для архитектуры arm64 clang: ошибка: сбой команды компоновщика с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

Кто-нибудь знает, как исправить эту проблему?


person KPath001    schedule 26.07.2015    source источник
comment
Какую версию GoogleMaps вы используете?   -  person Vlad Papko    schedule 27.07.2015
comment
Я установил его с помощью стручка какао, и он говорит, что установил карты Google 1.10.1   -  person KPath001    schedule 27.07.2015
comment
Как ни странно, я создал новый проект в Xcode 7 beta 4 и установил Google Maps 1.10.1 с помощью какао-стручков. Все нормально работает. Я посоветую вам создать новый проект и перенести исходные файлы из текущего проекта. Также попробуйте изменить значение флага ENABLE_BITCODE в настройках вашего проекта. В моем случае он работает с любым значением (true, false) этого флага.   -  person Vlad Papko    schedule 27.07.2015
comment
Хорошо, я попробую и вернусь к вам ..... спасибо за предложение   -  person KPath001    schedule 27.07.2015
comment
Я обновил комментарий, перед созданием нового проекта попробуйте изменить значение флага ENABLE_BITCODE.   -  person Vlad Papko    schedule 27.07.2015
comment
Я новичок с новым Xcode, как мне это сделать?   -  person KPath001    schedule 27.07.2015


Ответы (4)


Установка флага ENABLE_BITCODE на NO решает проблему.

Для тех, кто задается вопросом, безопасно ли его отключить. Да, это так.

Согласно Apple Doc

Битовый код (iOS, watchOS)

Битовый код - это промежуточное представление скомпилированной программы. Приложения, которые вы загружаете в iTunes Connect и которые содержат битовый код, будут скомпилированы и связаны в App Store. Включение битового кода позволит Apple повторно оптимизировать двоичный код вашего приложения в будущем без необходимости отправлять новую версию вашего приложения в магазин.

Xcode по умолчанию скрывает символы, сгенерированные во время сборки, поэтому Apple не может их прочитать. Только если вы решите включать символы при загрузке приложения в iTunes Connect, символы будут отправлены в Apple. Вы должны включать символы, чтобы получать отчеты о сбоях от Apple.

Примечание. Для приложений iOS битовый код используется по умолчанию, но не является обязательным. Если вы предоставляете битовый код, все приложения и платформы в комплекте приложений должны включать битовый код. Для приложений watchOS требуется битовый код.

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

Изменить: в Xcode 7 вы загружаете свое приложение в iTunes и подключаетесь в промежуточном состоянии, называемом Bitcode. Когда пользователи загружают ваше приложение, App Store автоматически создает оптимизированную версию вашего приложения (т. Е. 64-битную при необходимости), соответствующую устройству, которое использует пользователь.

На данный момент мы можем отключить битовый код и дождаться обновления SDK Google Maps.

ОБНОВЛЕНИЕ

SDK 1.11.0 - теперь поддерживает Bitcode

https://developers.google.com/maps/documentation/ios-sdk/releases?hl=en

Ресурсы:

Влияние параметров сборки Xcode Включить битовый код Да / Нет

https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html.

https://www.hackingwithswift.com/ios9

person Teffi    schedule 18.09.2015
comment
Проблема с API GoogleMaps отслеживается здесь: code.google .com / p / gmaps-api-issues / issues / detail? id = 8219, проголосуйте за него, если он вам нужен. - person Mariano Paniga; 23.11.2015

Я изменил флаг ENABLE_BITCODE на Нет и правильно скомпилировал, спасибо @Visput за ответ

person KPath001    schedule 27.07.2015
comment
Разве ENABLE_BITCODE не является обязательным для развертываний в магазине приложений? У меня, кстати, такая же проблема с ним GMSBillingPointRecorder.o не содержит битовый код - person decades; 17.09.2015
comment
@decades: не для iOS - person user102008; 06.10.2015

Чтобы было понятно, где отключить битовый код: Target -> Build Settings -> Enable Bitcode -> No

Отключить битовый код

Изображение в формате GIF любезно предоставлено @stevechen

person nikans    schedule 15.11.2015

Google решил эту проблему в SDK версии 1.11.0 - декабрь 2015 г. См. примечания к выпуску:

Битовый код теперь включен в двоичный пакет SDK для всех архитектур устройств. (ошибка 8219).

person ehhhuang    schedule 01.12.2015