ОШИБКА ITMS-90164/90046: Недействительные права подписи кода


82

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

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

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

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

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

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

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

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

Ответы:


133

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

Примечание. В описании ошибки говорится о ключе «aps-environment» как «разработка».

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


Вы можете объяснить это немного подробнее?
Джон

1
Да, в своем приложении я использую пользовательские фреймворки, они добавляются в раздел «этапы сборки» «целевые зависимости», поэтому, когда я компилирую приложение, они компилируются и также подписываются. Также у меня есть сценарий в каждой «фазе сборки» фреймворка, который перемещает скомпилированный фреймворк в другую папку. Кажется, есть ошибка в процессе подписания, и я думаю, что ключевой частью было удаление фреймворков, вынуждающее компилятор скомпилировать и подписать их снова. Эта ошибка больше никогда не повторится.
quarac

Это сработало, я просто очистил его и снова скомпилировал и ничего не менял, почему это не удалось в первый раз? Mystery
rr1g0

Та же проблема и исправление! Вы избавили меня от сильной головной боли! Большое спасибо.
Стефат

7
Все, что мне нужно было сделать, это выполнить очистку ... Это была новая ошибка после примерно 50 сборок, загруженных в TestFlight
Phamer

63

У меня была такая же проблема, и я решил ее с помощью простого продукта -> Очистить .


1
спасибо помогло мне решить ОШИБКУ ITMS-90164: «Недопустимые права подписи кода. Права в подписи вашего пакета приложений не соответствуют тем, которые содержатся в профиле обеспечения. Согласно профилю обеспечения, пакет содержит значение ключа, которое недопустимо: 'true' для ключа 'get-task-allow' в 'Payload / Palau Moja.app/Palau Moja' "ОШИБКА ITMS-90164:" Недействительные права подписи кода. Права в подписи вашего пакета приложений не совпадают с теми, которые содержатся в профиле обеспечения,
Хосеп Эскобар,

Была та же ошибка, что и Josep, и очистить -> архив -> загрузить снова, решить ее. Спасибо за размещение этого решения!
немного

Где вы делаете Product-> Clean ? В XCode или Visual Studio? Я разрабатываю с помощью Xamarin, BTW.
Джеймс Лавери

20

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

1

Как сказал Дэвид П., « Продукт -> Очистить до того, как новый архив» действительно решил мою проблему.

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

2

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


18

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

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

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


13
xamarin - это такое повышение производительности!
Антон Тропашко


8

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

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

К этому:

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

5

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


1
Ваш спаситель :) Надо любить сообщения об ошибках, не связанные с Apple
Йоав Шварц,

4

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

Просмотр подписи пакета iOS в Visual Studio 2015


3

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

Настройка сборки -> Идентификация подписи кода -> Выпуск -> Любой SDK для IOS


2

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


2

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

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

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

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

  1. Если вышеперечисленного недостаточно, вам может потребоваться сделать это снова, но на этот раз, прежде чем вы это сделаете, удалите все старые профили подготовки с истекшим сроком действия из своей связки ключей Apple или удалите и повторно войдите в свою учетную запись разработчика Apple (itunes) в XCode. предпочтения. Обязательно ВЫЙДИТЕ из XCODE и ПЕРЕЗАПУСТИТЕ после ЛЮБЫХ изменений. Затем снова добавьте свою учетную запись и позвольте XCode получить информацию о вашей новой подписи и команде.

1

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


1

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

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


1

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

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


Это сделало это для меня. XCode иногда может быть таким привередливым.
Аарон Краусс

1

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


1

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


0
  1. Перейти Build Phaseв Xcode
  2. Удалите все рамки
  3. Добавить их обратно
  4. Теперь сборка-> Архив-> Загрузить в App Store

Ура, ты с этим покончил. Задача решена


0

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

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


0

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


1
Скриншот было бы неплохо.
Уоррен П.

0

После многочасовых исследований я нашел простое решение.

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


0

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


0

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

Ошибка

Итак, что здесь произошло, я ввел цифру «10» в цель развертывания. Вместо этого должно было быть 10.0. Вот что привело меня к печально известной ERROR ITMS-90164/90046: Invalid Code Signing Entitlements для меня!



0

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

Только сейчас я застрял в этой проблеме, потому что, когда я копирую свой TeamID / Application ID с портала разработчика Apple, это приносит много несвязанной ценности в entity.plist. Я не заметил этого, потому что я использовал Xcode для редактирования entity.plist, и поле ввода не будет отображать все после первого символа новой строки.

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

Спасибо, Самуэль


0

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

Сделав это, позвольте мне сделать АРХИВ Успешно


0

У меня была такая ссылка webcredentials:https://************.link, из-за которой загрузка не удалась. Я удалил его, и проблема была решена.

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