Техническое примечание TN2319

Поиск и устранение неисправностей Отказа установки для iOS

Этот документ рекомендует подходу диагностировать отказ установки приложения для iOS и перечисляет частые причины проблемы.

Обзор
Диагностирование отказа установки
Поиск и устранение неисправностей потока операций
Частые причины отказа установки
История версии документа

Обзор

Отказ установки распространен, потому что существует много факторов, которые могут инициировать его. Этот документ предлагает контрольный список самых частых причин отказа и рекомендует подходу решить вопрос.

Диагностирование отказа установки

Отказ установки диагностирован одним из следующих двух способов:

Поиск и устранение неисправностей потока операций

Для поиска и устранения неисправностей отказа установки приложения для iOS делайте попытку установки с помощью процесса, задокументированного в Тестирование бета-версии приложение для iOS Руководства по Распределению приложений. Если установка перестала работать через iTunes, используйте это руководство для проверки по возможным причинам.

Установка Over The Air (OTA)

Чтобы начать диагностировать отказ установки Over The Air (OTA), сначала удалите ОТУ из уравнения путем установки приложения через iTunes вместо этого.

  • Если установка перестала работать через iTunes, используйте этот документ для рассмотрения возможных причин.

  • Если установка успешно выполняется через iTunes, но приводит сверхвоздух к сбою, проблема не охвачена этим документом. Обратитесь к Странице поддержки Предприятия для справки в этом случае, такой как один на одном монтажная опора ОТЫ/ПРЕДПРИЯТИЯ, предлагаемая Уходом Предприятия Apple.

Частые причины отказа установки

Когда iTunes используется для установки приложения, этот раздел выполняет итерации через частые причины отказа установки приложения для iOS.

Контрольный список требований к установке

Следующий список идентифицирует области для проверки, поскольку они, как известно, касаются отказа установки приложения.

  • Посмотрите (только iOS) Размер приложения Руководства разработчика Подключения iTunes, чтобы гарантировать, что Ваше приложение в пределах размера.

  • Посмотрите Установку Развертывания Target и гарантируйте, что это значение меньше чем или равно версии iOS, установленного на целевом устройстве.

  • Проверьте Установку устройств на iOS Target для правильности. Установка Devices «iPad» предотвратит установку на iPhone или iPod Touch.

  • Посмотрите Архитектуру Установки для приложений для iOS, чтобы гарантировать, что Ваше приложение включает архитектуру, требуемую целевым устройством.

  • Гарантируйте, что Ваш ключ UIRequiredDeviceCapabilities Info.plist не включает значение, которое предотвратило бы установку на Вашем целевом устройстве. Например, требование «armv7» будет препятствовать тому, чтобы Ваше приложение установило на iPhone 3G или более ранних устройствах, использующих armv6 архитектуру.

  • Гарантируйте, что UDID целевого устройства был добавлен к Профилю Настройки, используемому для подписания приложения. Для добавления устройства UDID к Профилю Настройки посмотрите, что разделы Разрабатывают Приложения Используя Команду, Настраивающую Профиль или Configuring Store Technologies в Подключении iTunes и XCode. Используйте прежний раздел, если Ваше приложение не требует App Store определенные технологии.

  • Посмотрите раздел Creating Ad Hoc Provisioning Profiles, чтобы гарантировать подписание приложения с корректным Оперативным (или Предприятие) Профиль Настройки распределения. Наоборот, приложения, подписанные с Профилем Настройки распределения App Store, не работают на устройствах вообще, пока они не утверждены Apple, таким образом, в этом случае ожидается отказ установки.

  • Разрешить права связало ошибки, посмотрите раздел Configuring Entitlements Руководства по Распределению приложений. Гарантируйте, чтобы Ваша дающая право конфигурация соответствовала рекомендуемые настройки, и что Вы не используете пользовательскую дающую право конфигурацию излишне. В целом пользовательский Дающий право файл Подписывания кода в XCode только требуется при использовании пользовательского совместного использования доступа цепочки для ключей через приложения, или при включении приложения для iCloud. 

