SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Yandex Mobile Camp
 Санкт-Петербург, 30 мая 2012 г.



Автоматизация в Xсode.
 Практический аспект
         Юрий Василевский
               ведущий разработчик



       yury_vasileuski@epam.com

y.vasileuski         yvasileuski     y.vasileuski

 EPAM Systems, Mobile Solutions
План выступления



•    Автоматизация в процессе разработки
•    Code sense или Как писать код быстрее
•    Services или Как форматировать код
•    Warnings или Как править код нагляднее
•    Targets или Как собирать приложение
•    Workspace или Как управлять библиотеками
•    Quick Help или Как использовать подсказки

 1
Автоматизация в процессе разработки
        Обязанности одного программиста

Написать код локально
Собрать готовое приложение




2
Автоматизация в процессе разработки
        Обязанности группы программистов

Написать код локально
Поделиться кодом
Собрать готовое приложение




3
Автоматизация в процессе разработки
          Реальный процесс разработки

Написать код локально
Проверить сборку приложения локально
Поделиться кодом
Собрать готовое приложение




4
Автоматизация в процессе разработки
          Реальный процесс разработки

Написать код локально
Проверить сборку приложения локально
Проверить сборку приложения в реальном
окружении
Поделиться кодом
Собрать готовое приложение




5
Автоматизация в процессе разработки
          Реальный процесс разработки

Написать код локально
Проверить сборку приложения локально
Проверить сборку приложения в реальном
окружении
Проверить юнит-тесты
Поделиться кодом
Собрать готовое приложение




6
Автоматизация в процессе разработки
          Реальный процесс разработки

Написать код локально
Проверить сборку приложения локально
Проверить сборку приложения в реальном
окружении
Проверить юнит-тесты
Проверить стиль кода
Поделиться кодом
Собрать готовое приложение



7
Автоматизация в процессе разработки
          Реальный процесс разработки

Написать код локально
Проверить сборку приложения локально
Проверить сборку приложения в реальном
окружении
Проверить юнит-тесты
Проверить стиль кода
Пройти код ревью
Поделиться кодом
Собрать готовое приложение



8
Автоматизация в процессе разработки
           Общие системы автоматизации

                                      Jira
          Apache      Gerrit

                         BugZilla
     Maven
                                    Hudson
    Ant
               Trac
                               Perforce
           Jankings
                          svn
      TeamCity                        Git
9
Автоматизация в процессе разработки
         +/- Общие системы автоматизации



Преимущества:
•  Автоматизация – это хорошо

Недостатки:
•  Нет универсального решения
•  Команда поддержки
•  Быстрое развитие IT и смена технологий
•  Собственная инфраструктура заказчика




10
Code sense или Как писать код быстрее
           Code Sense и Code Completion




11
Code sense или Как писать код быстрее
           Code Sense и Code Completion




12
Code sense или Как писать код быстрее
                 User Code Snippets


      инициализация объекта


объявление расширения



                              инициализация свойства




13
Code sense или Как писать код быстрее
                Custom Code Snippets


     инициализация объекта

объявление расширения


                             инициализация свойства




14
Code sense или Как писать код быстрее
                  Custom Code Snippets
         ls ~/Library/Developer/XCode/UserData/CodeSnippets/




           Содержимое сниппета pragma mark (XML файл)




15
Code sense или Как писать код быстрее
                   +/- Code Sense

Преимущества:
•  Легко создавать, использовать, распространять
•  Формат кода сниппетов одинаков у всех
   разработчиков

Недостатки:
•  Вчера Text Macros, сегодня Code Snippet, а завтра?
•  Трудно использовать много сниппетов
•  Разработчик имеет свои предпочтения и свой набор
   сниппетов



16
Services или Как форматировать код
                 Правила Code Style


Apple Code style
•  https://developer.apple.com/library/mac/#documentation/
   Cocoa/Conceptual/CodingGuidelines/
   CodingGuidelines.html

Google code style:
•  http://google-styleguide.googlecode.com/svn/trunk/
   objcguide.xml




17
Services или Как форматировать код
                    Services & uncrustify




18 https://github.com/tonyarnold/Xcode-4-Uncrustify-Automator-Services
Services или Как форматировать код
             +/- Services & uncrustify

Преимущества:
•  Доступны в любых редакторах (AppCode, Emacs)
•  Очень легко использовать
•  Можно запускать по собственному усмотрению

Недостатки:
•  Надо знать Automator, AppleScript
•  Очень трудно настроить правила форматирования
   (167 правил) и адаптировать их под заказчика
•  Полностью переписывает содержимое файла
•  Программист не учится форматированию кода
•  Надо вызывать команду вручную

