Неверный двоичный файл приложения для iPhone


Я пытаюсь загрузить приложение в магазин приложений iPhone, но я получаю это сообщение об ошибке из iTunes Connect:

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


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

общую информацию о подаче приложений для iPhone в магазин приложений см. В разделе шаги для загрузки приложения iPhone в AppStore.

30 77

30 ответов:

Это был мой опыт, что Xcode иногда путается о том, какой сертификат подписи использовать. Я привык выходить и перезапускать Xcode после любого изменения настроек подписи кода (и делать чистую сборку), чтобы обойти эту проблему.

Я просто хотел упомянуть, что у меня тоже была проблема с zip из команды и линия тоже. Проблема заключается в том, как он обрабатывает символические ссылки по умолчанию. Использование:

zip-y-r myapp.застегни мое приложение.приложение

решил эту проблему.

у меня был тот же вопрос и решил его таким образом:

сертификаты собственности были установлены на моей машине разработки и mobileprovision.embedded был включен в архив дистрибутива. Через час или около того погуглить и копать я нашел источник ошибки. Внутри Xcode я скопировал конфигурацию выпуска и создал новую конфигурацию распространения, а затем изменил идентификатор подписи на мой сертификат распространения. Однако, несмотря на то, что он был обновлен в графическом интерфейсе файл проекта не был обновлен правильно.

Если вы столкнетесь с той же ошибкой, посмотрите в своем [Имяпроекта].каталог xcodeproj для проекта.pbxproj файл и открыть его в вашем любимом редакторе. Посмотрите на раздел распределения. Мой сломанный выглядел так:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

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

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

guids изменены, чтобы защитить невинных

та же проблема, другое решение.

в моем случае, я сжимал файл с помощью zip -r myapp.zip myapp.app Оказывается, команда zip прикрутила пакет. Сжатие его от искателя заставило его работать.

У меня была такая же проблема, и после попытки нескольких вещей - я удалил .права plist из прав подписи кода (просто оставили его пустым), и он отлично построил и загрузил наконец.

удачи всем : - D

еще одна точка данных: на некоторое время мое приложение прошло. Теперь я добавил поддержку для покупок в приложении, и вдруг он терпит неудачу с проблемой "недопустимая двоичная/недопустимая подпись". При внимательном рассмотрении я обнаружил, что значение application-identifier в файле plist прав было выключено.

это, скорее всего, связано с тем, что Я заменил профиль подготовки с wildcarded на специфичный для приложения (требуется для покупок в приложении). Неверный идентификатор приложения квалифицированный по старому профилю. Это не соответствует идентификатору приложения в информации.плист, но, видимо, iTunes простил это.

Итак, резюмируем:

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.*

в порядке, в то время как

info.plist: com.mydomain.foo
dist.plist: com.mydomain.bar
Profile: com.mydomain.foo

вызывает "недопустимый двоичный файл".

У меня была та же проблема, что и при построении, я заметил, что подготовка не была добавлена в сборку.

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

Это может быть ошибка noob. Обычно вы не можете построить на устройстве, но когда вы делаете это для распространения, вы можете.

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

Я не знаю точно, что это исправило, но до успешной попытки я закрыл Xcode и Firefox и перезапустил их. Я думаю, что у одного из этих приложений было какое-то плохое juju.

вот проблема, с которой я столкнулся: я добавил двоичный файл в Subversion перед загрузкой. Сжатие / сжатие двоичного файла затем включало скрытое .каталоги svn, которые испортили подпись кода.

Я пробовал различные вещи после прочтения различных сообщений, включая те, что выше. То, что, наконец, сработало для меня, начиналось полностью! Я удалил все сертификаты и профили подготовки, связанные с моим приложением.

я воссоздал новый сертификат разработки и новый сертификат распространения. Я снова загрузил промежуточный сертификат. Затем я воссоздал профиль разработки и профиль распространения.

