"Инструментарий разработчика iOS: Xcode, AppCode и...

Preview:

DESCRIPTION

Выбор языка для разработки под iOS не ограничен Objective-C — всё зависит от конкретных задач. Но даже если код пишется на Objective-C, у разработчика есть и другие инструменты, кроме Xcode, способные облегчить жизнь. Есть сторонние тестовые фреймворки, менеджеры зависимостей, браузеры документации и, конечно, альтернативные IDE — например, AppCode. В докладе я расскажу, почему в JetBrains создали собственную IDE для Objective-C, а не просто плагин к Xcode. Обсудим, чем AppCode отличается от Xcode, и как мы реализовали интеграцию с этой средой. А также поговорим о возникавших сложностях и планах по развитию интеграции и всего продукта.

Citation preview

Мария Халусова

Инструментарий разработчика iOS: Xcode, AppCode и сторонние инструменты

JetBrains

Инструментарий iOS разработчика

Сторонние инструменты и AppCode

Мария Халусова@mariakhalusova

Инструменты

Инструменты

• Язык

Инструменты

• Язык• Тестовые фреймворки, менеджеры зависимостей, инструменты отладки, и т.д.

Инструменты

• Язык• Тестовые фреймворки, менеджеры зависимостей, инструменты отладки, и т.д.

• IDE

Язык

Язык

• Objective-C

Язык

• Objective-C

• Ruby (RubyMotion)

Язык

• Objective-C

• Ruby (RubyMotion)

• C# (Xamarin)

Язык

• Objective-C

• Ruby (RubyMotion)

• C# (Xamarin)

• HTML5, JavaScript, ... = web

Ruby

Temple Jukely Inktera

C#

Web

Web apps are the best way to reach the most possible people with the least effort; native apps are the best way to create the best

possible experience.

John Gruber, daringfireball.net

Native: Objective-C

И все?

Сторонние инструменты

Сторонние инструменты

• Тестовые фреймворки

Сторонние инструменты

• Тестовые фреймворки• Инструменты документации

Сторонние инструменты

• Тестовые фреймворки• Инструменты документации

• Менеджер зависимостей

Сторонние инструменты

• Тестовые фреймворки• Инструменты документации

• Менеджер зависимостей• Инструменты диагностики

Сторонние инструменты

• Тестовые фреймворки• Инструменты документации

• Менеджер зависимостей• Инструменты диагностики

• И т.д.

Тестовые фреймворки

Тестовые фреймворки

Тестовые фреймворки

• Kiwi

Тестовые фреймворки

• Kiwi

• Specta, Cedar

Тестовые фреймворки

• Kiwi

• Specta, Cedar

• KIF

Тестовые фреймворки

• Kiwi

• Specta, Cedar

• KIF

• Calabash, Frank

Тестовые фреймворки

• Kiwi

• Specta, Cedar

• KIF

• Calabash, Frank

• Zucchini

Тестовые фреймворки

• Kiwi

• Specta, Cedar

• KIF

• Calabash, Frank

• Zucchini

• ...

Документация

Документация

• Dash

Документация

• Dash

• appledoc

Документация

• Dash

• appledoc

• doxygen

Менеджер зависимостей

• CocoaPods

Диагностика

Диагностика

• Cocoa Lumberjack

Диагностика

• Cocoa Lumberjack

• DCIntrospector

Диагностика

• Cocoa Lumberjack

• DCIntrospector

• PonyDebugger

Диагностика

• Cocoa Lumberjack

• DCIntrospector

• PonyDebugger

• SimPholders

Диагностика

• Cocoa Lumberjack

• DCIntrospector

• PonyDebugger

• SimPholders

• Spark Inspector, Reveal

Диагностика

• Cocoa Lumberjack

• DCIntrospector

• PonyDebugger

• SimPholders

• Spark Inspector, Reveal

• ...

Диагностика: Reveal

Прочее

Прочее

• Рисовалки макетов дизайна: Mocks, Briefs, Acorn, Sketch, ...

Прочее

• Рисовалки макетов дизайна: Mocks, Briefs, Acorn, Sketch, ...

• Core Data: Mogenerator, Base, Core Data Editor

Прочее

• Рисовалки макетов дизайна: Mocks, Briefs, Acorn, Sketch, ...

