Запуск и тестирование своих iOS-приложений на устройстве без аккаунта разработчика и без Jailbreak

При разработке мобильных iOS приложений в среде XCode запуск и тестирование происходит на симуляторе. Однако каждый профессиональный разработчик вам скажет, что окончательную отладку нужно  производить на реальных устройствах. Причем лучше на нескольких различных устройствах. На iPhone 5, на iPhone 6, на различных версиях iPad и iPod. Однако для этого политика компании Apple заставляет приобрести аккаунт разработчика. Он стоит $99 и для начальных шагов в программировании не всегда оправданы эти затраты. И вот наконец, просьбы разработчиков были услышаны и появился способ легального запуска своих приложений на реальных устройствах и этот способ абсолютно бесплатный.

Были различные варианты решения этой проблемы от установки на устройство Jailbreak до недорогого варианта добавления UDID устройства к реально существующему аккаунту разработчика. (Последний способ стоит 300 руб).  Но как написано выше с выходом XCode 7 эта проблема была решена.

Так что же нужно для запуска своих приложений на реальном устройстве?

Все что вам нужно, это Apple ID! Больше ничего не нужно.

Подключение устройства

Подключите iPhone, Ipod Touch, или IPad к вашему Mac с помощью кабеля USB кабеля. В меню Xcode зайдите Window → Devices, чтобы открыть список устройств. Окно выглядит следующим образом (я использую iPad Air):

test_your_app_4_proSwift_ru

В левой панели окна Xcode находится список устройств, которые могут быть использованы для запуска разработанных приложений. Нажмите на изображение вашего устройства, чтобы выбрать его. Если устройство используется впервые вместе с Xcode, вы увидите сообщение  что-то вроде, «“iPad is not paired with your computer.«

test_your_app_5_proSwift_ru

Для того чтобы связать устройство с Xcode вам нужно разблокировать устройство (Slide to unlock). После разблокировки, на экране устройства появится сообщение с просьбой доверять этому компьютеру. Нажмите «Разрешить» чтобы продолжить. Теперь Xcode выведет страницу, на которой напишет что позволяет использовать устройство для тестирования.

Дайте ему несколько минут — если процесс занимает слишком много времени, возможно потребуется отсоединить устройство и подключить его снова. Есть вероятность, что выскочит сообщение об ошибке:  «An error was encountered while enabling development on this device.» Потребуется отключение устройства и перезагрузка его. Также перезапустите Xcode, прежде чем вы снова подключите устройство.

Так должно выглядеть окно с сопряженным устройством:

test_your_app_6_proSwift_ru

Настройка AppleID

Теперь, когда устройство сопряжено с компьютером, нужно связать ваш AppleID с Xcode. Можно использовать тот же идентификатор AppleID, что вы уже используете с Itunes  и вашим устройством, однако, если вы разрабатываете корпоративное iOS приложение, то можете создать новый AppleID, чтобы разделить процессы разработки. Конечно, если у вас уже есть оплаченный аккаунт разработчика вы должны использовать именно его

Откройте  меню  Xcode -> Preferences  -> Accounts:

test_your_app_7_proSwift_ru

Нажмите кнопку «+»  внизу и выберите «Add Apple ID«. Xcode попросит логин и пароль от AppleID. Введите их и нажмите «Add«. Xcode проверит ваши данные и добавит их к списку аккаунтов.

Примечание: возможно Xcode не сможет использовать ваш Apple ID при условии, если он был ранее был использован как аккаунт разработчика, срок действия которого в настоящее время истек. Простейшим решением в этом случае является создание нового Apple ID. Это бесплатно и займет всего несколько минут. https://appleid.apple.com

Настройка проекта XCode

Вы все еще должны указать Xcode использовать эту учетную запись при создании вашего приложения.  Перейдите к экрану настроек проекта и на вкладке General нажмите на Team, чтобы выбрать ваш  Apple ID.

test_your_app_8_proSwift_ru

Ниже поля выбора команды вы видите предупреждение, «No code signing identities found» или «No matching provisioning profiles found«. Не лишним будет знать, что означают эти предупреждения. Для того чтобы Xcode мог запустить приложение на вашем iPhone, iPad или iPod, приложение должно быть подписано цифровой подписью с сертификатом на разработку (Development Certificate). Сертификат является электронным документом, который идентифицирует вас как разработчика iOS приложений и действует только в течение ограниченного периода времени. Приложения, которые вы хотите представить в App Store должен быть подписаны другим сертификатом «Distribution Certificat». Для использования Distribution Certificat необходимо быть членом платной программы разработчиков, однако использование сертификата разработки (Development Certificate) является бесплатным. В дополнение к действующему сертификату также необходим так называемый профиль обеспечения (Provisioning Profile) для каждого приложения которое вы разрабатываете. Xcode использует эти документы чтобы подписать приложение для запуска на вашем устройстве.