после установки трех сертификатов (I заметил, что на этот раз у дистрибутива были как частные, так и открытые ключи) и два профиля подготовки (мой профиль распространения не был помечен как не имеющий действительного сертификата!), все работало.

Как только я принял решение отменить все и просто начать все сначала, потребовалось всего около 5 минут, чтобы создать новый материал и переустановить его.

см. эту ссылку для решения:

http://greghaygood.com/2010/09/04/invalid-binary-message-from-itunesconnect

короткий ответ заключается в том, что "в конце концов, я дважды проверил мою информацию.плист и обнаружил кое-что. Я добавил CFBundleIconFiles в соответствии с новыми рекомендациями, но в списке массивов была пустая запись. Я удалил это и повторно представил, и это было, наконец, принято!"

У меня была аналогичная проблема, но в Monotouch. Я обнаружил, что мой профиль выпуска был настроен на использование сертификатов разработчика. Это должно выглядеть так: enter image description here

кажется, эта проблема имеет много причин. Вот решение моей проблемы:

Это относится ко всем, кто принадлежит к нескольким командам разработчиков (например, ваши собственные приложения и ваши компании).

Если вы создаете сборку с одним набором учетных данных и повторно подписываете ее другим (например, для распространения adhoc/appstore), вы должны убедитесь, что сборка была изначально построена и подписана учетными данными, принадлежащими той же команде разработчиков iOS, что и учетные данные для распространения, которые вы повторно подписываете, принадлежат.

поэтому не стройте с учетными данными "Indy Dev Inc", а затем попробуйте развернуть с учетными данными" Company Inc". Убедитесь, что вы настроили как "Company Inc" dev, так и учетные данные дистрибутива и используете их.

Я опубликовал больше информации об этом в своем блоге: http://omegadelta.net/2011/06/09/fiendish-ios-code-signing-invalid-binary-issue/

У меня была та же проблема. Я был готов бросить полотенце на эту проблему, но я понял это, когда я пошел, чтобы проверить мой код, используя мутный. Я всегда просматриваю различия в файлах, которые изменились, прежде чем я зарегистрируюсь. При этом на этот раз я заметил, что проект.pbxproj файл был изменен....а в разделе дистрибутива запись для "PROVISIONING_PROFILE[sdk=iphoneos*]" была пустой.

выход и перезапуск Xcode не сработали для меня. Вместо этого я вошел в оба моих параметры проекта и цели и изменили подпись кода, чтобы напрямую выбрать мой профиль распространения, а не полагаться на функцию автоматического выбора. Это вызвало проект.файл pbxproj для заполнения правильными значениями, даже если функция автоматического выбора предположительно выбрала тот же профиль, который я выбрал вручную.

Мне нужно пиво...

после попытки всех других исправлений, перечисленных здесь, мы зарегистрировали TSI с Apple. Выполнив все шаги в техническое Примечание TN2250 наша проблема была вызвана тем, что был закрытый ресурс отсутствует или недействителен. В нашем случае это было ._.DS_Store.

The".."называется двойным файлом Apple и является результатом копирования папки проекта Xcode, * unzipped*, на и обратно из файловой системы, которая должным образом не поддерживает HFS+'s 'Resource forks' (используется для кода подписывание.) Эти лишние".."файлы приводят и вызывают сбой проверки подписи кода.

чтобы очистить проблемные двойные файлы Apple из папки проекта Xcode, выполните команду dot_clean в папке проекта Xcode, выполните чистую сборку, а затем повторно выполните архивацию и повторную установку представления.

dot_clean /the/path/to/xcode/project

Примечание: Вы можете просто перетащить папку проекта в терминал, чтобы автоматически заполнить путь

нет сообщения, когда вы запускаете команду, но сборка проекта может показать предупреждение о файле при следующей сборке. Вы можете игнорировать это, приложение будет проверять и отправлять успешно.

