Неожиданный CFBundleExecutable ключ

98

Потратив некоторое время на поиск в Google, что-то мне подсказывает, что проблема новая.

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

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

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

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

Сборка прошла успешно, после отправки в iTunesConnect получаем следующее: введите описание изображения здесь

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

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

Думоко
источник
2
Вы решили эту проблему? Я тоже столкнулся с этой проблемой, но это GoogleMaps.bundle ...
Джонни,
1
Нет, не сейчас. Похоже, это общая проблема.
Думоко
Это действительно раздражает :(, я спросил на форуме разработчиков Apple, посмотрите, есть ли у кого-нибудь еще эта проблема. Forum.developer.apple.com/message/42851#42851
Johnny
Мы тоже видим это в новой интеграции со Startapp. Также iOS 9 и Xcode 7 beta 5.
Trey Bean
2
Моатаз из Instabug здесь. Можете ли вы заменить Instabug.bundle на этот dropbox.com/s/37zwhaqzatfnz3n/Instabug.bundle.zip?dl=0 , дайте мне знать, как это происходит
Моатаз Солиман

Ответы:

112

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

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

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

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

Sleiman
источник
2
спасибо, что поделились своим опытом! Так что это проблема автора библиотеки. Но мы, разработчики, не должны проделывать эти фокусы ... Например, я использую поды и систему CI. Я не могу перейти в CI и каждый раз после установки модуля делать это вручную. Но, по крайней мере, у нас это будет работать. Пока я ищу универсальное решение. Если это не произойдет в ближайшее время, я отмечу ваш ответ как тот, который помогает. Еще раз спасибо!
Dumoko
Я не могу этого сделать. Если я пытаюсь открыть info.plist внутри модуля в Xcode, он сказал мне, что файл заблокирован и изменения не будут сохранены (а это не так). Если я использую внешний текстовый редактор, я вижу, что содержимое файла plist каким-то образом закодировано, это не простой текст.
Майк Кескинов
@MikeKeskinov, может ли эта ссылка быть полезной: [ apple.stackexchange.com/questions/68646/… ? Он предлагает найти info.plist в Finder и отредактировать права доступа к файлу, чтобы вы могли редактировать его в Xcode.
Sleiman
У меня тоже была аналогичная проблема, и я сообщил об этом в Apple. Ваши шаги абсолютно правильны, как предлагает Apple. bugreport.apple.com/problem/viewproblem
Авинаш
Я написал сценарий оболочки, чтобы удалить это в качестве временного решения. Вы добавляете это в качестве сценария выполнения на этапах
Ying
52

Обнаружил это AviarySDKв Xcode 7 GM при отправке в App Store.

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

Cmd + Shift + O и введите "Info.plist", затем вы сможете найти соответствующий файл:

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

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

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

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

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

Адам С
источник
Вы знаете, каковы побочные эффекты этого? У меня такая же проблема с пакетом Polljoy. Считаете ли вы, что запись просто в списке ошибочно?
Stoff81
1
«Xcode автоматически добавляет этот ключ в файл списка свойств информации соответствующих проектов». Извините, я не могу рассказать вам о побочных эффектах, однако я подозреваю, что это связано с использованием более старой библиотеки, которая не была распространена с поддержкой Frameworks, а затем Xcode пытается относиться к ней так же, как к той, которая имеет поддержку для Frameworks.
Adam S
К сожалению, для некоторых библиотек (например, AppIndexing и т. Д.) Содержимое файла plist кажется зашифрованным. Это позволяет просматривать, но не сохраняет никаких изменений. При попытке открыть файл вне XCode становится ясно, что файл зашифрован (без обычного текста).
Майк Кескинов
это сработало для входа в Google и позволило мне загрузить в магазин приложений
Джеймс
2
Я только что обнаружил ту же проблему с Aviary и Cocoapods 0.39. Предлагаемое вами решение, похоже, работает. Похоже, пришло время перекусить и перейти на AdobeCreativeSDK :(
Keab42 01
11

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

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

Убедитесь, что "Код типа пакета" равен BNDL.

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

Прикрепленные скрины так и должны быть его "info.plist", перечисленным над каждым пакетом.

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

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

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

Джонатан Ноласко Барриентос
источник
9

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

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

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

Уильям Энтрикен
источник
Можете ли вы мне помочь в этом: stackoverflow.com/questions/39512387/…
NaXir
5

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

Ищем info.plistв Project Navigator проектов как на следующем изображении:

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

Теперь открыли эти info.plistфайлы один за другим и удалили BundleExecutableключ, ЗА ИСКЛЮЧЕНИЕМ целевогоinfo.plist

Теперь проект очищен и выполнен, и он отправлен без проблем.

Манаб Кумар Мал
источник
4

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

Удачного программирования.

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

Умар Фарук
источник
1

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

InitialC
источник
0

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

Джимеджим
источник
0

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

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

Квентин
источник
0

Я просто добавил слово «BNDL» в соответствующее место в «Коде plistтипа ОС для создателя пакета ».

Это была проблема

Алексей Дударев
источник
0

В моем случае я просто перетаскиваю SDKвключаемый info.plistфайл папки In, который не используется. Это создает для меня проблему. Так что найдите неиспользуемый info.plistфайл и удалите его из исходного кода.

Крунал Нагвадия
источник