Приложение iOS не устанавливается на устройство тестового пользователя

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

itunesstored[100] <Warning>: LaunchServices: installing placeholder for com.TEST.Givr
installd[63] <Notice>: 0x2d5000 handle_install_for_ls: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-7544261549455945179.app" requested by itunesstored
installd[63] <Notice>: 0x2d5000 MobileInstallationInstall_Server: Installing app com.TEST.Givr
installd[63] <Notice>: 0x2d5000 install_application: Installing placeholder
installd[63] <Notice>: 0x2d5000 MobileInstallationInstall_Server: Staging: 0.01s; Waiting: 0.00s; Installation: 0.11s; LS Sync: 0.00s; Overall: 0.12s
itunesstored[100] <Warning>: LaunchServices: updating placeholder for com.TEST.Givr with icons
installd[63] <Notice>: 0x2d5000 handle_install_for_ls: Install of "/var/mobile/Library/Caches/com.apple.itunesstored/AppPlaceholders/-7544261549455945179.app" requested by itunesstored
installd[63] <Notice>: 0x2d5000 MobileInstallationInstall_Server: Installing app com.TEST.Givr
installd[63] <Notice>: 0x2d5000 install_application: Installing placeholder
installd[63] <Notice>: 0x2d5000 MobileInstallationInstall_Server: Staging: 0.01s; Waiting: 0.00s; Installation: 0.26s; LS Sync: 0.00s; Overall: 0.28s
lsd[77] <Error>: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk
lsd[77] <Error>: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk
itunesstored[100] <Warning>: LaunchServices: Creating installProgressForApplication:LSApplicationProxy: com.TEST.Givr (Placeholder) withPhase:0
lsd[77] <Warning>: LaunchServices: Updating installPhase for parent <NSProgress: phase=Loading; state=Waiting; fractionCompleted=0.000000> to 0
SpringBoard[34] <Warning>: Killing com.TEST.Givr for app installation
itunesstored[100] <Warning>: LaunchServices: installing app for existing placeholder LSApplicationProxy: com.TEST.Givr (Placeholder)
itunesstored[100] <Warning>: LaunchServices: Creating installProgressForApplication:LSApplicationProxy: com.TEST.Givr (Placeholder) withPhase:1
lsd[77] <Warning>: LaunchServices: Updating installPhase for parent <NSProgress: phase=Loading; state=Active; fractionCompleted=0.590000> to 1
installd[63] <Notice>: 0x2d5000 handle_install_for_ls: Install of "/var/mobile/Media/Downloads/-7544261549455945179/8380994860813698163" requested by itunesstored
installd[63] <Notice>: 0x2d5000 MobileInstallationInstall_Server: Installing app com.TEST.Givr
securityd[84] <Error>: OCSPResponse: latestNextUpdate more than 1:15 ago
installd[63] <Error>: 0x2d5000 do_preflight_verification: Incorrect architecture at /var/tmp/install_staging.uWo8Ig/foo_extracted/Payload/Givr.app
installd[63] <Error>: 0x2d5000 install_application: Could not preflight application install
itunesstored[100] <Error>: 0x341000 MobileInstallationInstallForLaunchServices: failed with -1
itunesstored[100] <Warning>: ERROR: MobileInstallationInstallForLaunchServices returned nil
lsd[77] <Warning>: LaunchServices: installation failed for app com.TEST.Givr
itunesstored[100] <Warning>: LaunchServices: installPhaseFinishedForProgress: com.TEST.Givr.Installing - <NSProgress: phase=Installing; state=Failed; fractionCompleted=0.000000> called, removing progress from cache
lsd[77] <Warning>: LaunchServices: installation failed for app com.TEST.Givr
itunesstored[100] <Warning>: LaunchServices: installPhaseFinishedForProgress: com.TEST.Givr.Loading - <NSProgress: phase=Loading; state=Failed; fractionCompleted=1.000000> called, removing progress from cache
installd[63] <Error>: 0x2d5000 handle_install_for_ls: API failed

Есть идеи, как это исправить? Я протестировал приложение на своем телефоне iPhone 5, это устройство разработчика, которое я использую для тестирования, и приложение запускается нормально. Однако он просто не будет установлен на устройстве пользователя. Раньше я получал предупреждения о разрешениях, которые я исправил, и их больше нет ... так что не знаю, в чем проблема сейчас.