19
Services или Как форматировать код
      pre-commit контроль: git, svn, perforce

                                       perforce.sh:
                                       #!/bin/sh
                                       j=$(p4 diff -se)
.git/hooks/pre-commit:                 epmlint lint $j
#!/bin/sh
j=$(exec git diff --name-only $HEAD)
epmlint lint $j
retval=$?
exit $retval                           svn:
                                       •  svn lint
                                       •  epmlint lint



20
Services или Как форматировать код
                 Xcode & git




21
Services или Как форматировать код
             +/- pre-commit контроля

Преимущества:
•  Обучает писать красивый код
•  Полная интеграция Xcode c git
•  Обязательное следование стилю
•  Работает на всех системах контроля версий
•  Легко расширить новыми правилами, например
   длина метода < 50 или длина файла < 1000

Недостатки:
•  Необходимо разработать свою систему проверки кода
•  Разные способы интеграции для git, perforce, svn
•  Приходится вручную исправлять неверный код


22
Warnings или Как править код нагляднее
             Xcode warnings




23
Warnings или Как править код нагляднее
            Code style warnings




24
Warnings или Как править код нагляднее
             Code style build




25
Warnings или Как править код нагляднее
              +/- code style warnings


Преимущества:
•  Простая интеграция в билд процесс
•  Наглядность и точность замечаний по сравнению с
   консольным выводом

Недостатки:
•  Проверка внешних библиотек (игнор лист .epmlint)
•  Дополнительный этап сборки проекта
•  Продолжительный анализ всех файлов (modified only)



26
Warnings или Как править код нагляднее
         CPD & copy-past warnings




27     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее
               CPD проблемы




28     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее
                   CPD build




29     http://pmd.sourceforge.net/cpd.html
Warnings или Как править код нагляднее
                  +/- CPD warnings

Преимущества:
•  Наглядность замечаний
•  Устранение копи-паста (да, CPD работает :-)
•  Относительно легкая интеграция в билд процесс

Недостатки:
•  Проверка внешних библиотек (группировка по
   папкам)
•  Тяжело обучить - не все замечания верны / могут
   быть найдены (флаг minimum-tokens)
•  Дополнительный этап сборки проекта


30
Targets или Как собирать приложение
                 Проблемы сборок
•  Как к таргету добавить редко исполняемый шаг?
•  Как проверить сборку приложения и убедиться, что
   изменения в коде одной сборки не сломали другие?
•  Как автоматически менять номер сборки
   приложения?




31
Targets или Как собирать приложение
                Aggregate target




32
Targets или Как собирать приложение
              Верификация сборок




33
Targets или Как собирать приложение
 Info.plist preprocessing & Автонумерация сборок




34
Targets или Как собирать приложение
 Info.plist preprocessing & Автонумерация сборок




35
Targets или Как собирать приложение
 Info.plist preprocessing & Автонумерация сборок




36
Targets или Как собирать приложение
 Info.plist preprocessing & Автонумерация сборок




37
Targets или Как собирать приложение
 Info.plist preprocessing & Автонумерация сборок




38
Targets или Как собирать приложение
                      +/- сборок

Преимущества:
•  Все настройки задаются через UI
•  Cобирать можно как c UI, так и с консоли (xcodebuild)
•  Легко проверить кросс-влияние сборок
•  Легко автоматизировать изменение настроек
   приложения

Недостатки:
•  Сложно настраивать взаимодействие сборок
•  Сложно “размножать” однотипные этапы сборок
   между проектами (project.pbxproj, workspace)


39
Workspace или Как управлять библиотеками
     Workspace или разделение проектов




40
Workspace или Как управлять библиотеками
                CocoaPods




              $ pod install

41
Workspace или Как управлять библиотеками
                        CocoaPods

PodFile:
platform :ios, :deployment_target => '4.0’
 dependency 'JSONKit'
 dependency 'SDURLCache’
 dependency 'SMXMLDocument’

target :’CTC-iPad' do
 dependency 'JSONKit’
 dependency 'SVProgressHUD’
 dependency 'YandexMapKit', :podspec => 'https://<…>/
   YandexMapKit.podspec'
end

42
Workspace или Как управлять библиотеками
                   +/- CocoaPods

Преимущества:
•  Отделение внешних библиотек от кода
•  Авто настройка workspace и проекта
•  Простое управление библиотеками
•  Авто генерация документации с appledoc

Недостатки:
•  Не все библиотеки имеют podspec спецификации
•  Не всегда легко подружить с Xcode




43
Quick Help или Как использовать подсказки
         Documentation & appledoc




