Подтвердить что ты не робот

Развертывание корпоративного приложения не устанавливается на iOS 8.1.3

После обновления iOS 8.1.3 я попытался загрузить, но при этом появляется сообщение об ошибке " Невозможно загрузить приложение" и " не было установлено в это время".

Каковы изменения между 8.1.2 и 8.1.3, которые я должен учитывать?

Режим загрузки:
< href= "ITMS-услуга://действие = скачать-манифест & URL = https://****.plist" >

Спасибо!

4b9b3361

Ответ 1

Спустя несколько часов, сражаясь со страйками, вот как я это сделал:

ПРИМЕЧАНИЕ. Я не тестировал это в настоящее время в отношении iOS 8.1.2 или ниже (соблюдайте осторожность!)

Для приложений, которые УЖЕ были подписаны с вашим сертификатом предприятия, все, что вам нужно сделать (как упомянуто RAStudios в его редактировании), это отредактировать файл manifest.plist:

До:

<key>bundle-identifier</key>
<string>uk.co.acme.AcmeApp</string>

После:

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>

Для приложений, которые были подписаны третьей стороной, которые вы ушли с вашего корпоративного сертификата (в этом пошаговом руководстве предполагается, что файл ipa - это AcmeApp.ipa, ваш файл прав является правами .plist и ваш профиль обеспечения ProvProvile.mobileprovision, все файлы находятся в папке "Рабочий стол" (Mac OSX), а S836XXACME - это ваш идентификатор вашей команды):

Создайте новый файл entitlements.plist:

<?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>S836XXACME.uk.co.acme.AcmeApp</string>
<key>get-task-allow</key>
<false/>
</dict>
</plist>

Разархивируйте ipa:

cd ~/Desktop

unzip AcmeApp.ipa 

Удалить подпись кода:

rm -r Payload/AcmeApp.app/_CodeSignature/ 

Скопировать в файл mobileprovision:

cp provProfile.mobileprovision Payload/AcmeApp.app/embedded.mobileprovision 

CodeSign:

codesign -f -s "iPhone Distribution: ACME Corporation Limited" --entitlements entitlements.plist Payload/AcmeApp.app

Замените его как спящий ipa:

zip -qr AcmeApp_resigned.ipa Payload/

Вам также необходимо внести изменения в файл manifest.plist в соответствии с ранее подписанной частью "УЖЕ":

<key>bundle-identifier</key>
<string>S836XXACME.uk.co.acme.AcmeApp</string>

Ответ 2

После исследования..

Изменить:. После дальнейшего тестирования я обнаружил, что просто сопоставление идентификатора пакета в Info.plist и идентификатора пакета в manifest.plist работало для установки приложений по радио на iOS 8.1 0,3. Если это решение не работает, попробуйте решение ниже.


Исходное решение

Исправить проблему:

Ваше приложение должно иметь действительный entitlements.plist, который включает в себя исправление действительного идентификатора пакета для приложения.

Если вы распространяете приложение, подписанное с сертификатом разработки iOS, вот пример права. plist, который вы должны включить в свое приложение.

<?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>com.yourbundleidhere.mycoolapp</string>
    <key>com.apple.developer.team-identifier</key>
    <string>com.yourbundleidhere.mycoolapp</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>com.yourbundleidhere.mycoolapp</string>
    </array>
</dict>
</plist>

Если вы используете профиль подстановки, замените com.yourbundleidhere.mycoolapp на yourwildcardappid.*. В обоих случаях вы можете использовать iResign для правильного увольнения приложений и включения требуемого теперь права .plist.

Объяснение проблемы

Из-за патчей безопасности (см. здесь под CVE-2014-4493), без права .plist, приложение не будет установлено. Патч безопасности позволяет приложениям переопределять существующие приложения и устанавливать их поверх них/заменять.

Ответ 3

Я провел немало экспериментов с этим. По моему опыту идентификатор пакета в файле manifest.plist на самом деле не критичен. Самое главное, чтобы сделать правку .plist правильной.

Вместо того, чтобы создавать это вручную, я бы рекомендовал создать его из профиля подготовки, используя следующий script (кредит):

# Create an entitlements file
# parse provision profile
security cms -D -i "provProfile.mobileprovision" > ProvisionProfile.plist 2>&1

# generate entitilements.plist
/usr/libexec/PlistBuddy -x -c "Print Entitlements" ProvisionProfile.plist > Entitlements.plist 2>&1

Затем вы можете использовать этот файл прав с опцией --entitlements в утилите codesign.

Ответ 4

У меня такая же проблема, и это происходит для приложений, которые не имеют никаких прав.

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

Это странная проблема, потому что эти приложения, которые не сработали для меня, не используют ничего подобного совместному использованию ключей или push-уведомлений и, следовательно, не требуют права вообще (согласно моему пониманию). Теперь, когда я просто добавляю право на совместное использование ключей, он начинает работать.

Ответ 5

Я ответил на это здесь, это сработало для меня, не делая ничего другого

Ответ 6

В дополнение к ответам @Mark и @RaStudio, я видел еще две причины для сообщения "Невозможно загрузить приложение"; один из которых является новым для iOS 8.1.3.

Новая причина сбоя на iOS 8.1.3

Эта ошибка возникает при попытке установить приложение с истекшим профилем подготовки. При подписании приложения как сертификат, так и профиль подготовки должны быть действительными и не истекли. Кажется, что приложение с устаревшим профилем подготовки и сертификатом без истечения срока действия может быть установлено на iOS 8.1.2 в некоторых случаях. Убедитесь, что профилирующий профиль не истек, перейдя в Центр разработчиков Apple.

Старая причина сбоя

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

Ensure device is added to provisioning profile

Ответ 7

Я рассмотрел эту проблему.

  • Поскольку Apple изменила профили настройки, пожалуйста, обновите профили подготовки (файл 1) и скопируйте их в "Полезная нагрузка /".
  • Убедитесь, что в разделе "Полезная нагрузка /" указан файл Entitlements.plist(Файл 2), и этот файл plist ДОЛЖЕН быть ТЕЛЕФОНОМ PLAIN, который создается текстовым редактором.
  • Убедитесь, что в "Полезной нагрузке /" создан Info.plist(файл 3), и это создается XCode;
  • Скопируйте файл Entitlements.plist(файл 4) в любом месте, кроме "Payload/".
  • Убедитесь, что идентификатор Bundle в файле 1-4 должен быть тем же.
  • Используйте этот файл Entitlements.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

Пример с правами доступа.

<?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>

Если вы знаете китайский язык, это будет полезно.

http://hennry.com/2015/03/fail-to-resign-ipa-since-ios8/

Ответ 8

ios 8.1.3: приложение для работы в сети должно распространяться с помощью MDM.

MobileInstallation

Воздействие. Вредоносное приложение, подписанное корпорацией, может управлять локальным контейнером для приложений, уже находящихся на устройстве.

Описание. Уязвимость существует в процессе установки приложения. Это было устранено, если корпоративные приложения не переопределили существующие приложения в определенных сценариях.

из заметки о выпуске Apple