2015-08-19 5 views
90

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

У нас был полностью функциональный проект, поддерживающий iOS7-8. Конечно, это было несколько раз успешно отправлено в AppStore.

Мы используем стручки, много отслеживания и мониторинга, такие как GA и Instabug.

Теперь мы решили отправить версию приложения, построенного на Xcode 7 на iOS 9, в TestFlight.

Мы отключили биткод, поскольку многие контейнеры, такие как Flurry и другие готовые библиотеки, не включают его.

Билд был успешным, после представления iTunesConnect мы получаем это: enter image description here

У нас было то же самое для GoogleAppIndexing библиотеки (в стручках тоже), но мы удалили его, просто чтобы сделать его работу. Теперь - Instabug. Это слишком далеко, поэтому я пытаюсь понять, что происходит в iOS 9, и каковы изменения, которые привели к тому, что полностью рабочий проект начал бросать такие ошибки.

Любые мысли и идеи приветствуются! Пожалуйста, поделитесь своим опытом, и если я что-то пропущу, я с радостью поделюсь своими шагами.

+1

ли решить эту проблему вы? Я тоже сталкиваюсь с этой проблемой, но это GoogleMaps.bundle ... – Johnny

+1

Нет, еще нет. Похоже, это общая проблема. – Dumoko

+0

Это действительно раздражает :(, я спросил на форуме Apple Developer, посмотрим, есть ли у кого-то еще такая проблема. Https://forums.developer.apple.com/message/42851#42851 – Johnny

ответ

106

Я столкнулся с такой же проблемой сегодня с тем же точным сообщением об ошибке при попытке отправить наше приложение (используя Xcode 7 beta 5), ​​но вместо instabug.bundle бит это было для меня TencentOpenApi_IOS_Bundle.bundle.

Я решил проблему, найдя именованный пучок в проекте, а затем, как и сообщение об ошибке, - отредактировал Info.plist, который находится в комплекте, удалив ключ CFBundleExecutable. Ключ CFBundlePackageType уже был установлен в BNDL, поэтому я его не трогал.

После этих изменений я сделал Product> Clean, а затем без проблем отправил приложение в App Store.

Надеюсь, это поможет.

+2

благодарим вас за обмен опытом! Так что это проблема с автором библиотеки. Но мы, разработчики, не должны делать эти трюки ... Например, я использую контейнеры и систему CI. Я не могу войти в CI, и каждый раз после установки pod это ручное изменение. Но, по крайней мере, мы будем работать. Пока я ищу универсальное решение. Если это не скоро, то я помету ваш ответ как тот, который помогает. Еще раз спасибо! – Dumoko

+0

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

+0

@MikeKeskinov, может ли эта ссылка быть полезной: [http://apple.stackexchange.com/questions/68646/how-do-i-unlock-a-plist-file-so-that-i-can-change-it ]? Он предлагает найти info.plist в Finder и отредактировать разрешения файла, чтобы вы могли редактировать его в Xcode. – Sleiman

50

Обнаружили это с помощью AviarySDK на Xcode 7 GM, отправляя в App Store.

Прежде всего, я бы уточнил, есть ли у вас последняя версия вашей библиотеки - возможно, поставщик уже исправил это. Однако, если вы все еще сталкиваетесь с этой проблемой, поскольку Sleiman описывает, что вам нужно удалить ключ CFBundleExecutable из файла plist для библиотеки-нарушителя.

Cmd + Shift + O и типа "Info.plist", вы можете найти подходящий файл:

enter image description here

После редактирования PLIST, вы можете видеть описательные имена (вместо CFBundleExecutable . и другие клавиши, я не мог редактировать этот файл во внешнем редакторе, так что мне пришлось переключиться, чтобы просмотреть исходные ключи/значения, щелкнув правой кнопкой мыши на списке:

enter image description here

Вы теперь можно увидеть ключ CFBundleExecutable (который имеет описание «Исполняемый файл»), который вы можете удалить.

Для AviarySDK я сделал это дважды, один раз за каждый , который был показан на изображении выше, и был тогда успешно отправлен.

+0

Знаете ли вы, что это за побочные эффекты? У меня такое же выпуске с пакетом Polljoy. Считаете ли вы, что запись только в plist ошибочно? – Stoff81

+1

[«Xcode автоматически добавляет этот ключ в файл списка свойств информации соответствующих проектов».] (https://developer.apple.com/library/ИОС/документация/Общие/Справка/InfoPlist KeyReference/Articles/CoreFoundationKeys.html # // apple_ref/doc/uid/20001431-101909) Извините, я не могу сказать вам о побочных эффектах, однако я подозреваю, что это связано с использованием старой библиотеки, которая не была распространена с поддержкой Framework, а затем Xcode пытается обработать его так же, как тот, который поддерживает поддержку Framework. –

+0

К сожалению, для некоторых библиотек (например, AppIndexing и т. Д.) Содержимое файла plist, кажется, введено в действие. Это позволяет просматривать, но не сохраняет никаких изменений. При попытке открыть файл за пределами XCode ясно, что файл зашифрован (нет обычного текста). –

5

Если сборка подается через Менее (<) Xcode 7,0 затем он будет представлен, а также я решил ее следующим образом для Xcode 7:

Искали info.plist в проектах Project Navigator, как как на рисунке ниже:

enter image description here

Теперь открыл эти info.plist файл s один на один и удалил BundleExecutable ключ КРОМЕ info.plist

Теперь очищенного проект цели и достигнуто, и это представляется с не проблемой.

11

я решить эту проблему следующим образом: Мы должны удалить все "Исполняемые файлы" из следующих пакетов:

  • GooglePlus.bundle
  • GPPCommonSharedResources.bundle
  • GPPShareboxSharedResources.bundle

Убедившись, что «код типа пучка» равен BNDL

Важно: ничего не редактируйте в файле info.plist основного проекта.

Прикрепленные экраны как они должны быть его «info.plist», перечисленные выше каждого пакета.

enter image description here

enter image description here

enter image description here

0

Еще одно замечание: иногда, если у вас есть дополнительные цели там будут целевые свойства, которые могут также включать в себя ключ (в разделе «Информация»), так не забудьте проверить их и удалить из него. Я обнаружил это с одним из пакетов, которые я пытался включить. Я удалил информацию из plist, но продолжал получать ошибку.

0

Если вы видите эту ошибку из библиотеки, установленной с помощью CocoaPods, попробуйте pod update <OFFENDING POD NAME>

Это решило проблему для меня.

8

Вот что работал для меня

  1. Яблочно-Shift-F, поиск CFBundleExecutable
  2. Нажмите каждый, кроме "PODS" или вашей основной цели
  3. удалить его (удалить ключ)

enter image description here

+0

Можете ли вы помочь мне в этом: http://stackoverflow.com/questions/39512387/app- обработка ошибок, неожиданная-cfbundleexecutable ключ – NaXir

4

Я была такая же проблема в Google Maps библиотеки я удалить CFBundleExecutable ключ внутри GMSCoreResources.bundle (Info.plist), который является проектом проекта Info.plist SDK и загружается в AppStore.

Счастливое программирование.

enter image description here

1

Просто проверить Параметры построения => Включен битовый код, и установить его НЕТ

Смежные вопросы