Уточняющие вопросы о предоставлении профилей и моей конкретной проблеме - PullRequest
4 голосов
/ 25 сентября 2010

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

Я пробовал много разных вещей, основанных на поиске в Google, но слишком много перестановок. Пришло время узнать, что на самом деле происходит. Пока я углубляюсь в документацию, у меня есть несколько вопросов, которые, надеюсь, некоторые люди здесь могут прояснить для меня:

  1. Я заметил, что могу установить параметры «Права» и «Подписание кода» как в проекте (двойной щелчок по верхнему элементу в разделе «Группы и файлы» с названием проекта), так и по «Цели» (в разделе «Цели», дважды щелкните по названию вашего проекта). В чем разница между этими двумя? Я знаю, что с путями заголовка, один имеет тенденцию переопределять другой (без предупреждения конечно ...).

  2. Когда я выбираю «Построить и архивировать» (кстати, очень интересная особенность), он снова позволяет мне кодировать знак. Какая здесь разница?

  3. Многие форумы указывают на параметр в Entitlements.plist, называемый «get-task-allow» (который должен быть установлен в false). Однако, когда я создаю файл разрешений в XCode, такой строки нет. Означает ли это, что Apple исправила эту ошибку / функцию?

  4. В чем разница между «Идентификацией подписи кода» и «Любым устройством iOs»?

  5. В чем разница на портале инициализации между "Разработка" и "Распространение"?

  6. На том же портале, когда вы создаете новый профиль для распространения, в чем разница между Ad Hoc и App Store? Я слышал, как люди говорят (и я полагаю, что я испытал это и в прошлом), что вы можете использовать профиль App Store для Ad Hoc распространения (возможно, не наоборот). Опять же, это может произойти из-за моей путаницы, если XCode использует несколько профилей одновременно, поэтому не ясно, какой профиль делает что.

Моя ситуация:

Я использую XCode 3.2.4 с SDK 4.1. Приложение отлично работает на моем телефоне (что на самом деле затрудняет отладку). Ошибки, которые мои друзья продолжают получать, варьируются от «Недействительные права» до 0xE8003FFE и 0x800ccc0e, в зависимости от того, что я им отправляю. У одного есть iPhone 3G, у другого - iPod touch. Оба работают под управлением iOS 4.1 и не имеют джейлбрейка. Оба не имеют «ограничения» включены.

У меня есть два приложения: * com.isimplifiedchinese.teacher * com.isimplifiedchinese.student

Мне удалось распространить приложение ученика, собрав устройство, а затем вручную создав файл .ipa (это было до того, как я узнал о функции «Сборка и архивирование»). Я пока не могу распространять его с помощью функции Build & Archive. Но я бы хотел сосредоточиться на приложении учителя, которое я никак не могу распространять (хотя оно работало в прошлом, до того, как я начал что-то менять).

В моем профиле обеспечения у меня есть (для заявления учителя): * один сертификат на разработку * один сертификат для распространения * список устройств, включая мое собственное и тех двух друзей * профиль обеспечения для разработки (со мной и моими двумя друзьями в нем) * профиль обеспечения для распространения (со мной и двумя моими друзьями в нем). Он настроен для «App Store» (но я также пробовал «Ad Hoc» в прошлом, хотя, возможно, с другими вариантами в других местах)

Все профили все еще действительны. Все они перечислены в XCode Organizer и, похоже, актуальны.

Развертывание установлено на устройстве 4.1 - Ad hoc. И в проекте, и в настройках целевой сборки: * Я добавил «Entitlements.plist» в «Права подписи кода». * для идентификации подписи кода выбран автоматический выбор, который указывает на мой сертификат iPhone Distribution и профиль App Store для приложения.* Любое устройство iOS установлено на мой сертификат разработчика iPhone (оно не установлено на автоматическое, потому что, если я это сделаю, оно указывает на профиль обеспечения моего студенческого приложения).

Когда я выбираю «Построить и архивировать», а затем «Поделиться приложением», я установил для Identity «Распределение iPhone» (что соответствует iPhone Distribution - App Store).

Я регулярно, но не всегда, использовал Clean All Targets во время моей борьбы

Еще одна вещь, которая может или не может иметь отношение: я начал с приложения учителя и через некоторое время клонировал и переименовал приложение клона в студента. Студенческое приложение использует общие библиотеки из приложения учителя, но не наоборот.

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

1 Ответ

1 голос
/ 26 сентября 2010

Действительно много вопросов ... Некоторые ответы:

Q4. Идентификационная подпись кода - это имя записи, которая может включать несколько вложенных записей: вы можете подписать ее с разными идентификационными данными для каждой возможной платформы. Например. вы подписываетесь с идентификатором X для устройств iOS 3.2 и с идентификатором Y для устройств iOS 4.

Q5. Разработка против распространения: когда вы разрабатываете свое приложение, вы подписываете его своим профилем разработки, чтобы авторизованные устройства могли его принять, когда вы готовы к развертыванию приложения, вы подписываете его своим профилем распространения, который будет принимать только App Store. , Затем Apple применяет свою собственную подпись к приложению, чтобы любое устройство могло принять ее при загрузке из магазина приложений.

Q6. Дистрибуция в магазине приложений предназначена для продажи вашего приложения через Apple App Store, а рассылка Ad Hoc предназначена для распространения вашего приложения через «собственный магазин приложений для предприятий», а ваше приложение недоступно в App Store.

...