Компания
185,43
рейтинг
20 мая 2014 в 18:25

Разработка → Встречайте AppCode 3.0: встроенный дизайнер UI, плагин для Reveal и многое другое

Привет, Хабр! Мы спешим вас порадовать новой, только что выпущенной версией нашей IDE для разработчиков под iOS/OS X — AppCode 3.0. Внутри много интересного: от долгожданного встроенного дизайнера UI до большого сюрприза в виде интеграции с Reveal. Но — обо всем по порядку.

Дизайнер UI


Мы шли к нему довольно долго. Кто-то из вас мог даже попробовать самую первую версию нашего UI-плагина еще в декабре прошлого года. И вот теперь мы рады сообщить, что в AppCode 3.0 появился свой встроенный дизайнер UI. Он поддерживает как формат .xib, так и .storyboard, и дает вам возможность полностью разрабатывать UI вашего приложения в AppCode. Вам доступна вся палитра элементов из iOS SDK, удобная навигация по дереву компонент, всевозможные настройки внешнего вида и поведения элементов UI и, конечно, возможность создавать методы для обработки поведения визуального элемента в один клик.



Интеграция с Reveal app


Задумавшись о возможных инструментах для разработки UI, мы решили не останавливаться только на дизайнере. И совместно с нашими друзьями из Itty Bitty Apps создали плагин, который позволяет использовать в AppCode 3.0 все преимущества их приложения под названием Reveal. С его помощью вы можете вживую исследовать всю иерархию объектов UI в вашем приложении, выделять и изучать отдельные слои, изменять свойства визуальных компонент и тут же в реальном времени видеть эти изменения на симуляторе или живом устройстве.

Если вы захотите попробовать, обязательно обновите уже имеющийся Reveal до версии 1.0.4 или скачайте бесплатную пробную версию с сайта приложения, если Reveal у вас еще не установлен. Дальше все предельно просто. В настройках конфигурации в AppCode появилась специальная вкладка Reveal, в которой всего два параметра — подключать ли библиотеку при старте вашего приложения и загружать ли ее при необходимости на устройство:



В панельке Debug после запуска приложения становится доступна кнопка



Нажимаете, и Reveal запускается с текущего момента исполнения вашего приложения — можно играться с 2D- и 3D-визуализацией, выбирать слои, менять настройки:



Кодогенерация в юнит-тестах


Пользователи разнообразных IDE от JetBrains часто упоминают в качестве своего любимого сочетания клавиш — Cmd+N. Оно и понятно, автоматическая кодогенерация — один из самых мощных современных инструментов в запасе у разработчиков. Поэтому мы решили расширить возможности этой комбинации клавиш, добавив новую функциональность в случае использования в юнит-тестах.

Для фреймворков OCUnit, XCTest и Google Test Cmd+N поможет создать новый тестовый метод, а так же методы setUp/tearDown. А в случае Kiwi вы можете выбрать из блоков it, context, beforeEach, afterEach и specify. Кстати, для Kiwi еще и добавился новый шаблон (live template) kiwi, который создает Spec.

Для Google Test изначально будет создан базовый тестовый метод TEST(), но после того, как вы зададите имя, AppCode автоматически подменит этот макрос на более подходящий: TEST(), TEST_F(), TEST_P(), TYPED_TEST() или TYPED_TEST_P().

Небольшое демо новых возможностей AppCode для юнит-тестов:



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


К версии 3.0 мы полностью изменили интерфейс настроек проекта (Project Settings — Cmd+;). Основной задачей стало добавление новых возможностей:
  • добавление таргетов в проект;
  • настройка используемых фреймворков и ресурсных файлов с помощью простейшего действия drag-and-drop.




Более нативный


Мы в JetBrains всегда прислушиваемся к нашим пользователям настолько, насколько это возможно. Зная о существующих несоответствиях в поведении и раскладке по отношению к нативным, мы постарались часть из них в новой версии AppCode исправить. Например, столь желаемое и привычное маковским пользователям сочетание клавиш Cmd+del теперь работает и в AppCode. Можно удалять текст в редакторе, файлы в дереве проекта, ресурсы и фреймворки в проектных настройках и т.д. Раскладка Xcode в AppCode была довольна существенно переработана, чтобы соответствовать Xcode IDE.

Что касается внешнего вида AppCode, скролбары теперь появляются и исчезают в соответствии с системными настройками (можно всегда держать включенными, можно настроить их появление в определенных ситуациях). А для тех, кто перешел с Xcode и скучает по любимой цветовой схеме оттуда, есть возможность добавить ее в AppCode:



