Комфортная разработка мобильных проектов

30
Юрий Буянов Комфортная разработка мобильных проектов Разработчик Мобильных Приложений OK.RU

Upload: codefest

Post on 16-Jul-2015

464 views

Category:

Software


5 download

TRANSCRIPT

Page 1: Комфортная разработка мобильных проектов

Юрий Буянов

Комфортная разработка мобильных проектов

РазработчикМобильных Приложений

OK.RU

Page 2: Комфортная разработка мобильных проектов

0. Предыстория

Page 3: Комфортная разработка мобильных проектов

1. Continuous Integration

Page 4: Комфортная разработка мобильных проектов

Dependensiespush hook/pollGIT

Build

Tests

Static Analysis

Notifications

Dev (master) buildCI

Page 5: Комфортная разработка мобильных проектов

Контроль качества кода• Собираемость

• Статический анализ кода

• iOS: clang scan-build, oclint

• Android: PMD, FindBugs, android lint

• Детектор копипасты (CPD)

• Тесты

• “Технический долг” (подсчёт “//TODO:”)

Page 6: Комфортная разработка мобильных проектов
Page 7: Комфортная разработка мобильных проектов

Контроль качества кода

• Не заменяет ревью

• Есть сомнительные ворнинги

• Нужен консенсус в команде и настройка правил

• Тесты никто не пишет ( ◔ ʖ ̯◔ )

Page 8: Комфортная разработка мобильных проектов

2. Доставка

Page 9: Комфортная разработка мобильных проектов

Distribution

• Шнурочек

• TestFlight ¯\_(⊙_ʖ⊙)_/¯

• HockeyApp ($$$)

• Self-hosted

• Google Play / ITC

Page 10: Комфортная разработка мобильных проектов
Page 11: Комфортная разработка мобильных проектов

Test (delivery) buildDependencies

Build

Upload

CI

Package (.ipa/.apk)

Versioning

Notification

Tagging

Changelog

push

push hook/pollGIT

Page 12: Комфортная разработка мобильных проектов

Версионирование• Независимое для каждой поставляемой ветки (test, release,

etc)

• Базируется на названии ветки и номере билда

• ${BUILD_NUMBER} = 34

• CFBundleVersion = 0.3.34

• CFBundleShortVersionString = test-34

• Версия видна пользователю (тестировщику): внутри приложения, на иконке

• Версия видна разработчику: тег в гите, отчёты об ошибках, логи

Page 13: Комфортная разработка мобильных проектов

Changelog• Облегчает поиск нужной версии и процесс тестирования

• Варианты составления

• “Руками”

• git log

• ссылки на тикеты / документацию

• гибридный (?)

Page 14: Комфортная разработка мобильных проектов

Дебаг-символы

• ProGuard mapping.txt для Android

• .dSym.zip для iOS

• Отсутствие существенно усложняет диагностику крешей

• Легко теряются если сборка проводится на локальной машине

Page 15: Комфортная разработка мобильных проектов

Управление правами

• HockeyApp tags, teams

• Одна ветка — один тег (команда)

Page 16: Комфортная разработка мобильных проектов

pushpush

develop test release

commit <ab12fe> (tag: test-23)

commit <12cd34> (tag: test-24, release-4)

Page 17: Комфортная разработка мобильных проектов

Подводные камни

• Поддержка работоспособности (обновление)

• Требования к окружению для разных проектов

• Поддержка масштабируемой системы

• “Сакральные знания”

Page 18: Комфортная разработка мобильных проектов

3. После сборки

Page 19: Комфортная разработка мобильных проектов

Креш-репортинг• Сбор символов для расшифровки стектрейсов

(mapping.txt/dSYM.zip)

• Интеграция SDK

• Уведомления о крешах

• Интеграция с багтрекером

• Дополнительные данные (логи, app state)

• Не только креши (зависание главного треда, обычные ошибки)

Page 20: Комфортная разработка мобильных проектов

Решения

• Стандартные решения (ITC, Play)

• HockeyApp

• iOS: KSCrash

• Android: ACRA

• Коммерческие решения (Crashlytics, etc)

Page 21: Комфортная разработка мобильных проектов

Багрепорты• Shake to report (rage shake)

• Отправка через email / багтрекер

• Сборка данных

• Описание пользователя

• Скриншот

• ViewHierarchy

• Состояние приложения

• Логи

Page 22: Комфортная разработка мобильных проектов

Настройка “в полёте”

• Настройки для тестировщиков (переключение сервера, сброс данных)

• in-app

• system settings (iOS only)

• browser (url scheme)

Page 23: Комфортная разработка мобильных проектов
Page 24: Комфортная разработка мобильных проектов
Page 25: Комфортная разработка мобильных проектов

Диагностика “в полёте”

Page 26: Комфортная разработка мобильных проектов

Диагностика “в полёте”• iOS: https://github.com/Flipboard/FLEX

• Android: ???

• Расширяется

• Удобно отлаживать “мистические” баги вёрстки

• Позволяет менять состояние приложения

• Не нужно подключать девайс и перезапускать приложение для отладки

Page 27: Комфортная разработка мобильных проектов

4. В релиз

Page 28: Комфортная разработка мобильных проектов

• Особенности релизной конфигурации

• Многочисленные пересборки из-за замеченных в последний момент мелочей

• Человеческий фактор и дурацкие ошибки

День релиза

Page 29: Комфортная разработка мобильных проектов

Способы борьбы

• Более частые релизы

• Релизный чеклист для разработчика

• Релизная конфигурация для системы сборки

• Тестируем релизный бинарник

Page 30: Комфортная разработка мобильных проектов

Юрий Буянов

Вопросы?

РазработчикМобильных Приложений

OK.RU

@digal

[email protected]

yuri.buyanov

digal