У меня серьезные проблемы с запуском одного из приложений на iPhone других людей. Другое мое приложение работает нормально, так что я полагаю, что на каком-то уровне могу сделать это правильно.
Я пробовал много разных вещей, основанных на поиске в Google, но слишком много перестановок. Пришло время узнать, что на самом деле происходит. Пока я углубляюсь в документацию, у меня есть несколько вопросов, которые, надеюсь, некоторые люди здесь могут прояснить для меня:
Я заметил, что могу установить параметры «Права» и «Подписание кода» как в проекте (двойной щелчок по верхнему элементу в разделе «Группы и файлы» с названием проекта), так и по «Цели» (в разделе «Цели», дважды щелкните по названию вашего проекта). В чем разница между этими двумя? Я знаю, что с путями заголовка, один имеет тенденцию переопределять другой (без предупреждения конечно ...).
Когда я выбираю «Построить и архивировать» (кстати, очень интересная особенность), он снова позволяет мне кодировать знак. Какая здесь разница?
Многие форумы указывают на параметр в Entitlements.plist, называемый «get-task-allow» (который должен быть установлен в false). Однако, когда я создаю файл разрешений в XCode, такой строки нет. Означает ли это, что Apple исправила эту ошибку / функцию?
В чем разница между «Идентификацией подписи кода» и «Любым устройством iOs»?
В чем разница на портале инициализации между "Разработка" и "Распространение"?
На том же портале, когда вы создаете новый профиль для распространения, в чем разница между 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 во время моей борьбы
Еще одна вещь, которая может или не может иметь отношение: я начал с приложения учителя и через некоторое время клонировал и переименовал приложение клона в студента. Студенческое приложение использует общие библиотеки из приложения учителя, но не наоборот.
Нет нужды говорить, что здесь слишком много перестановок и слишком много магии (с моей точки зрения). Надеюсь, вы либо поможете мне лучше понять эту систему, либо волшебным образом направите меня в правильном направлении, чтобы мне больше не пришлось об этом беспокоиться.