Новые предупреждения в iOS 9
У меня есть новое предупреждение о Google Framework в моем приложении:
(null): СРОЧНО: весь битовый код будет удален, потому что '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/ имя_файла /appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' был создан без битового кода, Вы должны перестроить его с включенным битовым кодом (настройка Xcode ENABLE_BITCODE), получить обновленную библиотеку от поставщика или отключить битовый код для этой цели. Примечание: это будет ошибкой в будущем.
Xcode 7 дает мне около 204 предупреждений об этой же концепции, и я не мог обойтись с этим. Также у меня проблема с доступом к сети из моего приложения. Это ошибка из области отладки:
-canOpenURL: сбой для URL: "kindle://home" - ошибка: "Это приложение не может запрашивать схему kindle"
Все эти проблемы отсутствовали в iOS 8.
8 ответов
Ваша библиотека была скомпилирована без битового кода, но опция битового кода включена в настройках вашего проекта. Сказать NO
в Enable Bitcode
в ваших целевых настройках сборки и настройках сборки библиотеки, чтобы удалить предупреждения.
Для тех, кто интересуется, требуется ли включение биткода:
Примечание. Для приложений iOS битовый код используется по умолчанию, но не является обязательным. Если вы предоставляете битовый код, все приложения и платформы в комплекте приложений должны включать битовый код. Для приложений watchOS требуется битовый код.
После Xcode 7 опция битового кода будет включена по умолчанию. Если ваша библиотека была скомпилирована без битового кода, но опция битового кода включена в настройках вашего проекта, вы можете:
- Обновите свою библиотеку с помощью битового кода,
- Скажите "НЕТ", чтобы включить биткод в настройках вашей цели
И настройки сборки библиотеки, чтобы убрать предупреждения.
Для получения дополнительной информации, перейдите к документации битового кода в библиотеке разработчика.
И WWDC 2015 Сессия 102: "Платформа Государство Союза"
В моем случае, чтобы избежать этой проблемы:
Убедитесь, что вы имеете дело с Xcode 7, а не с более низкими версиями. В нижней версии этот флаг не существует.
Настройка: Проект> Параметры сборки> Все> Параметры сборки> Включить битовый код = НЕТ
Метод canOpenUrl
в iOS 9 (из-за конфиденциальности) изменен и больше не может использоваться бесплатно. Ваш провайдер баннеров проверяет наличие установленных приложений, чтобы они не отображали баннеры для уже установленного приложения.
Это дает все записи журнала, как
-canOpenURL: сбой для URL: "kindle://home" - ошибка: "Это приложение не может запрашивать схему kindle"
Поставщики должны обновить свою логику для этого.
Если вам нужно запросить установленные приложения / доступные схемы, вам нужно добавить их в свой info.plist
файл.
Добавьте ключ 'LSApplicationQueriesSchemes' в ваш список в виде массива. Затем добавьте строки в этот массив как "kindle".
Конечно, на самом деле это не вариант для рекламных баннеров (поскольку они динамические), но вы все равно можете запросить таким образом свои собственные приложения или конкретные другие приложения, такие как Twitter и Facebook.
Документация о canOpenUrl: метод canOpenUrl:
Если вы используете CocoaPods и хотите отключить битовый код для всех библиотек, используйте следующую команду в Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
Отказ от ответственности: это предназначено для тех, кто поддерживает непрерывный рабочий процесс интеграции, которые требуют автоматизированного процесса. Если вы этого не сделаете, пожалуйста, используйте Xcode, как описано в ответе Хавьера.
Это сработало для меня, чтобы установить ENABLE_BITCODE = NO
через командную строку:
find . -name *project.pbxproj | xargs sed -i -e 's/\(GCC_VERSION = "";\)/\1\ ENABLE_BITCODE = NO;/g'
Обратите внимание, что это может быть нестабильным в разных версиях Xcode. Он был протестирован с Xcode 7.0.1 и как часть проекта Cordova 4.0.
Чтобы решить проблемы с ошибкой canOpenURL. Это из-за новой функции App Transport Security в iOS9
Прочтите этот пост, чтобы решить эту проблему http://discoverpioneer.com/blog/2015/09/18/updating-facebook-integration-for-ios-9/
Эта проблема была недавно исправлена (ноябрь 2010 г.) компанией Google, см. https://code.google.com/p/analytics-issues/issues/detail?id=671. Но имейте в виду, что в качестве исправления это приносит больше ошибок:)
Вы также должны будете следовать методу инициализации, указанному здесь: https://developers.google.com/analytics/devguides/collection/ios/v2.
Последние инструкции приведут вас к головной боли, потому что они ссылаются на утилиты, не включенные в модуль. Ниже не получится с Cocoapod
// Configure tracker from GoogleService-Info.plist.
NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);