iOS Ad Hoc Distribution: ошибка подписавшего недействительна
Возможный дубликат:
Ошибка подписавшего недействительна
Я пытаюсь развернуть свое приложение с помощью специального распространения, и я продолжаю получать эту ошибку, независимо от того, насколько внимательно я следую документации / другим ответам на SO.
Вот мой процесс:
Создайте специальный профиль распределения в Prov. Портал.
Загрузите профиль. Нажмите и перетащите его на значок XCode на док-станции. Это отображается в Организаторе
Создайте файл Entitlements.plist (ниже, автоматически сгенерированный XCode, за исключением свойства get-task-allow, которое я добавил сам):
<?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>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string> </array> </dict> </plist>
Перейдите к настройкам Target AND Project и установите свойство Entitlements для подписи кода (я пробовал как с полным, так и с относительным путем)
Установите объект подписи кода и любую iOS в профиль распределения
Построить. Проверьте журнал сборки. Там есть файл embedded.mobileprovision, и код правильно подписан с помощью профиля распространения.
Перейдите в папку сборки, нажмите и перетащите файл.app на значок iTunes.
Просмотрите содержимое.app и убедитесь, что Entitlements.plist там и правильный (как указано выше).
Нажмите и перетащите файл.mobileprovision в iTunes (теперь появляется диалоговое окно "Хотите заменить?"... оно отображается в папке ~/Library/MobileDevice/Provisioning Profiles)
Выйти из XCode
Подключить айфон
Синхронизация
Ошибка "Подписчик недействителен".
Я следую инструкциям T как на сайте разработчиков Apple, так и здесь, на Stack Overflow, и все еще ничего. Я надеюсь, что просто устал и что-то упустил, поэтому я выложил весь процесс, чтобы вы, ребята, разобрались.
** Примечание. Я могу добавить приложение через iTunes, если на устройстве уже есть профиль инициализации (т.е. добавлен через XCode). Но похоже, что iTunes не добавит профиль обеспечения на устройство. Это не подходит для специального дистрибутива, где не у всех есть XCode... или даже Mac. Должен быть способ установить профиль обеспечения через iTunes.
Еще одно примечание: мой коллега (на чей телефон я пытаюсь установить это приложение) утверждает, что ему не нужно было устанавливать профиль обеспечения для другого специального распределенного приложения, которое он получил недавно. Он получил файл.zip, который он просто перетащил в iTunes, и это сработало. Это возможно? Я хотел бы, чтобы сборка работала таким образом, чтобы конечным пользователям (на этапе тестирования) не приходилось иметь дело с установкой профиля обеспечения.**
Заранее спасибо, Эса
2 ответа
Это то, что я сделал, и я использую это без проблем.
Создайте новый идентификатор приложения с новым сгенерированным префиксом и просто * для суффикса. Это избавит вас от необходимости менять идентификатор пакета любого приложения, которое вы хотите распространять.
Создайте новый профиль распространения методом Ad Hoc. Выберите идентификатор приложения, который вы только что создали, и не забудьте выбрать устройства.
Подождите, пока ваш профиль обеспечения станет активным и загрузите его. Вам нужно это и ваш.ipa для распространения вашего приложения. (Я не понимаю, почему вы пытаетесь распространять свой.app. Вы не можете. Вы можете распространять свой.ipa). Дважды щелкните по нему, чтобы установить его на свой xcode.
Запустите xcode и перейдите к настройкам цели. Выберите профиль распространения, который вы только что установили.
Выберите iOS Device из активной схемы и перейдите в меню: Product > Archive.
Если все прошло нормально, Организатор выскакивает с Архивами. Выберите приложение и нажмите "Поделиться". Убедитесь, что.ipa выбран с правильным профилем обеспечения. Это сохранит его на вашем диске.
Отправьте сохраненный.ipa и профиль обеспечения по почте любому, кому вы хотите поделиться приложением.
На стороне пользователя им просто нужно перетащить профиль и.ipa в itunes, а затем синхронизировать там устройства.
Удачи.
К вашему сведению, мой rightlements.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>get-task-allow</key>
<false/>
</dict>
</plist>
И у меня нет этой проблемы...
Но у меня было это в прошлом, из-за отсутствующего файла Entitlements, если я хорошо помню. Решить эту боль... Я потерял часы из-за этого с раздраженным клиентом... Удачи!:)
В качестве последнего шанса я бы сказал, попробуйте очистить ВСЕ сертификаты / файлы обеспечения (непосредственно в цепочке для ключей) и повторить весь список шагов Руководства пользователя программы, даже восстанавливая сертификаты. Также остерегайтесь подстановочных идентификаторов приложений...