Неожиданный 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, а затем без проблем отправил приложение в магазин приложений.

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


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", перечисленным над каждым пакетом.

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

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

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



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

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


0

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


0

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

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



0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.