Как запустить приложение xcode
Для начала, если у Вас еще не установлено приложение Xcode, то Вам следует его установить из App Store. На момент написания данного раздела актуальной версией Xcode была 5.0, версией OS X - 10.9.
Если Xcode установлено, то начнем с его запуска.
Выберите в меню Xcode: File > New > Project.
В появившемся диалоге выберите OS X Application, Cocoa Application и нажмите Next.
Далее введите наименование Вашего первого приложения, пусть оно будет First app, и, что очень полезно, введите префикс для Ваших классов, который будет автоматически генерироваться при создании новых классов системой Xcode. Префикс должен быть уникальным, чтобы избежать конфликта пространства имен. Большинство классов Cocoa имеют префикс NS , пусть в нашем первом приложении будет префикс mb .
Далее выведится диалог, в котором необходимо выбрать место для сохранения проекта на диске.
Итак, Xcode создало начальный макет нашего первого OS X Cocoa приложения, в инспекторе файлов проекта мы увидим следующее дерево файлов:
Нажмем кнопку Run, или Cmd+R, или в меню выберем Product > Run, чтобы собрать и запустить проект.
Вы должны увидеть пустое окно с заголовком, содержащем название нашего проекта, а также в системной области меню,- меню приложения.
Закроем окно приложения, при этом само приложение будет продолжать работать и висеть в доке. Чтобы прекратить его работу необходимо выйти через меню приложения, (в нашем случае) First app > Quit First app, или комбинацией Cmd+Q.
Чтобы изменить это поведение реализуем один из методов делегата приложения, чтобы приложение завершало свою работу после закрытия последнего окна. Для этого откроем файл mbAppDelegate.m и добавим следующий метод:
Вновь запустим приложение, и закроем окно. Как видим теперь при закрытии окна приложение прекращает свою работу.
Реализация вышеприведенного метода по умолчанию возвращает NO .
Выберем в инспекторе файлов проекта MainMenu.xib, в инспекторе объектов выделяем объект Window, в редакторе отобразится форма нашего главного окна приложения.
В инспекторе элементов управления находим и перетаскиваем на форму окна два элемента ввода Text Field, один элемент Wrapping Label, и одну кнопку Push Button:
Расставим элементы на форме окна следующим образом:
Дальше, чтобы добавить интерактивность в приложение и сделать его хоть малость функциональным, необходимо получить возможность получать и предоставлять данные из и в поля ввода и отображения текста. Для этого в заголовочном файле mbAppDelegate.h пишем следующие объявления заключенные в фигурные скобки:
IBOutlet - компиляторная опция Xcode, сообщающая, что переменная является указателем на объект в связанном nib файле.
Собственно после добавления вышеприведенных объявлений соединим их с элементами на форме. Для этого опять выделим MainMenu.xib и переведем редактор в режим Assistant editor.
В альтернативном окне редактора выберем для отображения файл mbAppDelegate.h
Напротив каждого вновь задекларированного свойства IBOutlet появится пустой кружок, нажав который необходимо протянуть связь к соответствующему элементу на форме главного окна. Как только указатель связан, кружок заполнится.
Таким образом соединяем все три указателя с соответствующим текстовым полем в окне.
Теперь создадим обработчик события нажатия на кнопку. Для этого выделим кнопку в окне и зажав правую кнопку мыши перетащим связь в окно редактора mbAppDelegate.h за пределы фигурных скобок, как показано ниже.
Отпустим правую кнопку мыши и в появившемся диалоге выберем создание Action, а также введем имя обработчика события, например clickSumm. Нажимаем Connect, и наш метод обработки события нажатия кнопки создан.
Таким-же способом можно было создать и указатели на элементы управления, но Xcode создаст их как свойства класса, с геттерами и сеттерами, видимыми другим классам, и если Вам нет надобности в видимости их за пределами классов, лучше сделать как описано выше, избежав создания кода геттеров и сеттеров.
Далее перейдем в режим редактора Standart Editor, выберем файл mbAppDelegate.m , и отредактируем вновь созданный метод:
Данный метод объединяет две введенные, в поля ввода, строки в одну через пробел, с помощью метода форматирования строк, и полученную новую строку присваивает свойству stringValue элемента NSTextField .
Запустим приложение, введем текст в поля ввода и нажмем кнопку. Результат: объединенные через пробел строки в поле Wrapping Label.
Добавим еще две кнопки в главное окно и аналогично создадим для каждой обработчик clickUp и clickDown соответственно.
Отредактируем созданные обработчики событий нажатия кнопок в файле mbAppDelegate.m .
Первый метод приводит содержимое элемента Wrapping Label к верхнему регистру, второй к нижнему.
При разработке мобильных 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):
Так должно выглядеть окно с сопряженным устройством:
Настройка AppleID
Теперь, когда устройство сопряжено с компьютером, нужно связать ваш AppleID с Xcode. Можно использовать тот же идентификатор AppleID, что вы уже используете с Itunes и вашим устройством, однако, если вы разрабатываете корпоративное iOS приложение, то можете создать новый AppleID, чтобы разделить процессы разработки. Конечно, если у вас уже есть оплаченный аккаунт разработчика вы должны использовать именно его
Откройте меню Xcode -> Preferences -> Accounts:
Настройка проекта XCode
Вы все еще должны указать Xcode использовать эту учетную запись при создании вашего приложения. Перейдите к экрану настроек проекта и на вкладке General нажмите на Team, чтобы выбрать ваш Apple ID.
Специфика данных документов на первоначальных этапах разработки не имеет значения. Просто примите, что вам нужен Provisioning Profile или приложение не будет работать на вашем устройстве. Создание сертификатов и Provisioning Profile, в XCode 7 это очень простая задача!
Также возможно вы получите эту ошибку:
Xcode должен знать об устройстве на котором вы собираетесь запустить приложение. Вот почему мы начали именно с подключения устройства. Еще раз проверьте, что ваш iPhone или iPad по-прежнему подключен к Mac, и что ваше устройство есть списке Devices. У меня это окно выглядит так:
В основном окне XCode еще раз выберете ваше устройство и нажмите кнопку Fix Issue и предупреждение должно исчезнуть.
Настройка связки ключей
Возможные проблемы и их решение
Есть несколько ошибок, которые могут возникнуть при попытке запуска своего iOS приложения на реальном устройстве, особенно если вы никогда не делали этого раньше. Так что не паникуйте, если вы столкнетесь с проблемами.
Устройство не подключено.
Как ни странно это самая распространенная ошибка, поэтому я напишу о ней в третий раз в этой статье. Убедитесь, что ваш iPhone, iPod Touch, или iPad подключены к Mac. Устройство должны быть списке устройств Xcode, и на нем не должно быть желтого значка предупреждения, о том что устройство не доверяет компьтеру.
Подозрительный не одобренный Apple разработчик.
Устройство заблокировано.
Если на устройстве установлен пароль, то вы можете получить это предупреждение:
Приложение не будет работать если устройство заблокировано. Для решения нужно разблокировать устройство и запустить компиляцию еще раз.
Надеюсь данная информация будет вам полезна. По себе знаю, что начиная разрабатывать iOS приложения, разработчики сталкиваются с проблемой тестирования своих приложений на реальных устройствах. А несправедливость в виде $99 никак не греет душу брата программиста. И даже если разработчик решается на Jaibreak, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.
В этой статье рассмотрим, как добавить поддержку устройств с IOS 12 и выше в Xcode 10. А так же подключить Iphone и запустить на нем свое приложение.
1. Настройка поддержки IOS 12 и выше в Xcode 10
В Xcode 10 не поддерживаются устройства с IOS 12 и выше, поэтому протестировать на реальном устройстве невозможно. Но можно установить поддержку. Делается это очень легко.
Скачиваем папку с поддержкой необходимой версии IOS отсюда . В моему случае 12.4. Далее кликаем правой кнопкой на иконке Xcode и выбираем «Показать содержимое пакета». Копируем папку по пути /Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport. Перезапускаем Xcode и теперь ваше устройство будет подключаться без проблем.
2. Xcode запуск приложения на iphone
Вот и все. Примерно так выглядит подключенное устройство:
3. Получение сертификата
Первым делом добавляем свой аккаунт Apple по этому пути Xcode → Preferences → Accounts нажатием кнопки +.
Теперь в самом проекте добавляем наш аккаунт:
Bundle Identifier должен быть уникальным для всех приложений Apple, иначе возникнет ошибка. Поэтому желательно придумать собственных префикс.
Вот и все. Теперь при компиляции проекта, программа будет автоматически загружена и запущена на вашем реальном устройстве.
Если на устройстве возникает ошибка недостоверного сертификата, то необходимо разрешить сертификат в разделе Настройки → Основные → Управление устройством.
Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:Простое приложение, которое при запуске внутри себя открывает сайт по заданному URL. 1. Создаем в Xcode Single View Application. 2. Для перехода в визуальный режим кликаем 2 раза по Main.storyboard. Перед нами открывается окно с устройством. Если справа у вас не появилась Читать далее
Xcode среда программирования для разработки приложений для MacOS, iOS, WatchOS и TvOS. Самое главное, что это единственная среда, где вы сможете протестировать свое приложение на реальном устройстве и без активации аккаунта разработчика. В предыдущих статьях мы говорили о том, как Читать далее
Виртуальная машина с MacOS быстрее и стабильнее работает на VMware Workstation Pro. К тому же нет проблем с подключением внешних устройств. У меня получилось развернуть систему гораздо быстрее и не было никаких проблем с разрешением экрана, подключением Iphone и видеопамятью, Читать далее
Бывает нужно протестировать проект на MacOS, например в Safari. Или нужно сделать небольшое приложение для IOS и протестировать его на реальном устройстве. Тут есть 3 варианта. Конечно же самый лучший это реальный Mac. Второй это хакинтош и третий собственно виртуальная Читать далее
Довольно распространённая проблема, когда после добавления ссылки на внешнюю страницу в соц. сеть, её данные, в том числе и изображение, кэшируются, и при последующем изменении остаются прежними. В этой статье вы узнаете, как можно очистить кэш расшариваемых внешних страниц сайта Читать далее
Wappalyzer - это кроссплатформенная утилита, которая определяет технологии, используемые на веб-сайтах. Она обнаруживает системы управления контентом, платформы электронной коммерции, веб-фреймворки, серверное программное обеспечение, аналитические инструменты и многое другое. Установить Weppalyzer можно как плагин для браузеров Google Chrome и Firefox, а Читать далее
В статье будет кратко описано, как собрать приложение консольными командами и запустить на реальном девайсе и симуляторе без какой-либо надобности открывать xcode для этого.
В общем, стоит начать с того, что в моей компании имеется отдел ios разработки в составе > 10 человек, которые работают над пачкой приложений. Для автоматизации рутинной работы нам пришлось развернуть CI сервер (пока самописный, ввиду особых исторических причин (ну как у всех), планируется миграция на jenkins). К рутинным вещам я отношу — сборку проектов, запуск тестов (если, конечно, вы их пишете), создание ипашек для тестеров и для выкладки в app store. В общем, хотелось чтобы по нажатию кнопочки или по хуку в гите всё это начинало работать. Пока у нас всё работает по нажатию кнопки разработчиком, про гит пока только в планах. В данной статье я только затрону тему компиляции проекта и упаковку его в ipa файла. Функционал запуска проектов на девайсах на стороне CI сервера еще находится в стадии разработки, а вот сам процесс упаковки уже давно в «бою», может кому пригодиться.
- соберем приложение и запустим на симуляторе
- соберем ipa и запустим на реальном девайсе
- соберем ipa для выкладки на маркет
- немного подэбажим ошибки сборки
Пробуем компилировать приложение. Собираем под симулятор, так как для сборки проекта под симулятор не нужны сертификаты/провижен файлы.
Билд падает, так как нет схемы ORKCatalog. Так как схема в оригинальном проекте не была помечена как shared, то после “слива” из гита, xcode еще ничего не знает об этой схеме, чтобы он ее снегирил, нужно просто открыть проект. Поэтому просто открываем проект:
И сразу же закрываем, после наша схема появится, проверить схемы можно через xcodebuild -list. Пробуем собрать снова:
После видим долгожданное ** BUILD SUCCEEDED **. Отлично, всё работает.
Запускаем проект на симуляторе
Компилируем под симулятор, архитектуры могут быть i386/x86_64. Через SYMROOT задаем путь результата сборки:
(Мысли вслух: когда писал статью, компиляция в режиме Release работала, перед публикацией статьи еще раз проверил все шаги и компиляция в этом режиме перестала работать, поэтому собираем в Debug, какие-то из последних коммитов это сломали.)
Получаем список доступных симуляторов:
Из предложенного списка я выбрал 'iPhone-6-Plus'. Запускаем приложение на нем:
Если всё правильно сделали, то должен запуститься симулятор с приложением (для входа в режим ввода в консоли используйте ctrl + C).
Создание ipa файла и запуск на реальном девайсе
Тут немного сложнее, нам нужен mobileprovision файл для разработки (developer) и наличие сертификата на машине (p12 файл), при этом наличие аккаунта в xcode не нужно. При подписании/упаковки приложений из консоли нет необходимости добавлять аккаунт в xcode, это очень помогает, например, на CI сервере можно держать только p12 файлы.
Собираем архив под девайс (это архитектуры arm64/armv7):
Компиляция упадет, так как мы еще не прописали в приложении свой bundle id и не прилинковали mobileprovision, ошибка будет такого вида:
Будем передавать bundle id из консоли + нужно прописать его в Info.plist файле. Также через консоль будем передавать линк на наш mobileprovision. Plist файл находим по пути ORKCatalog/Supporting Files/Info.plist, в котором для ключа CFBundleIdentifier выставляем значение ru.habrahabr.test. Bundle id передаем через ключ со значением нашего ид PRODUCT_BUNDLE_IDENTIFIER=ru.habrahabr.test. Линк на mobileprovision передаем через ключ PROVISIONIG_PROFILE, со значние UUID, который прописан в mobileprovision.
Значение будет подобно 87b0df89-793a-4a0f-92bf-c5f9c35f1405. Снова собираем:
В итоге получим архив build/archive.xcarchive, который осталось упаковать в ipa. В xcode 7 появился новый метод упаковки, им и воспользуемся. Перед этим создадим конфиг файл options.plist с таким содержанием:
Пробуем собирать ipa:
Сборка падает, по логам можно понять, что что-то с entitlements:
По ошибке ясно, что приложение подписываем entitlements, значения в котором не соответствуют значениям в нашем mobileprovision, а именно com.apple.developer.healthkit. Ищем причину. Смотрим каким entitlements подписано приложение:
Видим, что всё ок, за исключением этого:
У нас в mobileprovision нет этой опции, нужно выяснить, откуда это взялось:
Поиск нам выдал ORKCatalog/Supporitng Files/ORKCatalog.entitlements. Смотрим что внутри:
Там только одно значение:
По логике нужно перезаводить mobileprovision, в который нужно добавить это значение, но мы ленивые и для теста это не обязательно, нам нужно просто переподписать приложение с entitlements без этого значения.
У нас есть как минимум два варианта:
1. Просто редактируем существующий entitlements (ORKCatalog/Supporitng Files/ORKCatalog.entitlements) и снова пересобираем (через archive).
2. Без пересборки, сами переподпишем ORKCatalog.app с нужным entitlements.
Выберем первый вариант как более простой. Поэтому из файла ORKCatalog/Supporitng Files/ORKCatalog.entitlements просто удаляем строки:
и снова пересобираем архив:
После создаем ipa:
Деплоим на девайс:
Собираем ipa файл для маркета
Всё тоже самое как для develop версии, только меняем линк на релизный mobileprovision, в options.plist вместо development проставляем app-store (какие еще options можно добавить смотрите в хелпе xcodebuild -help).
Без использования xcode смогли собрать ipa файлы для тестов и на выкладку в app store. Всё это можно легко автоматизировать на CI сервере чтобы облегчить жизнь разработчикам.
Читайте также: