iOS 8-не удается установить корпоративное приложение
наша компания имеет приложение, которое можно загрузить через веб-сайт с помощью Enterprise Distribution.
в iOS 8 Beta 5, нажав на ссылку для загрузки вызывает ожидаемое всплывающее окно"(сайт) хотел бы установить (имя приложения)". Нажатие " установить "в этом диалоговом окне сначала вызывает приложение, чтобы застрять" ожидание..."
пока он, наконец, не указывает: "невозможно загрузить приложение (имя приложения) не может быть загружен в этом время."
установка работает, как и ожидалось, с помощью iOS 7.
запуск приложения из Xcode под iOS 8 работает.
Как мы поддерживаем корпоративный дистрибутив iOS 8?
возможно, необходимо внести изменения в файл манифеста? Когда я попытался создать приложение в Xcode 6 Beta 7, процесс архивирования предприятия не предложил мне сделать файл манифеста...
15 ответов:
просматривая консоль телефона Виста, пытаясь установить одно из моих приложений, я обнаружил:
Sep 9 12:16:56 iPhone misagent[94] <Error>: attempt to install invalid profile: 0xe8008011 Sep 9 12:16:56 iPhone installd[40] <Error>: 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired)
причины, неизвестные мне, apple аннулировала половину моих профилей и не предупредила меня. После входа в developer.apple.com найти любые недопустимые профили:
нажмите
Edit
->Generate
->Download
Перестроить приложение с новым профилем.однако-плохие новости по-прежнему по крайней мере одно из моих приложений не удается установить. Выглядящий через консоль мне ничего не дает. Я убежден, что это ошибка apple, поэтому подали радар: 17622725
я надеюсь, что ваша проблема является проблемой профиля в противном случае нам, возможно, придется ждать до сегодняшнего вечера 1800GMT, чтобы увидеть, если apple исправили его.
EDIT
С iOS8 GM-я просто получаю
Waiting...
- Я буду держать вас в курсе с прогрессом отчета об ошибке.EDIT
после устранения неполадок несколько исправлений были найдено:
исправить 1
по состоянию на iOS8, если изображения, на которые вы ссылаетесь в манифесте plist, не существуют - Apple не будет устанавливать приложение на телефон-манифест является файлом, на который вы ссылаетесь на странице загрузки:
itms-services://?action=download-manifest&url={url}
убедитесь, что оба
full-size-image
и :<dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <true/> <key>url</key> <string>https://{path_to_real_image}</string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>needs-shine</key> <true/> <key>url</key> <string>https://{path_to_real_image}</string> </dict>
исправить 2
корпоративные приложения не будут установлены, если они существовали ранее на iOS7 из-за ошибка с iOS8. В консоли появится сообщение об ошибке:
Ignore manifest download, already have bundleID: {bundle_id}
это можно исправить, временно изменив
bundleID
в файле манифеста, но Apple знают, как они отметили отчет об ошибке, как дублируются. После внутренних тестов вы также исправить проблему, отдыхая макет главного экранаGeneral -> Reset -> Reset Home Screen Layout
исправить 3
если вы видите приложение в
installing...
этап в отличие отloading...
почти наверняка проблемаembedded provisioning profile
истек срок действия, чтобы исправить загрузку, вам нужно будет повторно архивировать приложение с новым, обновленным профилем подготовки.исправить 4
если вы видите приложение к
installing...
этап и вашprovisioning profile
действительно-загрузите приложение, прикрепленное к консоли. (Xcode 6 > окно > устройства > нижняя левая кнопка [v]), вы, вероятно, обнаружите, что установка не удалась сVerification Stage Failed
чуть ниже будет сообщение об ошибке. В моем дело(Entitlements found that are not permitted by provisioning profile)
- для этой ошибки Гото developer.apple.com и обновите идентификатор приложения, чтобы включить правильную службу. Для меняApp Groups
необходимо включить. Затем регенерируйте свойprovisioning profile
Я получил ту же проблему сегодня: я не мог установить один из моих корпоративных приложений на IOs8 (но на IOs7). После многих часов поиска я, наконец, прочитал это сообщение на консоли устройства:
<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.ecaste.Crew-Desk
после долгого поиска, я, наконец, прочитал этот пост : http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc
и к концу я просто изменил имя plist и ссылку на загрузите ipa (вероятно, второй не нужен), и, наконец, приложение будет установлено.
наконец, кажется, что это была проблема кэша в IOs8, которая считает, что приложение уже установлено (и это было не так, я удалил его ранее).
надеюсь, что это поможет
та же ошибка здесь, я попытался изменить bundle-id, bundle-version, plist... но ошибка остается.
Я знаю, что это немного сложно, но это единственное, что работает для меня:
- подключите устройство к Mac или PC
создать резервную копию в iTunes
установить iExplorer:http://www.macroplant.com/iexplorer/
запустите iExplorer, затем выберите демонстрационный режим
в левой боковой панели, выберите мультимедиа, затем откройте папку "Загрузки", и удалить все файлы в нем
перезагрузка устройства
откройте страницу загрузки и установите последнюю версию вашего приложение
действительно я опускаю первые два шага, и он работает идеально :)
надеюсь, это поможет
установите цель развертывания ниже в
проект > настройка сборки > цель развертывания iOS
цели > настройка сборки > цель развертывания iOS
У меня просто была эта проблема прямо сейчас, и это было вызвано mainfest plist (ключи: полноразмерное изображение + дисплей-изображение) указывают на URL-адреса изображений, которые не существуют.
похоже, что iOS6 / iOS7 могут обрабатывать, если изображения не существуют, но iOS8 более ограничительно относится к этому.
основываясь на предыдущих комментариях к сообщению "игнорировать загрузку манифеста", мы попытались изменить идентификатор пакета (т. е. com.название компании.AppName) в the .plist, чтобы иметь уникальное имя, чтобы заставить iOS 8 загрузить / установить его в любом случае. После того, как он получает установлен, он правильно заменяет существующую копию.
Я считаю,что здесь есть 2 проблемы. Если.plist на веб-сайте https, указывающий на подписанный сертификат предприятия .файл ipa имеет идентификатор пакета, соответствующий приложению, которое уже установлен, он не будет перезаписывать его. Пакет-версия отличается от всех наших .plist файлы, так что он должен установить его в любом случае. iOS 7, похоже, не имеет этой проблемы. Мы планируем обойти эту проблему, испортив идентификатор пакета в plist, чтобы он всегда был уникальным для сборки.
вторая проблема заключается в том, что когда он успешно устанавливает приложение, он не переключается на главный экран или указывает, что он вообще что-то делает. В iOS 7, После выбора Кнопка "Установить" в приглашении, переключится на главный экран, где значок будет темным, а индикатор прогресса покажет прогресс загрузки. Тогда приложение будет иметь синюю точку рядом с ним, указывая, что это было новое. С iOS 8 он не переключается на главный экран, поэтому он, похоже, не работает. Вы можете вручную перейти на главный экран, и вы должны увидеть темный значок с индикатором прогресса (теперь в новом месте, потому что он не знает, что он будет заменять существующий приложение.) После успешной загрузки/установки он не помещает синюю точку на замененное приложение.
надеюсь, что это помогает.
это вызвало у меня огромную боль. Мне нужно было установить новое приложение OTA только на телефоны сотрудников за пределами решения MDM. Я, казалось, пробовал все возможные решения, которые я мог найти в интернете, и ничего не работало. Самое близкое, что я мог получить, было для приложения, чтобы добраться до стадии "загрузки". Мое решение заняло неделю работы, пробуя разные вещи. Я не уверен, что сработало в каком порядке и что бы сработало в любом случае, но вот что я сделал:
в моем случае, я построил ранее это приложение с профилем подготовки от разработчика (в отличие от предприятия) счета. В Xcode я изменил идентификатор пакета, чтобы дать ему новое имя, например, это был первоначально com.mydomain.myapp и стал com.mydomain.mysuperapp.
гарантированное подписание кода в приложении было действительным и включало сертификат распространения для учетной записи предприятия
я использовал неправильный профиль подготовки (один без связанных идентификаторов), поэтому, потому что я выбрал "автоматический" он построил отлично, но никогда не собирался устанавливать. Итак, я изменил подпись кода для выпуска в свой профиль распространения (а не профиль разработки)
убедитесь, что приложение было установлено с целью развертывания достаточно низко для устройств, которые будут загружать его
архивировал файл и экспортировал для корпоративного развертывания
Манифест должен содержать 57x57 png и 512x512 png изображение в противном случае установка не проходит мимо " ожидания’ этап
Я создал индекс.html файл, который выглядел так:
<html> <body> <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/dw80wahlwupkyd5/MyApp.plist"> Install Learning Chunks App from Dropbox</a> </body> </html>
я использовал образец plist, который я нашел в интернете и он включал некоторые дополнительные параметры. Когда я оставил их, загрузка не работала. Я их достал. Мой файл plist манифеста был назван: MyApp.плист и выглядел так:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>needs-shine</key> <true/> <key>url</key> <string> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <true/> <key>url</key> <string>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.mydomain.mysuperapp</string> <key>bundle-version</key> <string>1.0</string> <key>kind</key> <string>software</string> <key>title</key> <string>My Super App</string> <key>subtitle</key> <string>My Super App</string> </dict> </dict> </array> </dict> </plist>
Я загрузил MyApp.плист, индекс.html, logo57.png, logo512.png и MyApp.ipa в DropBox. Я поделился индексом.html с теми, кому нужно скачать приложение.
затем пользователь может нажать на общую ссылку в электронной почте, и приложение должно быть установлено.
EDIT: проблема ниже является красной селедкой. Как упоминал выше Дилан хэнд, проблема для меня заключалась в том, что я сломал ссылки на изображения в файле манифеста. По-видимому, это не имело значения для ios7, но ios8 не закончит установку, если это правда. Когда я удалил эти ссылки, он работал отлично.
У меня тот же набор симптомов, что и OP (т. е. Сообщение "не удается загрузить приложение", но только на iOS 8). Когда я пытаюсь проверить (ie Organizer - > Validate), я получаю следующее послание.
Это привело меня к этому сообщению:https://stackoverflow.com/a/25757196/751136
Он утверждает, что повторное создание профилей подготовки должно привести к новому праву под названием
beta-reports-active
. Когда я пытаюсь сделать это в своей учетной записи предприятия, новые профили не имеют нового права. Однако, когда я восстанавливаю профили подготовки в другой учетной записи не предприятия, новые профили имеют это поле.
Если вы создаете свои приложения iOS с помощью сценария сборки, и вы ранее использовали PackageApplication с флагом --sign, это может вызвать проблемы. Флаг --sign больше не работает при построении на 10.10 и его удалении все наши приложения iOS снова устанавливаются.
этот вопрос сводил меня с ума, Только это помогло для распределения предприятия: Выполните все необходимые настройки сборки и нажмите на кнопку "архив". Выполните процесс распределения предприятия. Вам будет показано окно органайзера. На компьютере Mac найдите .xcacrchive файл, выбрав KRelease и выбрав "показать в finder".
пользователь переходит в папку, где .файл xcarchive находится. Щелкните правой кнопкой мыши .xcarchive файл и выберите " Показать содержимое пакета" выбор.
В открывшемся окне finder перейдите в раздел Продукты / приложения Выберите и скопируйте .файл приложения
создайте новую папку где-нибудь на диске с именем "полезная нагрузка" Примечание: имя папки чувствительно к регистру. Вставьте скопированный файл .файл приложения в папку "полезная нагрузка". Сжатие папки полезных данных для получения полезных данных.сжатый файл Переименуйте полезную нагрузку.zip-файл .ipa и связывать его с вашим .plist Готово !!! этот.ipa файл готов к установке на устройства, зарегистрированные в provisioning профиль, используемый в .поколение xcarchive по.
я совладал с этой проблемой.
- поскольку Apple изменила профили подготовки, обновите профили подготовки (файл 1) и скопируйте его в "полезную нагрузку/".
- убедитесь, что есть права.plist (файл 2) в "полезной нагрузке/", и этот файл plist должен быть ОБЫЧНЫЙ ТЕКСТ который создается текстовым редактором.
- убедитесь, что есть информация.plist (файл 3) в "полезной нагрузке/", и это создается XCode;
- скопировать Права.plist (файл 4) в любом другом месте, кроме "полезной нагрузки/".
- убедитесь, что" идентификатор пакета " в файле 1-4 должен быть таким же.
- используйте это право.plist (файл 4), чтобы повторно подписать файл IPA.
вы можете подать в отставку вот так
codesign -fs "iPhone Distribution: Your Company Name" --entitlements=/Users/SenTR/Downloads/codesign/Entitlements.plist /Users/SenTR/Downloads/codesign/Payload/Your_Project_name.app
прав.plist sample
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>application-identifier</key> <string>PREFIX.yourappBundleID</string> <key>aps-environment</key> <string>production</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>PREFIX.yourappBundleID</string> </array> </dict> </plist>
Если вы знаете китайский язык, это будет полезно.
эти ответы являются действительными вещами для проверки, но в случае, если кто-то еще пробовал их, как я, и все еще имел проблемы,убедитесь, что ваше приложение содержит правильную настройку plist, которая позволяет правильно сжимать экспортированный архив. этой это то, что нас укусило, даже после выполнения всех шагов выше. Также следует отметить, что ответ, который говорит о том, что plist веб-сайта содержит действительные ссылки на изображения, похоже, ни на что не влияет, по крайней мере, для нас с помощью XCode 6.3 для экспорта архивов. Он работал / не работал независимо от правильности этих ссылок. Это, очевидно, хорошая идея, чтобы иметь эту информацию правильно, хотя. Еще одно интересное замечание заключается в том, что если мы экспортировали с помощью XCode 5, ipa всегда были в правильном формате (см. статью linked SO выше); похоже, что XCode 6+ теперь разборчив в этом.
еще одним возможным источником этой проблемы установки является несоответствие случая между проектом и профилем подготовки (особенно вероятно с автоматическими или другими сборками командной строки). Идентификаторы пакетов чувствительны к регистру. Например, если идентификатор пакета приложений в профиле подготовки равен
com.example.MyApp
и конфигурация проекта и / или информация.plist в используетcom.Example.Myapp
, Xcode 7.1 завершится ошибкой подписи кода или вернется к общему профилю подготовки (один с идентификатором * bundle, который может быть сама проблема) ноxcodebuild
команда будет выполнена успешно. Например, Дженкинс также загрузит ошибочно подписанную сборку в Hockeyapp. Сборка будет загружена на клиентские устройства, но не будет установлена из-за несоответствия случая.таким образом,
исправить 0
убедитесь, что идентификатор пакета приложений настроен одинаково как в проекте, так и на портале разработчиков Apple.
самый простой способ избежать этого конкретного проблема заключается в том, чтобы всегда использовать строчные символы в идентификаторах пакетов. Копирование идентификатора пакета с портала Apple Developer portal и вставка его в настройки сборки проекта (
PRODUCT_BUNDLE_IDENTIFIER
) также помогает конечно.хотя у меня была проблема с корпоративной учетной записью, на самом деле это может быть не специфично для этого типа распределения.
исправить 0
обязательно ознакомьтесь с технической запиской Apple под названием Устранение неполадок при установке для iOS.