Не удается загрузить двоичный файл приложения в App Store - PullRequest
5 голосов
/ 02 февраля 2010

Мы наконец-то добрались до того, что отправили наше первое приложение для iPhone в магазин приложений (или пытаемся), но я не могу заставить iTunes Connect принять загрузку.

Я пытался как через веб-сайт («Загруженный вами двоичный файл был недействительным. Подпись была недействительной, так и не подписана с помощью сертификата отправки Apple.»), Так и с помощью Application Loader («Info.plist не содержит CFBundleResourceSpecification ").

После долгих чтений (включая подобные вопросы ), перечитывания и поиска в Google я могу сказать, что:

  • Я уверен, что идентификатор пакета совпадает с AppID.
  • Существует Icon.png, это PNG-файл размером 57x57 пикселей, и это точное имя в Info.plist.
  • Я делаю устройство, а не симулятор, сборка.
  • Процесс подписания успешен: результаты сборки показывают это, а выполнение codesign -vvvv MyApp.app не указывает на проблемы.
  • В пути к ZIP-файлу нет странных символов.
  • Я несколько раз удалял папку сборки и перестраивал бинарный файл.

Теперь верно, что в встроенном приложении Info.plist не содержит ключ CFBundleResourceSpecification, но мне совершенно не ясно, откуда это значение или что мне еще нужно добавить. сделать эту работу. (Единственная ссылка, которую я могу найти, используя поиск Apple, это некоторые заметки о выпуске подписи кода ... но, как я уже упоминал выше, шаг подписания кода, насколько я могу судить, выполняется успешно.)

Кто-нибудь сталкивался с какими-либо объяснениями этой проблемы, которые я уже не упоминал?

РЕДАКТИРОВАТЬ: Вот (слегка отредактированный) вывод из шага подписи кода сборки, FWIW:

скриншот подписи кода http://img70.yfrog.com/img70/8988/codesign.png

Ответы [ 7 ]

10 голосов
/ 03 февраля 2010

Проблема, похоже, заключалась в том, что я использовал json-framework в своем приложении и включил его в качестве дополнительного SDK для инструкций в вики . Я предполагаю, что XCode смутился из-за наличия> 1 SDK и, таким образом, не смог найти ResourceRules.plist по умолчанию, как он должен.

Я нашел два решения (ну, во всяком случае, обходные пути):

  1. Используйте параметр сборки «Путь к правилам ресурса подписи кода» (по умолчанию он пуст), чтобы указать путь к файлу, который должен использовать XCode: $(SDKROOT)/ResourceRules.plist. Это работает, и кажется достаточно безвредным, но разочаровывает в том смысле, что XCode должен быть способен понять это самостоятельно. (Я нашел это решение в очень старой проблеме , поданной на json-framework.)
  2. Не используйте подход SDK. Вместо этого просто включите файлы непосредственно в проект и обновите операторы #import локальными путями. Именно такой подход я и выбрал, поскольку мы приняли общее решение о включении всех внешних зависимостей в сам проект (чтобы другие разработчики меньше настраивали на своих машинах для запуска и запуска).

Я не уверен, является ли это ошибкой в ​​XCode или что-то не так с json-framework, но я подал проблему на последнюю на всякий случай.

ОБНОВЛЕНИЕ, 30 июня 2010 г .: проблема, которую я подал, была закрыта, и г-н Браутасет планирует отказаться от поддержки опции SDK в следующей версии (2.3) проекта. Кроме того, код теперь находится на GitHub , хотя страницы с кодами Google все еще существуют.

1 голос
/ 17 декабря 2010

Для меня, после проверки всех вещей (код знака, значок файла ...), но вы не можете загрузить приложение, попробуйте удалить встроенный файл. Не забудьте скопировать файл .app, чтобы сжать ваше приложение.

0 голосов
/ 10 февраля 2011

Для меня решением было создание дистрибьюторской сертификации по адресу: Портал подготовки разработчиков Apple .

0 голосов
/ 27 августа 2010

Это сообщение может появиться по другой причине (как я только что обнаружил сегодня утром): если в вашем проекте несколько Info.plists, Application Uploader может обнаружить «неправильный» Info.plist и запутаться.

Это происходило со мной, потому что автоматизированная часть сборки создавала Info.plist в пакете, введенном в проект.

Шляпка здесь для решения: http://infinite -sushi.com / 2010/08 /-случай-оф-недостающего-cfbundleresourcespecification /

0 голосов
/ 03 февраля 2010

Вы выполняете сборку / копирование / архивирование из командной строки? Если это так, вы должны быть очень осторожны с символическими ссылками. .app поставляется с подкаталогом в виде символической ссылки на другой, и если вы скопируете его или заархивируете его без правильных флагов, он скопирует содержимое, что перепутано с кодовым обозначением.

Это случилось со мной - и хуже всего то, что специальные сборки работают нормально без символической ссылки, так что вы не заметите проблему до сборки магазина приложений.

0 голосов
/ 03 февраля 2010

Я полагаю, вы загружаете ZIP-файл.

Я только что проверил загруженное приложение, и CFBundleResourceSpecification присутствует только в подписанных версиях (т. Е. Устройство собирается).

0 голосов
/ 02 февраля 2010

Вы уверены, что создаете дистрибутив, а не разработку, сертификат и мобильное обеспечение?

...