2015-06-15 4 views
373

У меня это новое предупреждение о Google Framework в моем приложении:Новые предупреждения в прошивке 9

(null): URGENT: all bitcode will be dropped because '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' was built without bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. Note: This will be an error in the future.

Xcode 7 дает мне около 204 предупреждений об этом же концепции, и я не мог обойти с этим. Также у меня есть проблема с доступом к сети из моего приложения. Это ошибка из Debugging Площадь:

-canOpenURL: failed for URL: "kindle://home" - error: "This app is not allowed to query for scheme kindle"

Все эти проблемы не присутствовали в прошивкой 8.

+0

Итак, вы включили биткод в своей целевой точке Xcode? – Droppy

+0

Извините, что я новичок в этом, вы можете рассказать мне, как вам понравиться? –

+0

Я никогда не делал этого, но это похоже на то, что вы должны умышленно задавать. Вы, кажется, сделали это. – Droppy

ответ

997

Ваша библиотека была собрана без битового кода, но вариант битового кода включена в настройках проекта. Скажите NO на номер Enable Bitcode в настройках сборки и настройках библиотеки, чтобы удалить предупреждения.

Для тех, кому интересно, если требуется включение битового кода:

Note: For iOS apps, bitcode is the default, but optional. If you provide bitcode, all apps and frameworks in the app bundle need to include bitcode. For watchOS apps, bitcode is required.

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

+0

@Centurion предыдущая google analytics lib устарела и не компилируется с помощью xcode 7/ios9 либо – zonabi

+1

@goelv да, вы должны иметь возможность отправлять приложения с отключенным битным кодом. это необязательно прямо сейчас. это может потребоваться в будущем. – zonabi

+2

НЕ работал для меня для архивирования. Проект Pre XCODE 7 работал нормально, теперь не может АРХИВ даже с Enable Bitcode установить NO. Это для библиотеки AWS. – ort11

106

После Xcode 7, вариант битового кода будет включен по умолчанию. Если ваша библиотека была собрана без битового кода, но вариант битового кода включен в настройках проекта, вы можете:

  1. Обновите библиотеку с разрядным кодом,
  2. Скажи НЕТ Включение битового кода в вашей целевой Строить Настройки

Enter image description here

И Библиотека сборки Параметры для удаления предупреждения.

Для получения дополнительной информации перейдите на страницу documentation of bitcode in developer library.

И WWDC 2015 Сессия 102: "Platforms State of the Union"

Enter image description here

15

Метод canOpenUrl в IOS-9 (из-за частную жизнь) изменилось, и не может свободно использовать больше. Поставщик баннера проверяет установленные приложения, чтобы они не отображали баннеры для уже установленного приложения.

Это дает все утверждения журнала, как

-canOpenURL: Сбой URL: «зажигать: // дома» - ошибка: «Это приложение не может запросить схемы разжигает»

Провайдеров должен обновить свою логику для этого.

Если вам нужно запросить установленные приложения/доступные схемы, вам необходимо добавить их в свой файл info.plist.

Добавьте ключ 'LSApplicationQueriesSchemes' к вашему plist как массив. Затем добавьте строки в этот массив, как «kindle».

Конечно, это не вариант для баннерной рекламы (поскольку они динамичны), но вы можете запросить этот способ для своих приложений или других приложений, таких как Twitter и Facebook.

Документация canOpenUrl: метод canOpenUrl:

Documentation about the LSApplicationQueriesSchemes key

+0

Предполагается, что статическая библиотека проверит возможность установки родительского приложения, как использовать исключение «LSApplicationQueriesSchemes» в статической библиотеке? Обычно у вас нет Info.plist. – loretoparisi

+0

Я не совсем уверен в этом, если библиотеке необходимо проверить приложения вне своего родителя, родитель должен определить URL-адрес в его info.plist (так документируйте его для фреймворка). Если canOpenUrl также возвращает no, то родительское приложение может обработать его, чем вы должны (я полагаю) также включить те, которые находятся в info.plist –

37

В моем случае для избежания этой проблемы:

  1. Убедитесь, что вы имеете дело с Xcode 7, НЕ нижние версии. В нижней версии этот флаг не существует.

  2. Установка: Project> Build Settings> Все> Построить Функции> Включить битовый код = NO

enter image description here

+2

Итак, вам придется перекомпилировать библиотеки, включенные в ваш проект, с XCode7 и с EnableBitcode, установленным в YES , Довольно сложно, если вы работаете со сторонними .a librarires. –

8

Отказ от ответственности: Это предназначено для тех, кто поддерживает continuous integration рабочий процесс, который требует автоматизированного обработать. Если вы этого не сделаете, используйте Xcode, как описано в Javier's answer.

Это работает для меня, чтобы установить 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.

10

Если вы используете 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 
-2

Этот вопрос был недавно фиксированным (ноябрь 2010) с помощью Google, см https://code.google.com/p/analytics-issues/issues/detail?id=671 , Но имейте в виду, что в качестве хорошего исправления это приносит больше ошибок :)

Вам также нужно будет следовать методу инициализации, приведенному здесь: https://developers.google.com/analytics/devguides/collection/ios/v2.

Последние инструкции помогут вам получить головную боль, потому что ссылаются на утилиты, не включенные в комплект. Ниже проиграет кокапопорт

// Configure tracker from GoogleService-Info.plist. 
NSError *configureError; 
[[GGLContext sharedInstance] configureWithError:&configureError]; 
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);