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

аюсь загрузить приложение в iPhone App Store, но получаю сообщение об ошибке из iTunes Connect:

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

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

Для получения общей информации о подаче приложений iPhone в App Store см.Действия по загрузке приложения для iPhone в AppStore.

 BlackSheep20 февр. 2014 г., 12:56
сделал учебник для этого:stackoverflow.com/questions/21853083/...

Ответы на вопрос(21)

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

Если вы столкнулись с той же ошибкой, найдите в каталоге [ProjectName] .xcodeproj файл project.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;
};

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

после повторения этих шагов несколько раз, я наконец-то успешно загрузил свое приложение.

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

 Anthony Main09 дек. 2010 г., 18:51
Я нашел что-нибудь, но Safari может быть причиной большинства проблем, поэтому я полагаю, почему они заменили его на загрузчик приложений. У меня часто возникает эта проблема при загрузке сертификатов / профилей из инициализируемого порта, когда Safari не используется

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

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

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

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

Изменить: не сразу очевидно, где CFBundleIconFiles, потому что они используют другое имя. В информационном представлении проекта нажмите Ctrl и выберите «Показать необработанные ключи / значения», а затем вы увидите ссылки на CFBundleWh независимо. В случае этого редактора он пытался использовать несуществующий файл [email protected]

Решение Вопроса

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

 ingh.am25 апр. 2010 г., 00:37
Это сработало для меня ... :)
 quantumpotato08 нояб. 2010 г., 17:12
Пробовал это, все еще возникают проблемы. Я использую XCode Build & Archive -> Загрузить в iTunes. Кто-нибудь еще должен сделать еще один шаг после этого?
 Mark Bessey08 нояб. 2010 г., 20:48
Вы можете получить более подробную диагностическую информацию, если используете автономную программу для загрузки приложений.

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

 Jesse Beder22 дек. 2009 г., 08:38
Неважно, я делалcp -r а такжетогда почтовый индекс, и это былcp что облажались ссылки сим в приложении. Так должно бытьcp -R сохранить сим-ссылки.
 jbrennan09 окт. 2009 г., 03:51
Точно то же самое случилось со мной около месяца назад. Бешенство.
 Jesse Beder22 дек. 2009 г., 05:35
Просто сработало это решение. Я попробовал решение @ shirikodama ниже, и оно не сработало - вы нашли способ сжатия в командной строке?

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

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

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

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

опкой мыши, откройте пакет), пакет содержал файлы от со-разработчика, после удаления которых проблема была решена

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

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

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

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

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

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

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

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

 livingtech13 июн. 2011 г., 19:44
Я подтвердил инженерам Apple (на WWDC на прошлой неделе), что можно переподписать двоичный файл, созданный совершенно другим разработчиком с другим профилем обеспечения. К сожалению, у меня также есть проблемы с этой задачей ... :(

какое-то время мое приложение прошло. Теперь я добавил поддержку покупок в приложении, и внезапно происходит сбой с ошибкой «Недопустимая двоичная / недействительная подпись». Внимательно посмотрев, я обнаружил, что значение идентификатора приложения в файле списка прав отключено.

Скорее всего, это связано с тем, что я заменил профиль обеспечения с подстановочного знака на профиль для конкретного приложения (необходим для покупок в приложении). В старом профиле указан неправильный идентификатор приложения. Он не совпадал с идентификатором приложения в info.plist, но, видимо, 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

вызывает "Неверный двоичный файл".

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

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

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

и после попытки нескольких вещей - я удалил права .plist из Правил подписи кода (просто оставил это поле пустым), и он сработал нормально и загрузился НАКОНЕЦ.

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

 devlord14 сент. 2010 г., 02:01
Я не могу поверить, что это исправило это. Это особенно нелепо, поскольку они так недвусмысленно относятся к файлу разрешений в документации на портале обеспечения.

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

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

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

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

zip -y -r myapp.zip myapp.app

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

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

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

".. "называется файлом Apple Double, и является результатом копирования папки проекта Xcode, * unzipped *, в файловую систему и обратно из файловой системы, которая должным образом не поддерживает« ветки ресурсов »HFS + (используемые для сигнатур кода). экстра ".. "файлы приводят к ошибке проверки подписи кода.

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

dot_clean /the/path/to/xcode/project

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

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

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

Ваш ответ на вопрос