Очень сложный вопрос о поведении iPhone/iPad в отставке.

Вот в чем дело..

Сценарий:

У меня есть файл ipa, который я получаю в результате процесса Archive + Share с использованием XCode. Файл ipa подписан специальными сертификатами распространения и может быть установлен без проблем.

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

После этого я переподписываю приложение с помощью команды codesign с сертификатом распространения Enterprise после внесения некоторых изменений в пакет applicaction.app. Эти изменения включают в себя изменение имени приложения и идентификатора пакета из файла info.plist и, конечно же, замену встроенного профиля подготовки мобильных устройств на тот, который соответствует новому сертификату.

Проблема:

После отставки все, кажется, в порядке, установка и функциональность работают нормально .... НО! когда я ввожу информацию, сохраненную в цепочке для ключей, кажется, что данные не загружаются или стираются из цепочки для ключей каждый раз, когда я закрываю приложение.

Идеи, почему это происходит?


person Omer    schedule 31.05.2011    source источник
comment
Почему нельзя отредактировать само приложение перед его архивированием? В акции есть поле для корпоративного распространения. Просто используйте это.   -  person Greg    schedule 08.07.2011
comment
Я вижу ту же проблему. Вы придумали обходной путь?   -  person tjg184    schedule 24.08.2011


Ответы (2)


Хорошо, вот решение, которое сработало для нас.

Поскольку это была сборка Enterprise, нам потребовалось изменить файл Entitlements.plist/dist.plist, чтобы идентификатор приложения соответствовал тому, что было введено на сайте Apple. Файл прав может быть предоставлен в утилите codesign.

Используйте эти инструкции, но убедитесь, что файл прав соответствует полному идентификатору приложения. Это включает в себя идентификатор семени + идентификатор пакета.

Переподписать IPA (iPhone)

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

person tjg184    schedule 24.08.2011

Я часами искал эту проблему ... Это решение, как отмена приложения работала с нашим приложением. Мы получили файл IPA от клиента и подписали его нашим сертификатом. Доступ к связке ключей работает. В нашем случае bundle.id не изменился.

Какие файлы вам нужны:

  • MyApp.ipa
  • MyApp_EnterpriseDistribution.mobileprovision (профиль подготовки корпоративного распространения)
  • Права.plist

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

Сначала мы создаем «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>GBA9L2EABG.com.your.bundle.id.MyApp</string>
    <key>get-task-allow</key>
    <false/>
</dict>
</plist>

Сохраните этот файл и переименуйте его в «Entitlements.plist».

Откройте терминал, перейдите в папку и выполните эти коды, замените «MyApp» на ваше имя приложения и «ИМЯ ВАШЕГО...» на имя вашего сертификата и «MyApp_EnterpriseDistribution» на ваш файл обеспечения:

unzip MyApp.ipa

//we didn't used the following, maybe necessary...
//rm -r "Payload/MyApp.app/_CodeSignature" "Payload/MyApp.app/CodeResources" 2> /dev/null | true

cp MyApp_EnterpriseDistribution.mobileprovision Payload/MyApp.app/embedded.mobileprovision

codesign -f -s "iPhone Distribution: NAME OF YOUR DISTRIBUTION CERTIFICATE" --resource-rules Payload/MyApp.app/ResourceRules.plist --entitlements Entitlements.plist  Payload/MyApp.app

zip -qr MyApp-resigned.ipa Payload/

И теперь у вас есть Ipa с вашим сертификатом.

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

person Marc Gries    schedule 29.11.2012
comment
Этот комментарий примерно показывает, как получить ваши права из первоначально подписанной полезной нагрузки, а не переписывать ее самостоятельно: "повторно подписать ipa iphone%23comment23331800_9978224"> stackoverflow.com/questions/6896029/ - person Josh Kovach; 19.09.2013