ERROR ITMS-90164/90046: Недействительные права на подписание кода

Примечание. Я разрабатываю с использованием Xamarin. Подобный вопрос размещен на форуме Xamarin здесь

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

Затем я продолжил создание демонстрационной версии приложения (в основном то же приложение с небольшой модификацией, так что это одно и то же решение и проект, просто разные настройки подписки), CompanyAppDemo с новым приложением ID com.Company.CompanyAppDemo, а также новый профиль распределения, в котором используется новый идентификатор приложения. Я обновил параметры подписи iOS Bundle, чтобы использовать новый профиль Provisioning Profile и сгенерировал IPA. Но когда я загрузил его в Application Loader, я получил следующую ошибку:

[2015-01-23 16:08:21 SGT] ОШИБКА: ОШИБКА ITMS-90164: "Недействительный код Подписание прав. Права в вашей сигнатуре пакета приложений не соответствуют тем, которые содержатся в профиле обеспечения. В соответствии с профилем инициализации пакет содержит ключевое значение это не разрешено:" TEAMID.com.Company.CompanyApp "для ключа 'application-identifier' в 'Payload/CompanyApp.app/CompanyApp'"

[2015-01-23 16:08:21 SGT] ОШИБКА: ERROR ITMS-90046: "Недействительный код Подписание прав. Ваша подпись пакета приложений содержит которые не поддерживаются в iOS. В частности, value 'TEAMID.com.Company.CompanyApp' для ключевого 'application-identifier' в 'Payload/CompanyApp.app/CompanyApp' не поддерживается. Это значение должна быть строка, начинающаяся с вашего TEAMID, а затем точка".", за которым следует идентификатор пакета.

Я отлаживал дни, чтобы разобраться безрезультатно.

Мне интересно, почему, когда я подписал контракт с новым профиль, ошибка, с которой загружается Application Loader, ссылается на идентификатор исходного TEAMID.com.Company.CompanyApp вместо TEAMID.com.Company.CompanyAppDemo? Это ошибка в Xamarin, которая забирает неправильный профиль подготовки или я что-то упускаю? Вам не нужен другой сертификат для другого приложения?

Обратите внимание, что я всегда обновлял список профилей Provisioning Profile в XCode > Предпочтение перед изменением параметра подписи iOS Build в Xamarin.

Ответ 1

Наконец, после 2 недель вытягивания волос.

По некоторым причинам, если в элементе Entitlements.plist нет ключа "идентификатор приложения", который установлен на TEAMID.com.Company.CompanyAppDemo, Xamarin будет использовать оригинальный идентификатор приложения, т.е. TEAMID.com.Company.CompanyApp

Таким образом, решение заключалось в том, чтобы добавить идентификатор приложения, указав правильный идентификатор пакета приложений внутри Entitlements.plist. Затем включите plist в опции "Параметры сборки" > "Подшивка iOS".

Ответ 2

Если кто-то попадает сюда, ища ERROR ITMS-90046, как и я, моим решением было очистить его и удалить все предварительно скомпилированные фреймворки (пользовательские), а затем снова создать.

Примечание. В описании ошибки сказано о ключе "aps-environment" как "development".

Изменить: фактическое сообщение об ошибке

Ответ 3

У меня была такая же проблема и я решил с помощью простого продукта → Clean.

Ответ 4

Если кто-то попадет сюда, выполнив поиск как ошибки ITMS-90164, так и ошибки ITMS-90046 с помощью get-task-allow и asp-environment:

1

Как сказал Дэвид П., Продукт → Очистить, прежде чем новый Архив действительно разрешит мою проблему.

Я просто хочу добавить, что в моем случае я заметил, что в неисправном xarchive отсутствовал следующий файл:

2

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

Ответ 5

Такая же проблема и решена с помощью простого продукта → Clean.

Ответ 6

Измените это в Entitlements.plist:

<key>aps-environment</key>
<string>development</string>

К этому:

<key>aps-environment</key>
<string>production</string>

Ответ 7

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

Ответ 8

Для меня проблема была в Entitlements.plist, которая была добавлена ​​автоматически и была пуста. Удалили его из поля "Пользовательские права" и решили проблему.

Просмотр подкаталога iOS на Visual Studio 2015

Ответ 9