разрешил это путем очистки myProject.xcodeproj файл (щелкните правой кнопкой мыши, открыть пакет), пакет содержал файлы от со-разработчика, после удаления этих проблема была решена

для меня решением было создание распределительной сертификации по адресу: Apple Developer Provisioning Portal.

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

Я получил недопустимый двоичный файл, если приложение не использует удаленное push-уведомление, но я оставил код для регистрации push и делегатов обратного вызова для регистрации/получения удаленного уведомления раскомментированным, даже если код не используется.

Это последние. Мое последнее представление на прошлой неделе было в порядке. На этой неделе он возвращает недопустимый двоичный файл. К счастью, есть электронное письмо, которое объясняет ошибку.

У меня была аналогичная проблема, но я не права.файл plist. Однако после дюжины неудачных загрузок я проверил свою информацию.плист и обнаружил кое-что. Мой массив CFBundleIconFiles имел пустую запись. Я удалил это и повторно представил, и это было, наконец, принято!

серьезно,насколько сложно было бы для Apple разоблачить такие ошибки проверки?

Edit: это не сразу apparant, где CFBundleIconFiles, потому что они используют другой имя. В представлении информация о проекте Ctl нажмите и выберите "Показать необработанные ключи / значения", а затем вы увидите ссылки на CFBundleWhatever. В этом случае редактор пытался использовать несуществующий icon=72-@2x.png файл.

мои две копейки:

загрузите последнюю версию загрузчика приложений. Я только что обновил и теперь получаю другое сообщение об ошибке.

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

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

  1. Перезапущенный Macbook Pro
  2. переместил исходный код для моего проекта с диска NTFS на диск HFS+ и перекомпилировал.

У меня была проблема с этим и 4.3 GM SDK. Одно из наших приложений не будет проходить мимо полученной загрузки. Это оказалось проблемой профиля подготовки. Я восстановил профиль магазина приложений, и он работал нормально.

мое решение включало создание нового идентификатора приложения. Я точно не знаю, почему это исправлено, но я подозреваю, что это могут быть несоответствующие идентификаторы пакетов - создание нового идентификатора приложения заставило меня убедиться, что мое приложение и iTunes ожидали того же.

другое решение:

для меня просто установка сертификатов "Release" в разделе "подпись кода" исправлена. Изначально они были настроены на "не кодовый знак".

для меня проблема была решена путем пересохранения png изображение с построчной вариант. В предыдущих версиях были разрешены чересстрочные png, но знайте, что эти изображения могут вызвать недопустимый двоичный файл.

мое сообщение apple: Коррумпированный файл значка - файл значка iconGQ@2x.png похоже, он коррумпирован. Ваш значок не должен быть чересстрочным файлом PNG.

вы можете увидеть, если PNG переплетается с помощью команды "файл" в терминале: Eva-Madrazos-MacBook-Pro-2: GQ 7 integracion ads Eva$ file *.формат PNG По умолчанию.png: PNG данные изображения, 320 x 480, 8-бит/цвет RGB, не чересстрочный

удачи, Ева

Я хочу указать на возможность отправить Apple по электронной почте и попросить их проверить свои журналы. Я сделал именно это, предварительно попробовав множество вещей. Пришлось напомнить им спустя почти четыре недели, но в конце концов они ответили и указали на точное место вопроса.

проблема в моем случае заключалась в том, что я ранее пробовал другие значки приложений, и ссылка на старое изображение все еще оставалась в "CFBundleIcons". Я использовал функцию перетаскивания, чтобы установить значок, но Я не заметил, что старый контент не был полностью очищен до добавления новой ссылки.

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

Я пробовал все другие предложенные решения, но ничего не помогло.

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

Я также могу порекомендовать яблоки технические примечания по подписанию кода для отладки/проверки.

uuid не допускается. Я исправил это, удалив все [[UIDevice currentDevice] uniqueIdentifier];