Приложение XXX не было установлено ... потому что права недействительны - PullRequest
1 голос
/ 03 марта 2011

Я пытаюсь создать сборку для небольшой группы тестировщиков, не являющихся разработчиками, для проведения бета-тестирования моего приложения перед отправкой его в iTunes Connect.Я прочитал Руководство разработчика по "Распространение вашего приложения для тестирования (вам может потребоваться регистрация в Apple, чтобы прочитать это), а также Техническое примечание TN2250 по распределению Ad Hoc , ибесчисленные посты в блогах и статьи о переполнении стека, но пока безуспешно.

Шаги, которые я предпринял:

  • (я использую Xcode 3.2.5.)
  • Я создал профиль обеспечения разработки на портале обеспечения iOS и включил устройства для всех тестеров.
  • Я загрузил этот профиль и установил его в Xcode, перетащив его в окно Организатора,и я вижу профиль в разделе Разработка> Обеспечение профилей
  • Я установил этот профиль как «Идентификатор подписи кода> Любая iOS» в настройках проекта и назначения
  • Я создалфайл Entitlements.plist, установите тип списка свойств на «iPhone Entitlements plist», удалите все строки, кроме «Можно отладить», и установите для этого флажка значение
  • .установите «Права подписи кода» на Entitlements.plist (точное, чувствительное к регистру имя) в настройках проекта и цели
  • У меня есть «Сборка и архивирование» моего проекта
  • В окне «Органайзер» я выбрал свой проект и нажал «Поделиться ...», выбрал тот же профиль обеспечения, который использовался выше, и сохранил полученный .ipa на диск
  • Я сжал .ipa ипрофиль обеспечения в zip-файл и отправил его по электронной почте моим тестерам

Тестеры имеют:

  • Разархивировал отправленный файл
  • Пробная установкапросто перетащив .ipa в iTunes и синхронизировав
  • Попробовав установку, сначала перетащив .mobileprofile в iTunes и синхронизировав

В любом случае, в конце синхронизации они получаютв диалоговом окне «Приложение [ имя моего приложения ] не было установлено на [ имя их устройства и устройства ], поскольку права доступа недействительны».

МожетСтоит также отметить, что я смогПрошлой осенью разошлите более раннюю версию этого же приложения тем же тестерам без каких-либо проблем и без списка прав.Я не уверен, что изменилось, кроме обновления XCode.

Может кто-нибудь высказать какое-либо понимание или увидеть, что я делаю неправильно?

[Я также разместил это на форумах разработчиков Apple.и будет публиковать любые решения здесь.]

Ответы [ 3 ]

1 голос
/ 12 августа 2011

Права подписи кода больше не нужны для Ad Hoc сборок в Xcode 4 - см. Подробности в Техническое примечание Apple TN2250

1 голос
/ 04 марта 2011

Файл * .ipa уже должен содержать профиль обеспечения.Это легко увидеть на компьютере с Windows, если вы используете утилиту zip.Файл представляет собой просто zip-архив с другим расширением.

Устройства в правильной версии iOS для приложения?

На устройствах в Setting > General > Profiles вы можете увидеть списоклюбые профили обеспечения, которые установлены, чтобы устранить это как проблему.Вы получаете несколько копий с каждым новым сертификатом, созданным при добавлении новых устройств.Не мешает удалить все профили и проверить, что ваш последний добавлен.

Когда вы делаете свою сборку, щелкните правой кнопкой мыши по результатам сборки и выберите Open These Latest Results as Transcript Text File, затем найдите CodeSign, который будетпокажет вывод для этого шага, и вы должны четко увидеть, какой профиль был использован.Вы также можете найти Entitlements.plist, проверить используемый путь, а затем посмотреть на этот файл.

Вы говорите, что удалили все строки.У меня нет записи Can be debugged, но у меня есть application-identifier и keychain-access-group, которые звучат довольно похоже на подписание кода.Вот текстовая версия файла, которую вы можете попробовать:

<?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>
    <!--- Required entitlements (in most cases shouldn't be changed) --->
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>

    <!--- Custom entitlements below --->


</dict>
</plist>

Если что-то из этого окажется неправильным, Apple предложит шаги по подготовке сборки дистрибутива;

  1. ВыберитеЦель и откройте Инспектор настроек сборки.Подтвердите, что вы находитесь в Конфигурации распространения.
  2. Удалите идентификацию подписи кода: iOS Distribution: COMPANYNAME
  3. В меню сборки Xcode выберите Очистить все цели.
  4. Удалите все существующие каталоги сборки в вашем проекте XCode, используя Finder.
  5. Перезапустите Xcode и откройте свой проект.
  6. Повторно введите идентификатор подписи кода Распределение iOS: COMPANYNAME в Инспекторе настроек целевой сборки.
  7. Перестройте свой проект.

Надеюсь, что что-то из этого поможет или зажжет ах-ха!момент.

0 голосов
/ 14 февраля 2014
  1. Перейдите на веб-сайт разработчика и войдите в систему.
  2. В разделе «Профили обеспечения» выберите «Разработка».
  3. Откройте свой профиль обеспечения, дважды щелкнув его.
  4. Вы увидите "App ID: somenameyouwrote(com.somenameyouwrote)"
  5. Запишите точно, что находится в скобках, т.е. "com.somenameyouwrote"
  6. В XCode откройте файл .plist.
  7. Под "bundle identifier:"введите все, что вы записали в шаге 5.
  8. В XCode Нажмите стрелку на "Targets" и дважды щелкните по цели, которая будет носить имя вашего ap.
  9. В открывшемся информационном окне цели убедитесь, что выбран "Build".
  10. Откройте "Code Signing Identity" и под ним выберите "Any iOS".
  11. Справаиз "Any iOS" выберите профиль из списка, чей идентификатор Ap совпадает с тем, который вы написали в листе.
  12. BAM!Разочарование закончилось!
...