Проблема с правами iPhone в XCode 4 для Ad Hoc дистрибутива - PullRequest
17 голосов
/ 27 марта 2011

Я перечитал всю документацию и публикации по распределению Ad Hoc, но проблема все еще остается.Если я попробую «беспроводную» рассылку (с загрузкой файлов .plist и .ipa с помощью Safari), приложение начнет загружаться, значок будет нарисован правильно и имя изменится с «Установка ...», но когда его заполнение будет завершено примерно на 90%, яполучить предупреждение «Невозможно загрузить ...».

Если я использую метод передачи приложения из iTunes, я получаю «Приложение« xx »не было установлено на iPhone« xx », поскольку права неправильно. '

В1: я прочитал, что вам больше не нужно отдельно добавлять файл .mobileprovision, потому что XCode (я использую 4.0.1) добавляет его в комплект - это правда?

Q2: когда я «загружаю» .mobileprovision в Safari (на iPhone), он просто отображает его в виде текста.Является ли это симптомом моей проблемы или неуместным?

В3: касается ли эта проблема Entitlements.plist?Я не могу найти документацию от Apple или какие-либо блоги, которые касаются того, что я вижу при редактировании этого файла с XCode 4.0.1.Если я следую инструкциям (Новый-> Новый файл-> Подпись кода-> Права), я получаю файл по умолчанию только с ключом «Может быть отлажен».Я попытался установить для этого параметра значение NO, добавив ключ get-task-allow (заменяя существующий - предположительно, можно ли отлаживать это тот же ключ?), Добавив мой идентификатор приложения и добавив в него словарь разрешений iPhone с двумя вышеуказанными ключами в (согласно документации Apple).

В4: каков уровень самоубийств среди разработчиков iPhone, пытающихся заставить работать «Право и подпись кода»?

Чтобы сократить количество предложений, которые я видел по схожим вопросам:У меня действительно есть права подписи кода для моего Entitlements.plist для распространения и выпуска.Я попытался перезапустить XCode, перестроить, архивировать и т. Д. Я попытался перезапустить iPhone. Я вернулся на iPhone

Обновление: в XCode 4.0.1 есть опция меню, когда редактируется Entitlements.plist (Editor-> Show Raw Keys and Values), который переключит ключ с «Может быть отлажено» на «get-task-allow»

Ответы [ 7 ]

13 голосов
/ 27 марта 2011

Файл разрешений должен быть:

<?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/>
         <key>application-identifier</key>
           <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
         <key>keychain-access-groups</key>
           <array>
             <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
           </array>
</dict>
</plist>

, это также работает для беспроводных сетей.
Почему, по умолчанию, все это отсутствует, это может ответить только Apple.Я не вижу, как редактировать необработанный текст plist в XCode, так отредактированный в TextEdit.

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

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

6 голосов
/ 07 апреля 2011

Я только что написал сообщение в блоге, в котором описываются все этапы успешного распространения ad hoc в Xcode 4, что может быть полезно. http://www.musicalgeometry.com/?p=1237

1 голос
/ 06 апреля 2011

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

Что действительно заставило меня остаться до 4:00 утра и тратить часы времени, которых у меня не было, так это на то, как я создавал временную специальную версию.На странице временного портала Apple для iOS, если вы нажмете «инициализация» на левой боковой панели, вы увидите 4 вкладки: «разработка», «распространение» и две другие.Раньше я использовал временную версию, созданную на вкладке «Разработка», и добавлял UUID телефона всех тестовых пользователей.Это работало для меня годами, пока не появился xCode 4, и я был настолько глуп, чтобы прыгать на борт слишком быстро.Инженеры Apple всегда устраивали мне неожиданные вечеринки в середине ночи каждый раз, когда у xCode было обновление.И они будут ждать достаточно долго, чтобы я забыл этот опыт и выпустил следующий.

Решение, которое работало для меня, состояло в том, чтобы создать предварительный вариант на вкладке распространения.Когда вы создаете новую предварительную версию здесь, у вас есть возможность выбрать «ad hoc» в качестве «метода распространения».После того, как я использовал эту предварительную настройку для проекта xCode и настройки целевой сборки и выключил «можно отлаживать» для прав, я мог установить его через iTunes или OTA.Я надеюсь, что этот совет может помочь кому-то спасти несколько седых волос.

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

Может быть, они сделали более короткую версию Entitlements.plist в xcode4.Entitlements.plist по умолчанию не содержит ключей 'application-identifier' и 'keychain-access-groups', но если вы измените значение ключа 'Может быть отлажено' через 'Редактор свойств ASCII', это действительно изменитзначение ключа 'get-task-allow' в фоновом режиме ...

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

Если щелкнуть правой кнопкой мыши файл plist в навигаторе проекта и выбрать «Открыть как», а затем «Исходный код», вы можете отредактировать его как простой источник.

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

Entitlements.plist должен быть добавлен в проект, и в нем должен быть только ключ get-task-allow.

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

При сборке с использованиемAd-Hoc или Distribution профиль, он должен быть отключен

Относительно Q4: Если вам нравится, вы можете увеличить его, просто сделав ... но я не рекомендую его.

...