person Dhwanit Zaveri    schedule 07.08.2014    source источник
comment
Какой тип установки вы используете (OTA, iTunes)? А какая у вас программа для разработчиков?   -  person Ayu    schedule 07.08.2014
comment
Я использую TestFlight для развертывания приложения. Пробовал и через iTunes. И я в программе для разработчиков iOS   -  person Dhwanit Zaveri    schedule 07.08.2014
comment
Вы уверены, что у вас был UDID пользователя в списке ваших устройств до создания профиля обеспечения?   -  person Ayu    schedule 07.08.2014
comment
Ага, проверял не раз. Даже попросил меня выбрать udid, и я убедился, что сделал это. Я также переделал сертификат раздачи, переделал профиль ad-hoc provisioning, переделал и архив. Я не думаю, что это проблема разрешений больше?   -  person Dhwanit Zaveri    schedule 07.08.2014
comment
Это долгий путь, но, возможно, это несоответствие версии iOS цели развертывания/устройства?   -  person Ayu    schedule 07.08.2014
comment
Я полагаю, что эта часть Incorrect architecture at /var/tmp/install_staging.uWo8Ig/foo_extracted/Payload/Givr.app относится к этому... Знаете ли вы, о чем идет речь: <Error>: ImageIO: PNG invalid PNG file: iDOT doesn't point to valid IDAT chunk   -  person Dhwanit Zaveri    schedule 07.08.2014
comment
Похоже, у вас есть недопустимый файл png в вашем проекте. Я бы проверил все ваши файлы изображений и посмотрел, не является ли один из них недействительным. Во-первых, вам нужно решить проблему с архитектурой. Смотрите мой ответ ниже.   -  person wottle    schedule 08.08.2014
comment
Причина, по которой ваш пользователь не может установить, заключается в ошибке архитектуры. Недопустимый PNG — это вторичная ошибка, которая не должна препятствовать установке. Ошибка PNG может быть вызвана несколькими причинами: stackoverflow.com/questions/12007717/   -  person wottle    schedule 08.08.2014


Ответы (1)


Ошибка здесь связана с поддерживаемыми вами архитектурами. Скомпилированный IPA должен быть собран только для определенных архитектур (или только для конкретной) и не включает архитектуру устройства, на котором работает тестер.

installd[63] <Error>: 0x2d5000 do_preflight_verification: Incorrect architecture at /var/tmp/install_staging.uWo8Ig/foo_extracted/Payload/Givr.app

Перейдите в настройки сборки ваших проектов, в верхнем разделе «Архитектуры» убедитесь, что у вас есть следующие значения для «Действительные архитектуры»:

arm64 armv7 armv7s

Кроме того, для конфигурации сборки, которую вы используете для развертывания, убедитесь, что для параметра «Только активная архитектура сборки» установлено значение No. А для Архитектуры выберите Standard Architectures (armv7, armv7s, arm64) См. ниже, как это должно выглядеть:

пример настроек архитектуры

person wottle    schedule 07.08.2014
comment
Да, это была проблема. Я думал, что это было давно, но серьезно воздерживался от исправления только потому, что я использую фреймворк (основной сюжет), который несовместим с 64-битными устройствами... пришлось удалить это. - person Dhwanit Zaveri; 08.08.2014
comment
Технически вам не нужно собирать для arm64. Вы можете убрать это из допустимых архитектур и собрать, и 64-битные устройства по-прежнему смогут запускать приложение. Важным было создание только активных архитектур. Вы должны иметь возможность оставить для параметра Valid Architectures значение только armv7 armv7s, и он по-прежнему должен работать, позволяя при этом использовать библиотеку не-64. - person wottle; 08.08.2014
comment
У меня точно такая же проблема, но единственные варианты, которые у меня есть для стандартных архитекторов, это: arm64 armv7 armv7s Мысли? - person George; 26.08.2014
comment
Каковы ваши настройки для действительных архитектур и какие у вас есть настройки для сборки только активных архитектур? Какую версию Xcode вы используете? - person wottle; 27.08.2014