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.
![подготовка и подписание]()
- Если приведенного выше недостаточно, вам может понадобиться сделать это снова, но на этот раз, прежде чем вы это сделаете, удалите старые устаревшие профили подготовки из вашего яблочного ключа или удалите и перепишите в свою учетную запись разработчика 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: недействительные права на подпись кода для меня!
Ответ 23
Вы должны проверить свои права. Это как файл plist. Отредактируйте его для разработки и удалите лишние поля.
введите описание изображения здесь
Ответ 24
Мои два цента здесь.
Просто сейчас я застрял в этой проблеме, потому что, когда я копирую свой TeamID/Application ID с портала для разработчиков Apple, который приносит много несвязанных значений в authorlement.plist. Я не заметил этого, потому что я использовал XCode для редактирования файла rightlement.plist, и поле ввода не будет отображать все после первого символа новой строки.
Я предлагаю использовать текстовый редактор для authorlement.plist для этого случая.
Спасибо Самуил
Ответ 25
После того, как я попробовал все трюки, прочитанные в последние дни в Stackoverflow, я удаляю файл "xxxxxx.entitlements" и заново создаю его. Я нажимаю на Возможности, выбираю ВКЛ на Связанные домены и добавляю "Домены". Затем в разделе "Возможности"> "Push-уведомления" нажмите "Исправить". Добавьте право Push-уведомлений в свой файл разрешений.
Делая это, позвольте мне сделать архив успешным