Специфика данных документов на первоначальных этапах разработки не имеет значения. Просто примите, что вам нужен Provisioning Profile или приложение не будет работать на вашем устройстве. Создание сертификатов и Provisioning Profile, в XCode 7 это очень простая задача!

Нажмите кнопку Fix Issue. Нужно немного подождать пока  Xcode автоматически регистрирует устройство с вашей учетной записью, создает новый сертификат разработки, загружает и устанавливает Provisioning Profile на ваше устройство. Раньше вы должны были бы сделать это все вручную, но теперь Xcode 7 берет всю работу на себя. В этот момент возможно вы увидите следующее сообщение об ошибке:

test_your_app_a_proSwift_ru

Идентификатор пакета Bundle Identifier — это идентификатор приложения и он должен быть уникальным. Если какое либо другое другое приложение уже использует этот идентификатор, то вы не можете его использовать.

Поэтому для 100% уникальности следует указывать собственное доменное имя для Bundle ID, например ru.proswift.TestApp. Исправить эту ошибку легко: измените Bundle Identifier и повторите попытку.

Также возможно вы получите эту ошибку:

test_your_app_b_proSwift_ru

Xcode должен знать об устройстве на котором вы собираетесь запустить приложение. Вот почему мы начали именно с подключения устройства. Еще раз проверьте, что ваш iPhone или iPad по-прежнему подключен к Mac, и что ваше устройство есть списке Devices. У меня это окно выглядит так:

test_your_app_6_proSwift_ru

В основном окне XCode еще раз выберете ваше устройство и нажмите кнопку Fix Issue и предупреждение должно исчезнуть.

test_your_app_f_proSwift_ru

Настройка связки ключей

Все настроено и готово к работе. Нажмите Run, чтобы скомпилировать и запустить приложение. В этот момент вы можете получить всплывающее окно с вопросом «codesign wants to sign using key … in your keychain». Если вышло это сообщение, нажмите Always Allow — т.е. разрешать всегда. Это сообщение говорит о том,  что Xcode пытается использовать новый сертификат разработки, который вы только что создали, но просит дать ему разрешение для этого.

Ваше приложение заработало на устройстве без аккаунта разработчика и без Jailbreak? Потрясающие! Если нет, то читайте дальше …


 Возможные проблемы и их решение

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

Устройство не подключено.

Как ни странно это самая распространенная ошибка, поэтому я напишу о ней в третий раз в этой статье. Убедитесь, что ваш iPhone, iPod Touch, или iPad подключены к Mac. Устройство должны быть списке устройств Xcode, и на нем не должно быть желтого значка предупреждения,  о том что устройство не доверяет компьтеру.

Подозрительный не одобренный Apple разработчик.

test_your_app_d_proSwift_ru

Если XCode выдаст такое сообщение, а на устройстве выйдет сообщение с текстом «Untrusted Developer. Your device management settings do not allow using apps from developer «, не нужно втираться в доверие к Apple :-).  Для решения этой проблемы откройте на устройстве Настройки -> Основные -> Управление Устройством. Выберете профиль вашего Apple ID и вы увидите список приложений на устройстве, которые нужно перевести в разряд «Проверенные». Попробуйте снова запустить приложение.

Test_your_ios_app_free_1_proSwift_ru

  Test_your_ios_app_free_3_proSwift_ru

 Test_your_ios_app_free_2_proSwift_ru

Устройство заблокировано.

Если на устройстве установлен пароль, то  вы можете получить это предупреждение:

test_your_app_free_e_proSwift_ru

Приложение не будет работать если устройство заблокировано. Для решения нужно разблокировать устройство и запустить компиляцию еще раз.

Надеюсь данная информация будет вам полезна. По себе знаю, что начиная разрабатывать iOS приложения, разработчики сталкиваются с проблемой тестирования своих приложений на реальных устройствах. А несправедливость в виде $99 никак не греет душу брата программиста. И даже если разработчик решается на Jaibreak, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.

С нетерпением жду комментариев и критику статьи.