Множественные курсоры, множественное выделение


Наверное, одна из самых востребованных возможностей во всех IDE в этом году — теперь и в AppCode 3.0! Расставить курсоры в нескольких местах можно с помощью Alt+Shift+Click или добавить следующее совпадение в выделение с помощью Ctrl+G (чтобы удалить — Ctrl+Shift+G). А теперь начинайте печатать и увидите, что вы редактируете код одновременно в нескольких местах — тех, в которые поставили курсоры. Автодополнение и шаблоны кода (live templates) тоже будут работать!



Терминал


В AppCode встроено довольно много разнообразных инструментов, позволяющих вам не переключать окно и вместе с ним и контекст для того, чтобы добавить изменения в репозиторий, закрыть задачу в issue-трекере и т.д. А теперь еще и терминал можно запустить прямо из IDE. Нажмите Alt+F12 и AppCode 3.0 запустит его прямо внутри своего окна:



И это еще не все


В AppCode 3.0 мы не забыли и о С++11, поддержав:
  • initializer lists
  • raw string literals
  • variadic templates
  • type traits

Еще мы усовершенствовали анализ кода (теперь он знает о вашем приложении еще больше!) и доработали форматирование макросов.

Помимо этого появилось несколько новых и приятных возможностей навигации:
  • Search Everywhere (нажмите дважды Shift или иконку лупы в правом вернем углу редактора) — для тех, кто хочет поискать везде: в текущем или недавно использованных файлах, в доступных действиях, в настройках IDE и т.д.;
  • при навигации по файлам (Shift+Cmd+O) можно искать и по папкам тоже — просто поставьте '/' в конце;
  • в поиске по проекту вы можете, если захотите, теперь искать только по комментариям или по строковым литералам.


Загрузить 30-дневную бесплатную версию AppCode 3.0 можно с нашего сайта. Обновление до версии 3.0 бесплатно для всех, кто приобрел лицензию после 20 мая 2013 года.
Мы будем рады ответить на ваши вопросы в комментариях. Замечания и предложения по новой версии мы ждем и в нашем баг-трекере.

Программируйте с удовольствием!
Ваша команда JetBrains AppCode
Автор: @anastasiak2512
JetBrains
рейтинг 185,43