Если вы не выбрали соответствующий сертификат выпуска перед упаковкой, будет сообщено сообщение ERROR ITMS-90164

Настройка сборки → Идентификация подписи кода → Отпуск → Любой SDK IOS

Ответ 10

Убедитесь, что вы выбрали цель приложения, а не приложение WatchKit при архивировании.

Ответ 11

Ни один из других ответов не решил эту ошибку для меня, но это произошло:

  • Создайте новое приложение XCode и изучите его настройки подписи кода.

  • Попытайтесь настроить приложение так же, как и по умолчанию для XCode 7 или Xcode 8, настройки XCode 7 показаны здесь, он снова изменился в XCode 8.

подготовка и подписание

  1. Если приведенного выше недостаточно, вам может понадобиться сделать это снова, но на этот раз, прежде чем вы это сделаете, удалите старые устаревшие профили подготовки из вашего яблочного ключа или удалите и перепишите в свою учетную запись разработчика Apple (itunes) в настройках XCode. Обязательно ВЫЙТИ XCODE и RESTART после любых изменений. Затем добавьте свою учетную запись еще раз, и пусть XCode получит вашу новую информацию о подписании и команде.

Ответ 12

Я попытался загрузить сборку из ветки git, которая не была мастером. Чтобы решить проблему, я объединил ветку в мастер и снова построил. Затем я смог успешно загрузить сборку.

Ответ 13

Проект, включающий 2 цели (с 2 идентификаторами разработчика, 2 права), может привести к этому. (Не спрашивайте меня, как это случилось...)

При архивации временно удалите другой файл прав.

Ответ 14

Выполнение правильного Xcode "Quit", а затем перезапуск было последним действием, которое заставило его работать для меня.

Я изменил идентификатор пакета (для демонстрационной версии) и получил ту же ошибку (как указано в вопросе) при проверке моей архивной сборки. Я использую Xcode. Просто закрыть Xcode и повторное открытие моего проекта было недостаточно, но полный "Quit" был. Что-то было, вероятно, кэшировано где-то, я предполагаю.

Ответ 15

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

Ответ 16

Я только что переименовал в entitlements.plist значение Домены доступа из приложений: htts://domain.app.link для applinks: domain.app.link, он работает как шарм. Ура!

Ответ 17

  • Перейдите в Build Phase в Xcode
  • Удалите все фреймворки
  • Добавьте их обратно
  • Теперь build- > Archieve- > Загрузить в App Store

Ура, Ты покончил с этим. Проблема решена.

Ответ 18

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

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

Ответ 19

Для меня у меня был неправильный файл в настройках пользовательских прав в подписи iOS Bundle Signing. Удалено, и это сработало!

Ответ 20

После многих часов расследования я нашел легкое решение.

Вместо того, чтобы использовать загрузчик приложений для загрузки приложения, я использовал Организатор из XCode, и он работал без каких-либо предупреждений при загрузке!

Ответ 21

Моя проблема в том, что я использовал неправильный комплект для создания файла IPA

Ответ 22

У меня была точно такая же проблема, и это была довольно глупая ошибка. Я не хочу, чтобы кто-то тратил на это время, так что для этого:

Mistake

Итак, что здесь произошло, так это то, что я ввел "10" в цели развертывания. Это должно было быть 10,0 вместо. Именно это и привело к печально известной ОШИБКЕ ITMS-90164/90046: недействительные права на подпись кода для меня!

Ответ 24

Мои два цента здесь.

Просто сейчас я застрял в этой проблеме, потому что, когда я копирую свой TeamID/Application ID с портала для разработчиков Apple, который приносит много несвязанных значений в authorlement.plist. Я не заметил этого, потому что я использовал XCode для редактирования файла rightlement.plist, и поле ввода не будет отображать все после первого символа новой строки.

Я предлагаю использовать текстовый редактор для authorlement.plist для этого случая.

Спасибо Самуил

Ответ 25

После того, как я попробовал все трюки, прочитанные в последние дни в Stackoverflow, я удаляю файл "xxxxxx.entitlements" и заново создаю его. Я нажимаю на Возможности, выбираю ВКЛ на Связанные домены и добавляю "Домены". Затем в разделе "Возможности"> "Push-уведомления" нажмите "Исправить". Добавьте право Push-уведомлений в свой файл разрешений.

Делая это, позвольте мне сделать архив успешным