Запуск и тестирование своих 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, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.

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

Опубликовано в Iron ribbon, Уроки Метки:
30 комментариев на “Запуск и тестирование своих iOS-приложений на устройстве без аккаунта разработчика и без Jailbreak
  1. Александр:

    Большое спасибо за статью. Очень полезно!

  2. Сергей:

    Большое спасибо! Как раз то, что надо!!! Буду пробовать )

  3. Александр:

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

    • admin:

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

    • admin:

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

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

  4. Александр:

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

    • Alex:

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

  5. Алексей:

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

  6. Сергей:

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

    • admin:

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

  7. Иван:

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

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

    • admin:

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

  8. Anton:

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

    • admin:

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

      • Anton:

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

        • Олег Д:

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

        • admin:

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

  9. Anton:

    Кто-нибудь пользовался вот этим клиентом, он безопасен? https://m.vk.com/onescript

    • admin:

      Я против Jail. Для iOS это не нужно

      • Anton:

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

        • admin:

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

  10. Елена:

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

    • admin:

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

      • Елена:

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

  11. Артур:

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

    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’.

  12. Армен:

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

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

    • admin:

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

  13. Вадим:

    Огромное спасибо! Помогло!

  14. Сергей:

    Толковая статья. Спасибо. Все работает, без танцев с бубном!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*