44
Quick Help или Как использовать подсказки
           Quick Help & appledoc




45
Quick Help или Как использовать подсказки
                   +/- appledoc

Преимущества:
•  Отличная интеграция с Xcode
•  Поддержка синтаксиса Doxygen
•  Быстрый доступ к документации

Недостатки:
•  Надо генерировать на локальной машине
•  Надо самому писать документацию




46
Yandex Mobile Camp
 Санкт-Петербург, 30 мая 2012 г.



Автоматизация в Xсode.
 Практический аспект
         Юрий Василевский
               ведущий разработчик



       yury_vasileuski@epam.com

y.vasileuski         yvasileuski     y.vasileuski

 EPAM Systems, Mobile Solutions

Mais conteúdo relacionado

Mais procurados

Crucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментCrucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментMaxim Kuzmich
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляCOMAQA.BY
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Technopark
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаRoman Dvornov
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Denis Vasilyev
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системахWhiteMbIXA
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...Mikhail Payson
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва it-people
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...corehard_by
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел СташевскийDevDay
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыMikhail Payson
 
Интегрированная среда разработки
Интегрированная среда разработкиИнтегрированная среда разработки
Интегрированная среда разработкиspillector
 
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияMikhail Payson
 
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...ru_Parallels
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsSQALab
 

Mais procurados (19)

Crucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструментCrucible или почему для Code Review нужна не только голова, но и инструмент
Crucible или почему для Code Review нужна не только голова, но и инструмент
 
Альтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуляАльтернативные способы изучения программирования с нуля
Альтернативные способы изучения программирования с нуля
 
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
Seminar: Установка и настройка рабочего стенда разработчика Android-приложени...
 
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестированияCodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
 
внедрении Wpf в сложных системах
внедрении Wpf в сложных системахвнедрении Wpf в сложных системах
внедрении Wpf в сложных системах
 
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...Промышленная разработка ПО. Лекция 3. Особенности работы программиста.  Часть...
Промышленная разработка ПО. Лекция 3. Особенности работы программиста. Часть...
 
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва  Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
Как сейчас тесты в Android пишут, Денис Неклюдов, Google Dev Expert, Москва
 
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
C++ CoreHard Autumn 2018. Ускорение сборки C++ проектов, способы и последстви...
 
«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский«Тестируем веб приложения», Павел Сташевский
«Тестируем веб приложения», Павел Сташевский
 
Промышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. ИнструментыПромышленная разработка ПО. Лекция 2. Инструменты
Промышленная разработка ПО. Лекция 2. Инструменты
 
Интегрированная среда разработки
Интегрированная среда разработкиИнтегрированная среда разработки
Интегрированная среда разработки
 
Промышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятияПромышленная разработка ПО. Лекция 1. Общие понятия
Промышленная разработка ПО. Лекция 1. Общие понятия
 
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...Тестирование ПО, основанного на  сторонних компонентах, на примере  дистрибут...
Тестирование ПО, основанного на сторонних компонентах, на примере дистрибут...
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
Winium — это как Selenium, только под Windows
Winium — это как Selenium, только под WindowsWinium — это как Selenium, только под Windows
Winium — это как Selenium, только под Windows
 

Semelhante a Юрий Василевский "Автоматизация в XCode"

C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.Igor Shkulipa
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Ontico
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеDenis Chistyakov
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеYandex
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Vladimir Bakhov
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenchesGleb Rybalko
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven developmentTestableapple
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidAnton Rutkevich
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidSQALab
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Yandex
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПОAnton Konushin
 

Semelhante a Юрий Василевский "Автоматизация в XCode" (20)

C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
Как развивать библиотеку компонентов, не ломая ее / Артур Удалов (Mail.Ru Group)
 
Workflow: работа над проектом в Яндексе
Workflow: работа над проектом в ЯндексеWorkflow: работа над проектом в Яндексе
Workflow: работа над проектом в Яндексе
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Денис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в ЯндексеДенис Чистяков: Workflow. Работа над проектом в Яндексе
Денис Чистяков: Workflow. Работа над проектом в Яндексе
 
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
Javascript-фреймворки: должен остаться только один / Аверин Сергей (Acronis)
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
MockServer-driven development
MockServer-driven developmentMockServer-driven development
MockServer-driven development
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
Gradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для AndroidGradle. Новый уровень автоматизации для Android
Gradle. Новый уровень автоматизации для Android
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"Вадим Макишвили "Вёрстка в IntelliJIDEA"
Вадим Макишвили "Вёрстка в IntelliJIDEA"
 
Технологии разработки ПО
Технологии разработки ПОТехнологии разработки ПО
Технологии разработки ПО
 