• Core Data: Mogenerator, Base, Core Data Editor

• Deployment: Deploymate, Cupertino, Hockey App, TestFlight, Crashlytics

Альтернативная IDE - AppCode: зачем?

Альтернативная IDE - AppCode: зачем?

• Работа с кодом

Альтернативная IDE - AppCode: зачем?

• Работа с кодом• Богатый опыт создания инструментов разработчика: IntelliJ IDEA, ReSharper, ...

Альтернативная IDE - AppCode: зачем?

• Работа с кодом• Богатый опыт создания инструментов разработчика: IntelliJ IDEA, ReSharper, ...

• Ранние версии Xcode

Почему не плагин к Xcode?

Почему не плагин к Xcode?

• Готовая платформа IntelliJ

Почему не плагин к Xcode?

• Готовая платформа IntelliJ

• Официально плагины к Xcode никак не поддерживаются

Xcode 3.2.6

В чем разница?

В чем разница?

• Работа с кодом: редактирование, генерация, навигация, рефакторинги

В чем разница?

• Работа с кодом: редактирование, генерация, навигация, рефакторинги

• Интеграция с популярными инструментами и фреймворками: Kiwi, Dash, CocoaPods (v2.5)

В чем разница?

• Работа с кодом: редактирование, генерация, навигация, рефакторинги

• Интеграция с популярными инструментами и фреймворками: Kiwi, Dash, CocoaPods (v2.5)

• Интеграция с системами контроля версий, баг-трекерами, и т.д.

В чем разница?

• Работа с кодом: редактирование, генерация, навигация, рефакторинги

• Интеграция с популярными инструментами и фреймворками: Kiwi, Dash, CocoaPods (v2.5)

• Интеграция с системами контроля версий, баг-трекерами, и т.д.

• Поддерживает плагины

Demo

Интеграция с Xcode

• Самая актуальная версия Xcode

• Та же проектная модель

Интеграция с Xcode

Интеграция с Xcode

• xcodebuild

Интеграция с Xcode

• xcodebuild

• Simulator, Device

Интеграция с Xcode

• xcodebuild

• Simulator, Device

• Debugger: GDB, LLDB

Интеграция с Xcode

• xcodebuild

• Simulator, Device

• Debugger: GDB, LLDB

• Instruments

Интеграция с Xcode

• xcodebuild

• Simulator, Device

• Debugger: GDB, LLDB

• Instruments

• Clang

Интеграция с Xcode

• xcodebuild

• Simulator, Device

• Debugger: GDB, LLDB

• Instruments

• Clang

• Project Settings

Интеграция с Xcode

• xcodebuild

• Simulator, Device

• Debugger: GDB, LLDB

• Instruments

• Clang

• Project Settings

• Системные утилиты Xcode

Interface Builder

Interface Builder

• Интеграции нет, потому что:

Interface Builder

• Интеграции нет, потому что:• Interface Builder достаточно хорош

Interface Builder

• Интеграции нет, потому что:• Interface Builder достаточно хорош

• Инженерная сложность

Сложности

Сложности

• Обновления Xcode, Simulator

Сложности

• Обновления Xcode, Simulator

• LLDB

Сложности

• Обновления Xcode, Simulator

• LLDB

• Версия

Сложности

• Обновления Xcode, Simulator

• LLDB

• Версия• Evaluate expression

Сложности

• Обновления Xcode, Simulator

• LLDB

• Версия• Evaluate expression

• Обратная связь с Apple

Развитие интеграции с Xcode

Развитие интеграции с Xcode

• Работа с проектными настройками

Развитие интеграции с Xcode

• Работа с проектными настройками• C++

Развитие интеграции с Xcode

• Работа с проектными настройками• C++

• ? Core Data

Развитие интеграции с Xcode

• Работа с проектными настройками• C++

• ? Core Data

• ? IB

Планы на будущее

Планы на будущее

• Интеграция с полезными инструментами

Планы на будущее

• Интеграция с полезными инструментами• Постепенный “уход” от Xcode

Планы на будущее

• Интеграция с полезными инструментами• Постепенный “уход” от Xcode

• Работа с кодом: нет предела совершенству

Спасибо за внимание!

Recommended