Комментарии (68)

  • +4
    Давно хотел попробовать, но все смущало отсутствие встроенного IB.

    Хотелось бы еще узнать, возникают ли проблемы с миграцией больших проектов со сложной структурой из Xcode в AppCode?
    • +5
      В целом AppCode и Xcode полностью совместимы. Если проект большой, возможно, потребуется увеличить память для IDE.
      Но если будут сложности — пишите нам в саппорт, будем разбираться!
  • –2
    Скажите, есть ли у вас в планах переписать AppCode с java на native. Лично меня очень раздражают не нативные приложения в OS X. Есть ли такой запрос от других пользователей или это лишь моя прихоть?
    • +5
      Пока таких планов нет, хотя время от времени такие запросы к нам приходят.
    • +2
      Оно что, не нативным выглядит? Или вы о потреблении RAM AppCode'ом?
      • +12
        Дьявол кроется в деталях. Очень не удобный скрол (без bounce и движение рывками а не плавное — если вы пользуетесь тачпадом это очень раздражает), шрифты по-другому рендерятся, интерфейс в целом не вписывается в OS X, все переходы резкие, без анимации, меню с миллионом разделов, без группировки и иконок (см. xcode и любое другое маковское приложение), обновление не интегрировано с app store и еще тонна мелких отличий.
        Не берусь быть истинной в последней инстанции, все это исключительно основано на ощущениях. Но вот почему-то я угадал, что AppCode написан на java, хотя не заглядывал ни в википедию, ни куда-либо еще. То же раздражение вызывает у меня например Photoshop (и другие адобовские продукты).
        • +2
          Но вот почему-то я угадал, что AppCode написан на java

          Видимо потому, что большинство IDE от JetBrains построены на одной кодовой базе.
          • 0
            Про идейку и другие продукты JetBrains я тоже никуда не заглядывал. В общем-то я ими и не пользуюсь.
      • +2
        Жестко тормозит, по сравнению с XCode. Возможностей у AppCode конечно больше, рефакторинг и автогенерация кода божественная. Но автокомплит у XCode быстрее, как и практически любой элемент интерфейса.
        • 0
          А у вас какой Mac? Я вот сейчас разницы в производительности не замечаю, даже наоборот, показалось, что автоподстановка быстрее, на Mac mini `11 + SSD.
          • +2
            MBPR 15 inch late-2013. Особенно заметно на темплейтах, у меня одинаковые шаблоны допустим для генерации проперти, соответственно я их набираю одинаково) XCode прекрасно успевает, а в AppCode приходится ждать примерно пол секунды — секунду прежде чем шаблон кода прогрузится.
            • +1
              На 3.0 тоже воспроизводится? Если да, можете снять CPU snapshot: devnet.jetbrains.com/docs/1087 и прислать нам в саппорт? Мы попробуем разобраться.
              • +1
                Да, тоже. Не думаю, что дело в конкретной машине, на работе на хакинтоше то же самое. Снэпшот как-то непросто у вас делается =) Поведение, о котором я говорю, воспроизводится довольно просто. Live templates AppCode против XCode templates.

                Конкретно у меня автогенерация проперти повешена на такие сочетания:
                www — @property (nonatomic,weak) x * y;
                sss — strong
                и так далее.

                Если быстро набрать три буквы и нажать ентер — аппкод просто игнорирует автокомплит, и оставляет три буквы, не подставляя значения автокомплита.
                • +5
                  Да, удалось воспроизвести, правда не всегда случается и надо реально очень быстро успевать нажать Enter, но тем не менее: youtrack.jetbrains.com/issue/OC-9985
                  Посмотрим, что сможем сделать. Спасибо!
                  • 0
                    Спасибо =) Справедливости ради надо сказать, что это довольно субъективная вещь, больше половины людей в нашем iOS отделе полностью перешли на AppCode, и не жалуются на такие вещи) Видимо дело привычки.
                • +3
                  А кстати у Вас раскрытие шаблонов на дефолтовый Tab или Enter настроено? Если стоит Tab, а используете Enter, то это вообще не очень ожидаемое поведение. И тогда лучше просто перенастроить раскрытие на Enter, чтобы было удобнее. Проблема должна уйти.
                  • +1
                    Да, действительно) Даже не знал об этой настройке. В настройках апп-кода сам черт ногу сломит)
        • +1
          Согласен. Больше всего раздражают в AppCode две вещи — ненативный интерфейс и в целом топорноватый дизайн (по сравнению с Xcode), а так же тормоза. Если подолгу посидеть в AppCode, то вроде бы привыкаешь, но стоит переключиться в Xcode, и понимаешь — блин, какой он красивый и как быстро работает :).
    • +5
      Как вы себе представляете «переписывание» кроссплатформенного проекта на миллионы (если не десятки) строк кода и 15-летней историей?
      • –4
        Кодогенарация, например. Успешный пример — перевод компилятора языка Go с C на Go: talks.golang.org/2014/go1.3.slide#19 (до 22 слайда).
      • –4
        Собственно, ещё примеры — kPHP, HipHop, Cython. Думаю, JetBrains проект такого рода может потянуть.
        • +3
          в чём смысл? что это даст?
          • +1
            Скорость работы (т.к. я предполагаю, что в случае с AppCode проблема именно в скорости работы Jav'ы, а не в скилле разработчиков JetBrains).
            • +2
              Вы привели примеры интерпретируемых языков. Там есть что и куда ускорять. В Яве, по большому счету, все что можно, и так реализовано быстро. Скорость любой реализация ограничена моделью памяти и языка.

              Вообще в JetBrains пилят «улучшенную Яву» под названием Kotlin. Правда там цель не скорость или нативность UI, а безопасность и компактность.
              • 0
                В Яве, по большому счету, все что можно, и так реализовано быстро. Скорость любой реализация ограничена моделью памяти и языка.


                Т.е. вы хотите сказать, что Ява сама по себе тормозная и горбатого могила исправит с ней ничего уже не сделать (для десктопного применения)? :)
                • 0
                  Существенно ускорить можно только обновив модель памяти или JVM, например, введя типы-значения. Это прерогатива Оракла, а не JetBrains.
      • –3
        А ещё кстати вот такая штука есть: компилятор джавы в нативный код — www.excelsiorjet.com. В общем, есть варианты)
        • 0
          Это все никак не поможет с проблемами на которые указал FreemindMike.
          • –1
            Ну адоб смог сделать фотошоп в вебе. А фейсбук вначале делал приложение на html5, а теперь на obj-c. Понятно, что это довольно дорого, но это 100% решаемая задача для компании уровня JetBrains. Вопрос в том какому числу пользователей это нужно. Вот я бы например перешел на appcode будь он нативным. Поэтому я и спросил сразу сколько еще таких как я.
            • 0
              Ну вы сравнили приложение соцсети и IDE.
              • +1
                Это кстати да. Я не встречал веб-приложение размером ~ 7,5M строк кода. Ubuntu с UI частью где-то под 10M будет. Кода очень, ОЧЕНЬ много. На проектах такого объёма кодогенерация — это утопия.
            • 0
              Это не выгодно. Все IDE основаны на одной кодовой базе. Исправив баг в одной, легко запулить исправление в другую IDE.
      • 0
        Ну, начинку действительно было бы глупо кидаться и переписывать ради переписывания (она то как раз и так отличная), но разве нельзя отдельно разработать нативный (или хотя бы «более нативный») GUI для всей это начинки?
  • 0
    А чего поиска по Build Settings нет? Столько свойств и опций…
    И почему я как в Xcode не могу выбрать чем подписывать, у меня несколько сертификатов… Reveal вот ругается, что они мол конфликтуют.
    8(
    • +1
      С подписью libReval.dylib и несколькими сертификатами известная проблема: youtrack.jetbrains.com/issue/OC-9883

      Надеюсь скоро решат.
  • +1
    Про поиск по Build Settings — кликните на произвольную строчку в таблице, чтобы перевести на нее фокус, и начните печатать. AppCode покажет все вхождения.
    Про сертификаты — надо в Code Signing Identity написать просто нужное название. Там есть проблема с некорректным отображением: youtrack.jetbrains.com/issue/OC-9536, известная нам. Постараемся поскорее поправить.
    • +1
      Спасибо за ответ.
  • 0
    Встроенная замена IB работает только в проектах для iOS, или в OS X-проектах тоже?
  • +1
    Нужно будет попробовать, прошлый раз не вышло потому как основной проект не открывало корректно. (Подозреваю потому что смешанный — ARC / не ARC)
    • +1
      Пишите в саппорт, если будут проблемы, постараемся помочь.
      • +4
        Посмотрел, к сожалению неюзабельно
        Минусы:
        Долго запускается
        Не работает с моделями NSManagedObject
        Не работают жесты на тачпаде а также некоторые комбинации, например «Cmd+[»
        Нет быстрого доступа к документации по клику
        Не нашел способа добавлять symbolic breakpoints
        Не работают смешанные ARC / не ARC проекты
        Отсутствие быстрой фильтрации по маске в Project Browser (Возможно есть, просто не знаю как)
        Неудобный просмотр ошибок компиляции (Субъективно)
        Тормозааа, кажется в предыдущей версии таких тормозов не было?
        Убогий скроллинг
        Плюсы:
        Удобный и быстрый рефакторинг
        Кастомизация горячих клавиш

        Через 6 мин! после запуска появилась возможность запустить проект. Через 3 минуты после начала компиляции что-то наконец сдвинулось, посыпались ошибки компиляции.

        Проект примерно 10000 файлов, не знаю большой это или нет ((
        • +1
          Первое открытие проекта действительно может занимать значительное время, так как требуется проиндексировать и проанализировать большое количество как исходников проекта, так и хедеров из SDK. Последующие открытия должны проходить быстрее.

          «Cmd+[» работает если выбрать в настройках «Xcode» keymap, либо самостоятельно назначить на action «Unindent selection». Некоторые жесты на тачпаде работают (например, zoom in/out), некоторые пока нет, но зато практически всё можно сделать при помощи хоткеев, не отрывая руки от клавиатуры.

          Доступ к документации есть по клавише F1 или ctrl+middle click, либо можно назначить как удобно/привычно. Symbolic breakpoints не вошли в этот релиз, но обязательно появятся в одном из следующих обновлений.

          Фильтрации по маске в Project Browser действительно нет, вместо этого рекомендую попробовать значительно более функциональные Go to Class/Symbol/File, а Project Browser спрятать и тем самым сэкономить место.

          Смешанные ARC/no-ARC проекты определённо работают, если есть какие-то конкретные проблемы, то лучше обратиться в саппорт для более детального разбора.

          По поводу остальных проблем (UI, тормоза, Core Data модели): про всё это мы в курсе и продолжаем работать над улучшением. Пользовательская активность в трекере помогает нам приоритизировать задачи, поэтому — добро пожаловать :)
          • +2
            Мда… программа на мак, которая по умолчанию использует ЭТО: «F1 или ctrl+middle click», впечатление что никто из разработчиков не пользуется макбуками?
            Почему не работает проект — понятия не имею, но факт остается фактом.

            Имхо без решения трабл с тормозами и скроллингом остальное можно просто не смотреть.
            • 0
              F1 и ctrl+middle click приведены в качестве универсальных вариантов работающих во всех keymap'ах. В раскладке «Xcode» это делается так же, как в Xcode: ⌃⌘?..

              Для решения проблем с неработающим проектом ещё раз рекомендую обратиться в саппорт. Здесь эту проблему решить точно не получится.
  • +1
    Неработающий в редакторе Cmd+del — это то, что мешало мне перейти на App Code. Разражжало страшно. Теперь буду пробовать и, если получится пересеть полностью, заплачу вам денег и таки пересяду на AppCode. Вообще вы молодцы!
  • +3
    Ребята! Опять фейл обнаружился. :-( AppCode не видит ничего кроме AppIcon и LaunchImage в Image Assets. То есть для этого проекта, где я использую эту фичу Xcode по полной программе, использовать AppCode я не смогу. Как решить проблему?
  • +5
    Пытался несколько раз пересесть на AppCode.
    Собственно, выше всё уже написали. Все плюсы этого несомненно замечательного IDE убиваются ненативным интерфейсом и легким ощущением «подторможенности».
    Желаю Вам развития!
  • +1
    Я понимаю, что Interface Builder — только первая версия, но я вот так с наскока не понял как работать с ограничителями в Autolayout. Создание не с Ctrl а с Alt странное решение, визуально я их не вижу и нет функции Update Frames и Update Constraints.
    Ну а так продолжаю использовать AppCode и XCode совместно.
    • –1
      С Auto Layout и с редактирование contraints там еще и правда много работы. Есть целая пачка реквестов в трекере. Мы продолжаем работать. Надеемся сделать минорный адейт довольно скоро. И шорткаты обязательно поменяем на более привычные. Вот, например, ишью: youtrack.jetbrains.com/issue/OC-8598
  • +1
    Не понял как в UI Designer создавать Constraints. И есть ли у него возможность включить отображение границ элементов управления?
    • 0
      Рефакторинг работает просто божественно, лучше чем родной, намного быстрее и работает в тех случаях, когда встроенный пасует, молодцы разработчики!

      Ошибся уровнем ((
    • 0
      Ответила выше, что редактирования ручного для constraints пока нет, но мы над этим работаем.
      Такого пока нет, заведите запрос на фичу вот здесь: youtrack.jetbrains.com/issues/OC
  • +3
    Порадуйте, пожалуйста, новостями о C++ IDE, когда ждать?
    • 0
      Мы бы рады, но пока не можем сказать ничего определенного. Как будем готовы к публичному EAP, так сразу и объявим.
  • 0
    Простите, а в дебаггере одному мне кажется, что есть проблемы с автокомплитом?
    Приходится нажимать Ctrl+space, а потом еще раз space вместо Enter, очень утомительно
    • 0
      Хм. А можете проблему завести в трекере? Можно скринкаст или какое-то описание добавить с примером. Мы глянем.
      • 0
        я попробую, но не уверен что это 100% баг, т.к. такое поведение наблюдаю на 2 разных машинках, как на 10.8 так и на 10.9
        • 0
          и, к тому же, наблюдал это еще на 2.5.5
          • 0
            Если встретите на 3.0 — пишите ишью, будем разбираться.
  • 0
    Как сделать чтобы .m/.h файлы открывались в одном табе?
    • 0
      В одном табе открыть их нельзя. Вы вероятно имеете в виду split mode? Можно сделать у таба Move right.
      • 0
        неа, в xcode когда я жму ctrl+cmd+down/up я переключаюсь между .h/.m файлами в рамках одного таба. А в appcode открыл 3 файла и завалил табами весь таббар, поэтому его вовсе убрал, очень отвлекает.
        • 0
          Поняла, спасибо. В AppCode это зовется Navigate to Related Symbol. В default раскладке Ctrl+Cmd+Up.
          • 0
            Я знаю про это, я уже понял что нельзя в одной это делать (((
            • 0
              Вообще не очень понятен use case. В целом есть ведь Go to declaration/definition. Они переходят между .m и .h файлами как раз обычно.

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

Самое читаемое Разработка