Проверьте журналы на первопричину

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

  • Консольные журналы могут быть просмотрены через XCode путем включения устройства на iOS к Mac и навигации к вкладке Xcode Organizer> Devices. Щелкните по ссылке Console, перечисленной под включенным устройством.

  • Консольные журналы могут также быть просмотрены с помощью утилиты Apple Configurator. Чтобы сделать это, выполните Конфигуратор Apple вместе с Консолью OS X. Выполните установку снова и любое соответствующее журналирование, создаваемое Конфигуратором Apple, поскольку часть процесса установки появится в Консоли OS X.

При необходимости консольное журналирование было достигнуто посредством процесса выше, сравнивает его со списком первопричин в Списке Первопричин Отказа Установки

Список первопричин отказа установки

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

Could not verify executable at <path_to_the_app>
  • Проверьте Target XCode> Настройки Сборки> настройки сборки Идентификационных данных Подписывания кода, чтобы гарантировать, чтобы эти значения имели допустимый профиль настройки, присвоенный им. 

  • Гарантируйте, что подпись приложения не является поврежденным использованием следующей команды Terminal: 

    codesign --verify -vvvv -R='anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.1] exists and (certificate leaf[field.1.2.840.113635.100.6.1.2] exists or certificate leaf[field.1.2.840.113635.100.6.1.4] exists)' /path/to/the.app 
verify_signer_identity: (x) failed for {your_app/executable}

Эта ошибка указывает, что профиль настройки распределения App Store по ошибке использовался для подписания Оперативной сборки. Обратите внимание на то, что сборки, подписанные с профилем настройки распределения App Store, не могут быть установлены на устройства на iOS разработки или тестирования; они могут только быть представлены Подключению iTunes для Анализа Приложения. Для решения этого вопроса подпишите приложение с Оперативным профилем настройки распределения вместо этого.

profile not valid: <hex_identifier>

Эта ошибка обычно означает, что целевое устройство не включено в Профиль Настройки, использовавшийся для подписания приложения. Выполните шаги выше для добавления устройства UDID к профилю в разделе Installation Requirements Checklist. 

entitlements are not valid
  • Гарантируйте, что Вы следуете за рекомендуемым процессом для создания Оперативных сборок, задокументированных в приложение для iOS раздела Beta Testing Your в Руководстве по Распределению приложений. 

  • Посмотрите раздел Configuring Entitlements , чтобы гарантировать, что Ваша дающая право конфигурация корректна, и что Вы не используете пользовательскую дающую право конфигурацию излишне. В целом пользовательский Дающий право файл Подписывания кода в XCode только требуется при использовании пользовательского совместного использования доступа цепочки для ключей через приложения, или при включении приложения для iCloud. 

Application is missing the application-identifier entitlement
  • Предупреждения о без вести пропавших прав идентификатора приложения, появляющихся в Вашей консоли, могут принадлежать средствам, предоставленным в этом разделе. Они могут произойти в iOS 8.1.3 и позже.

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

     <key>application-identifier</key>
        <array>
            <string>{Your App ID Prefix}.your.bundle.ID</string>
        </array>
Upgrade's application-identifier entitlement string ({Your New App ID Prefix}.com,YourApp.Bundle.ID) does not match installed application's application-identifier string (({Your Old App ID Prefix}.YourApp.Bundle.ID); rejecting upgrade.
  • Предупреждения о Вашей дающей право строке идентификатора приложения, не соответствующей Вашу установленную строку идентификатора приложения, появляющуюся в Вашей консоли при попытке установить обновление, могут принадлежать этому разделу. Они могут произойти в iOS 8.1.3 и позже.

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

     <key>previous-application-identifiers</key>
        <array>
            <string>{Your Old App ID Prefix}.YourApp.Bundle.ID</string>
        </array>

    Чтобы позволить подписаться с правом предыдущих идентификаторов приложений, новые специальные профили настройки требуются, который может быть получен путем движения в Контакт страницы США и запроса их.



История версии документа


ДатаПримечания
17.03.2015

Добавленная информация о разрешении ошибок идентификатора приложения.

24.03.2014

Дополнения частой причины.

23.09.2013

Новый документ, помогающий с поиском и устранением неисправностей отказа установки приложения для iOS.