Mais de Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksYandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
 

Mais de Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Юрий Василевский "Автоматизация в XCode"

  • 1. Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г. Автоматизация в Xсode. Практический аспект Юрий Василевский ведущий разработчик yury_vasileuski@epam.com y.vasileuski yvasileuski y.vasileuski EPAM Systems, Mobile Solutions
  • 2. План выступления •  Автоматизация в процессе разработки •  Code sense или Как писать код быстрее •  Services или Как форматировать код •  Warnings или Как править код нагляднее •  Targets или Как собирать приложение •  Workspace или Как управлять библиотеками •  Quick Help или Как использовать подсказки 1
  • 3. Автоматизация в процессе разработки Обязанности одного программиста Написать код локально Собрать готовое приложение 2
  • 4. Автоматизация в процессе разработки Обязанности группы программистов Написать код локально Поделиться кодом Собрать готовое приложение 3
  • 5. Автоматизация в процессе разработки Реальный процесс разработки Написать код локально Проверить сборку приложения локально Поделиться кодом Собрать готовое приложение 4
  • 6. Автоматизация в процессе разработки Реальный процесс разработки Написать код локально Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Поделиться кодом Собрать готовое приложение 5
  • 7. Автоматизация в процессе разработки Реальный процесс разработки Написать код локально Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Поделиться кодом Собрать готовое приложение 6
  • 8. Автоматизация в процессе разработки Реальный процесс разработки Написать код локально Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Поделиться кодом Собрать готовое приложение 7
  • 9. Автоматизация в процессе разработки Реальный процесс разработки Написать код локально Проверить сборку приложения локально Проверить сборку приложения в реальном окружении Проверить юнит-тесты Проверить стиль кода Пройти код ревью Поделиться кодом Собрать готовое приложение 8
  • 10. Автоматизация в процессе разработки Общие системы автоматизации Jira Apache Gerrit BugZilla Maven Hudson Ant Trac Perforce Jankings svn TeamCity Git 9
  • 11. Автоматизация в процессе разработки +/- Общие системы автоматизации Преимущества: •  Автоматизация – это хорошо Недостатки: •  Нет универсального решения •  Команда поддержки •  Быстрое развитие IT и смена технологий •  Собственная инфраструктура заказчика 10
  • 12. Code sense или Как писать код быстрее Code Sense и Code Completion 11
  • 13. Code sense или Как писать код быстрее Code Sense и Code Completion 12
  • 14. Code sense или Как писать код быстрее User Code Snippets инициализация объекта объявление расширения инициализация свойства 13
  • 15. Code sense или Как писать код быстрее Custom Code Snippets инициализация объекта объявление расширения инициализация свойства 14
  • 16. Code sense или Как писать код быстрее Custom Code Snippets ls ~/Library/Developer/XCode/UserData/CodeSnippets/ Содержимое сниппета pragma mark (XML файл) 15
  • 17. Code sense или Как писать код быстрее +/- Code Sense Преимущества: •  Легко создавать, использовать, распространять •  Формат кода сниппетов одинаков у всех разработчиков Недостатки: •  Вчера Text Macros, сегодня Code Snippet, а завтра? •  Трудно использовать много сниппетов •  Разработчик имеет свои предпочтения и свой набор сниппетов 16
  • 18. Services или Как форматировать код Правила Code Style Apple Code style •  https://developer.apple.com/library/mac/#documentation/ Cocoa/Conceptual/CodingGuidelines/ CodingGuidelines.html Google code style: •  http://google-styleguide.googlecode.com/svn/trunk/ objcguide.xml 17
  • 19. Services или Как форматировать код Services & uncrustify 18 https://github.com/tonyarnold/Xcode-4-Uncrustify-Automator-Services
  • 20. Services или Как форматировать код +/- Services & uncrustify Преимущества: •  Доступны в любых редакторах (AppCode, Emacs) •  Очень легко использовать •  Можно запускать по собственному усмотрению Недостатки: •  Надо знать Automator, AppleScript •  Очень трудно настроить правила форматирования (167 правил) и адаптировать их под заказчика •  Полностью переписывает содержимое файла •  Программист не учится форматированию кода •  Надо вызывать команду вручную 19
  • 21. Services или Как форматировать код pre-commit контроль: git, svn, perforce perforce.sh: #!/bin/sh j=$(p4 diff -se) .git/hooks/pre-commit: epmlint lint $j #!/bin/sh j=$(exec git diff --name-only $HEAD) epmlint lint $j retval=$? exit $retval svn: •  svn lint •  epmlint lint 20
  • 22. Services или Как форматировать код Xcode & git 21
  • 23. Services или Как форматировать код +/- pre-commit контроля Преимущества: •  Обучает писать красивый код •  Полная интеграция Xcode c git •  Обязательное следование стилю •  Работает на всех системах контроля версий •  Легко расширить новыми правилами, например длина метода < 50 или длина файла < 1000 Недостатки: •  Необходимо разработать свою систему проверки кода •  Разные способы интеграции для git, perforce, svn •  Приходится вручную исправлять неверный код 22
  • 24. Warnings или Как править код нагляднее Xcode warnings 23
  • 25. Warnings или Как править код нагляднее Code style warnings 24
  • 26. Warnings или Как править код нагляднее Code style build 25
  • 27. Warnings или Как править код нагляднее +/- code style warnings Преимущества: •  Простая интеграция в билд процесс •  Наглядность и точность замечаний по сравнению с консольным выводом Недостатки: •  Проверка внешних библиотек (игнор лист .epmlint) •  Дополнительный этап сборки проекта •  Продолжительный анализ всех файлов (modified only) 26
  • 28. Warnings или Как править код нагляднее CPD & copy-past warnings 27 http://pmd.sourceforge.net/cpd.html
  • 29. Warnings или Как править код нагляднее CPD проблемы 28 http://pmd.sourceforge.net/cpd.html
  • 30. Warnings или Как править код нагляднее CPD build 29 http://pmd.sourceforge.net/cpd.html
  • 31. Warnings или Как править код нагляднее +/- CPD warnings Преимущества: •  Наглядность замечаний •  Устранение копи-паста (да, CPD работает :-) •  Относительно легкая интеграция в билд процесс Недостатки: •  Проверка внешних библиотек (группировка по папкам) •  Тяжело обучить - не все замечания верны / могут быть найдены (флаг minimum-tokens) •  Дополнительный этап сборки проекта 30
  • 32. Targets или Как собирать приложение Проблемы сборок •  Как к таргету добавить редко исполняемый шаг? •  Как проверить сборку приложения и убедиться, что изменения в коде одной сборки не сломали другие? •  Как автоматически менять номер сборки приложения? 31
  • 33. Targets или Как собирать приложение Aggregate target 32
  • 34. Targets или Как собирать приложение Верификация сборок 33
  • 35. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок 34
  • 36. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок 35
  • 37. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок 36
  • 38. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок 37
  • 39. Targets или Как собирать приложение Info.plist preprocessing & Автонумерация сборок 38
  • 40. Targets или Как собирать приложение +/- сборок Преимущества: •  Все настройки задаются через UI •  Cобирать можно как c UI, так и с консоли (xcodebuild) •  Легко проверить кросс-влияние сборок •  Легко автоматизировать изменение настроек приложения Недостатки: •  Сложно настраивать взаимодействие сборок •  Сложно “размножать” однотипные этапы сборок между проектами (project.pbxproj, workspace) 39
  • 41. Workspace или Как управлять библиотеками Workspace или разделение проектов 40
  • 42. Workspace или Как управлять библиотеками CocoaPods $ pod install 41
  • 43. Workspace или Как управлять библиотеками CocoaPods PodFile: platform :ios, :deployment_target => '4.0’ dependency 'JSONKit' dependency 'SDURLCache’ dependency 'SMXMLDocument’ target :’CTC-iPad' do dependency 'JSONKit’ dependency 'SVProgressHUD’ dependency 'YandexMapKit', :podspec => 'https://<…>/ YandexMapKit.podspec' end 42
  • 44. Workspace или Как управлять библиотеками +/- CocoaPods Преимущества: •  Отделение внешних библиотек от кода •  Авто настройка workspace и проекта •  Простое управление библиотеками •  Авто генерация документации с appledoc Недостатки: •  Не все библиотеки имеют podspec спецификации •  Не всегда легко подружить с Xcode 43
  • 45. Quick Help или Как использовать подсказки Documentation & appledoc 44
  • 46. Quick Help или Как использовать подсказки Quick Help & appledoc 45
  • 47. Quick Help или Как использовать подсказки +/- appledoc Преимущества: •  Отличная интеграция с Xcode •  Поддержка синтаксиса Doxygen •  Быстрый доступ к документации Недостатки: •  Надо генерировать на локальной машине •  Надо самому писать документацию 46
  • 48. Yandex Mobile Camp Санкт-Петербург, 30 мая 2012 г. Автоматизация в Xсode. Практический аспект Юрий Василевский ведущий разработчик yury_vasileuski@epam.com y.vasileuski yvasileuski y.vasileuski EPAM Systems, Mobile Solutions