45 Comments on “Запуск и тестирование своих iOS-приложений на устройстве без аккаунта разработчика и без Jailbreak

  1. Скажите пожалуйста, почему в списке симуляторов нету первого iPad?
    А также когда я подключаю мой iPad 1 к Mac Mini 2014 его нету в списке устройств?

    • Я обязательно посмотрю сегодня вечером и попытаюсь ответить на ваш вопрос.

    • Хотя ответ оказался проще, чем предполагалось…
      Дело в том, что Apple прекратила поддержку оригинального iPad и последней версией iOS на нем стала, если не ошибаюсь, iOS 6.

      Xcode 7 не поддерживает разработку приложений для старой версии iOS.

  2. Значит если я хочу написать приложение под iPad 1 мне нужно использовать старую версию Xcode?

    • Начиная с версии 7.0 Xcode поддерживает только 64 код. Arm v6 что на Ipad 1 — только 32 битный.
      Старые версии XCode можно найти официально на сайте Apple. https://developer.apple.com/downloads/
      Для скачивания требуется действующая учетка разработчика. Можно зарегистрироваться и как Safari разработчик.
      Вот с сертификатом разработчика для заливки на устройство я не знаю как получится

  3. Здравствуйте!
    Огромное спасибо за полезную статью с отличным балансом подробность/простота понимания!
    Поставил Ваш сайт себе в закладки, буду изучать дальше.

  4. Спасибо за статью! Есть вопрос: возможен ли такой вариант отладки — На macOS один AppleID, а на устройстве отладки другой?

    • Да, возможен. При создании сертификата тестирования не имеет значение какой AppleID используется на Mac. Сертификат создается именно для устройства.

  5. После кнопки фикс пишет такое:

    Creating a profile requires having a device registered in the Member Center.

    • Посмотрите внимательно пункт инструкции Настройка AppleID. Обязательно добавьте AppleID в настройки XCode, а также удостоверьтесь, что ранее этот AppleID не являлся аккаунтом разработчика.

  6. К каким данным будет иметь доступ приложение помеченое как «доверенное» в настройках > основные > Управление устройством?

    • Это доверие не является разрешение доступа к каким-либо данным. Это разрешение на запуск этого приложения на устройстве.
      ПО поводу доступа к данным:
      Как и любому другому приложению для iOS для доступа к данным (контакты, геопозиция, микрофон, камера и т.д.), Вам, как разработчику, нужно в коде запросить это разрешение у системы, которая, в свою очередь, запросит разрешение у пользователя. Думаю, Вы часто видели запрос на отправку push-уведомлений при старте приложений. Такой же запрос разрешения будет на камеру, микрофон, календари… И только после разрешения пользователя приложение получит доступ к нужной информации. Или не получит, если пользователь не согласится.

      • А само приложение может без ведома пользователя «украсть» разрешённые в настройках данные, к примеру фотографии или получить доступ к камере и микрофону? И как узнать об этом пользователю?

        • Может, если Вы дадите разрешение на доступ к данным объектам устройства.

        • И такое возможно. Ничего не мешает написать приложение, которое перебирает все фото после полученного разрешения и отправляет их на сторонний сервер. Однако, подобное приложение не пройдет контроль при попытке размещения в AppStore. Комиссия Apple не допускает чего-либо подобного. Данное приложение будет работать на устройстве, на которое Вы самостоятельно его поставите вышеописанным способом.

      • Для установки как раз не нужен джейл. Этот твик распростроняется через сайт. Просто заходишь и скачиваешь приложение на iдевайс.

        • А! Ну если эти речь шла про эти приложения — то да! Модифицированные приложения запросто могут угнать информацию с телефона.

  7. Приветствую! Установила ios-приложение без регистрации аккаунта разработчика (на сайте эппл) на iPad4. Примерно сутки приложение запускается на айпаде. Затем — перестает (и из Настройки-Основные пропадает пункт «Управление устройством»). Так и должно быть?

    • При запуске приложения Xcode автоматически формирует все необходимые сертификаты и записывает их на устройство. Эти сертификаты имеют очень ограниченный период жизни. Попробуйте подсоединить устройство к mac и осуществить компиляцию приложения и его запуск на устройстве еще раз. На моей практике приложение запускалось не более месяца.
      А отсутствие пункта «Управление устройством» я объяснить не могу. У меня не было такой ситуации, и решения данной проблемы у меня нет. Единственное что могу предположить — а у вас AppleID для разработки совпадает с AppleId на устройстве? Может в этом проблема?

      • Да, совпадает. Ситуация повторяется не в первый раз. Спасибо за ответ! Буду разбираться.

  8. А у меня вот такая проблемы:

    The ‘In-App Purchase’ feature is only available to users enrolled in Apple Developer Program. Please visit
    https://developer.apple.com/programs/ to enroll.

    No profiles for ‘com.sector.binarywars’ were found
    Xcode couldn’t find a provisioning profile matching ‘com.sector.binarywars’.

  9. Доброго времени суток.
    У меня стоит версия Xcode 6.2(Mavericks), возможно ли вышеописанным методом попробовать подключить мой iPhone 6 к Xcode или бессполезно.

    Заранее спасибо

    • К сожалению не т. Такая возможность есть у пользователей Xcode 7 и выше. В Вашем случае может подойти вариант с покупкой сертификата разработчика( присоединение к команде). На просторах нашего интернета это стоит порядка 300 руб за 10 мес.

  10. Приветствую!У меня такой вопрос
    Если на реальном устроистве установлено приложение и я хочу воспользоватся Instruments (Leaks например) из Developer Tools, то при открытии окна Leaks и выборе подключенного девайса с указзанным приложением при нажатии на Record,ругается
    The app must be signed with a development identity (e.g. iOS Developer).для выбранного приложения
    Возможно ли это в принципе?пользоватся Developer Tools на реальном устроистве с установлено приложением

    • Я попробую, но судя по всему работать должно. А Ваш аккаунт зарегистрирован в качестве разработчика? Не распростанителя — это платно, а именно в developer программе Apple зарегистрирован Ваш Apple ID?

  11. Здравствуйте! вопрос такой: написав приложение я могу его поставить на свой девайс с бесплатной учеткой..но возникла потребность установить другому человеку для теста, но необходимо это сделать удаленно без xcode. возможно ли это сделать на бесплатной учетке?

    • Это возможно сделать только если на другом телефоне будет Ваша учетная запись. Все остальные варианты, — только после оплаты участия в программе разработчиков.

    • И без Xcode также не возможно.

      Либо сделайте Jailbreak — тогда ограничения не будут существовать

  12. Здравствуйте! Все сделала, как написано, но мне выбивает ошибку: Task failed with exit 1 signal 0 {
    В чем может быть проблема? И как ее решить?

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

      Вот рецепт:

      Закройте Xcode.
      Откройте связку ключей.
      Найдите сертификат разработчика iOS в Local.
      Перетащите сертификат из Local на вкладку System.
      Введите пароль администратора при появлении запроса.
      Запустите Xcode и соберите проект для вашего устройства.

      Сам не проверял. За работоспособность ручаться не могу.
      Ссылка на оригинал: тут

      https://stackoverflow.com/questions/41205250/swift-sdtlib-tool-error-task-failed-with-exit-code-1

  13. Приветствую!!!

    Стоит Xcode 10. Компилирую приложение. Выходит сообщение «Succeeded», но на iphone с IOS12 приложения не появляться, подскажите в какую сторону копать

      • Устройство отображается все нормально. После компиляции еще выходит всплывающее окно «The file «1cem» couldn’t be opened because you don’t have permission to view it.»

        XCode 10
        macOS High Sierra

        • Я очень извиняюсь, но на текущий момент не могу расписать все возможные рецепты лечения данной проблемы из-за катастрофической нехватки времени. Однако тут

          https://stackoverflow.com/questions/24924809/the-file-myapp-app-couldnt-be-opened-because-you-dont-have-permission-to-vi

          есть варианты ее решения. Очень надеюсь, Вам поможет один из них.

          Более того, я у себя проверил — у меня проблем не было. Если бы возникла проблема, то я бы смог ее покопать поглубже. Возможно Вы пытаетесь запустить проект, который писался под предыдущие версии компилятора.

          • Да вы правы. Проект сформирован при помощи специальной конфигурации под 1С и уже потом загружен в XCode. По ссылке которые вы дали я пробовал, но так как опыта мало результата не добился. Может вы сможете посмотреть мой проект. Естественно на платной основе ?

  14. Сделал приложение в unity с vuforia, скомпенсировал, открываю в Хкоде….
    Во вкладке аккаунт мой apl id есть (personal team, role — user), в списке устройств iPhone активирован
    А вот кнопка team не активна, и в provisioning profile пусто — либо импорт профиля разработчика чего естественно нет, либо импорт из finder….
    А внизу под этим всем ошибка:
    Requires a provisioning profile
    Подскажите — что делать? Второй день мучаюсь(

Добавить комментарий для Alex Отменить ответ

Ваш адрес email не будет опубликован.

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.