Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Конвейерное производство
приложений.
Архитектура и инструменты
Мельников Андрей
Rambler&Co
an.melnikov@rambler-co.ru
andre...
Постановка задачи
Варианты реализация
 Product flavors - нескольких версий
 buildTypes – настройки отдельных
параметров и ключей
 Android...
Flavors
 productFlavors {
kassa35mm {
applicationId "ru.rambler.kassa35mm"
versionName "2.0"
}
kassabel {
applicationId "...
Flavors
 Отдельные ресурсы
 Отдельный код
 Отсутствие
возможности проверки
корректности других
веток
 Легкая сборка
 ...
BuildTypes
 Несколько видов
сборки
 Настройки для
тестирования
 Подмена ключей
Архитектура
 «Проект заготовка»
 Многоуровневая
архитектура, версии
для менеджеров и
теста flavors.
 Специальные версии...
Архитектура
 Вся настройка с помощью главной
фабрики
public class KassaApp extends Application {
public void onCreate() {...
Архитектура
public class MainFactory {
public FragmentManager createFragmentManager() {
return new FragmentManager();
}
pu...
Архитектура
public class BolshoyFactory extends MainFactory {
public FragmentManager createFragmentManager() {
return new ...
Архитектура
Основные компоненты:
 MainFactory – фабрика основных
сущностей
 UIManager – тонкая настройка view
элементов
...
Архитектура
Работа с фрагментами:
KassaFragmentManager:
…
@Override
public Fragment getOneCinemaFragment() {
return new Cu...
Настройка ключей
Вся ключи предоставляются через в хранятся
в config.xml. Доступ через класс KeysProvider:
public class Ke...
Получение дизайна
 Дизайн создается по аналогии с основной
версий. Все элементы поставляются в таком
же формате.
 Для цв...
Настройка ресурсов
Информация относительно кинотеатра
хранится в отдельном файле :
<string name="support_custom_email">
we...
Удаление элементов
Для удаления (скрытия) элементов используется
UIManager:
public boolean hasPosterSearch() {
return getB...
Пример меню
Добавление webView
 За работу с webView отвечает
отдельный фрагмент.
 Подменяем ссылку:
private String getUrl();
 <stri...
Добавление элементов
 При добавлении элементов характерных для всех
типовых кинотеатров, мы добавляем их в основной
проек...
Тестирование и отладка
 Для unit тестирования используется Robolectric,
для UI - espresso
 Для деплоя и аналитики исполь...
Continuous Integration
 Для CI используется Jenkins
 Сервер автоматически скачивает код из
репозитория по событиям
 Соб...
Управление аккаунтами
 Приложение выкладывается из под аккаунта
предоставленного заказчиком
 К данному аккаунту привязыв...
Конверсия в приложениях
Отзывы пользователей
Спасибо за внимание!
Смотрите кино!
Nächste SlideShare
Wird geladen in …5
×

Конвейерное производство приложений

404 Aufrufe

Veröffentlicht am

Rambler.Android #3: Конвейерное производство приложений (Мельников Андрей)

Veröffentlicht in: Software
  • www.HelpWriting.net helped me too. I always order there
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • You can try to use this service ⇒ www.HelpWriting.net ⇐ I have used it several times in college and was absolutely satisfied with the result.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Did u try to use external powers for studying? Like ⇒ www.WritePaper.info ⇐ ? They helped me a lot once.
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Gehören Sie zu den Ersten, denen das gefällt!

Конвейерное производство приложений

  1. 1. Конвейерное производство приложений. Архитектура и инструменты Мельников Андрей Rambler&Co an.melnikov@rambler-co.ru andrey7melnikov@gmail.com
  2. 2. Постановка задачи
  3. 3. Варианты реализация  Product flavors - нескольких версий  buildTypes – настройки отдельных параметров и ключей  Android library – выделение основной версии в библиотеку
  4. 4. Flavors  productFlavors { kassa35mm { applicationId "ru.rambler.kassa35mm" versionName "2.0" } kassabel { applicationId "ru.rambler.kassabel" versionName "2.2" versionCode 9 } }
  5. 5. Flavors  Отдельные ресурсы  Отдельный код  Отсутствие возможности проверки корректности других веток  Легкая сборка  buildConfigField "boolean", "SUPPORT_FONTS", "true"
  6. 6. BuildTypes  Несколько видов сборки  Настройки для тестирования  Подмена ключей
  7. 7. Архитектура  «Проект заготовка»  Многоуровневая архитектура, версии для менеджеров и теста flavors.  Специальные версии для отладки пушей и оплаты
  8. 8. Архитектура  Вся настройка с помощью главной фабрики public class KassaApp extends Application { public void onCreate() { … } protected MainFactory createMainFactory() { return new MainFactory(); } }
  9. 9. Архитектура public class MainFactory { public FragmentManager createFragmentManager() { return new FragmentManager(); } public UIManager createUIManager() { return new UIManager(); } public String getLatLng() { return LocationManager.getInstance().getLatLngParams(); } public String getCustomUrl() { return getContext.getString(R.string.custom_url); } }
  10. 10. Архитектура public class BolshoyFactory extends MainFactory { public FragmentManager createFragmentManager() { return new BolshoyFragmentManager(); } @Override public String getLatLng() { return getString(R.string.lat_lng); } @Override public UIManager createUIManager() { return new CustomUIManager(); } }
  11. 11. Архитектура Основные компоненты:  MainFactory – фабрика основных сущностей  UIManager – тонкая настройка view элементов  FragmentManager – фабрика фрагментов
  12. 12. Архитектура Работа с фрагментами: KassaFragmentManager: … @Override public Fragment getOneCinemaFragment() { return new CustomInfoFragment(); }
  13. 13. Настройка ключей Вся ключи предоставляются через в хранятся в config.xml. Доступ через класс KeysProvider: public class KeysProvider { public String getAppKey() {} public String getParseAppKey () {} public String getAppKey() {} } Config.xml:  <string name="parse_app_key">***</string>  <string name=“flurry_key">***</string>
  14. 14. Получение дизайна  Дизайн создается по аналогии с основной версий. Все элементы поставляются в таком же формате.  Для цветовых настроек выделяется отдельный файл colors.xml: <color name="kassa_delimiter">#bbe2f9</color>
  15. 15. Настройка ресурсов Информация относительно кинотеатра хранится в отдельном файле : <string name="support_custom_email"> web.support@bolshoikino.ru </string> <string name="app_name"> КиносетьЧарли </string>
  16. 16. Удаление элементов Для удаления (скрытия) элементов используется UIManager: public boolean hasPosterSearch() { return getBoolean(R.bool.config_poster_search_enabled); } public boolean hasHeaderLocation() { return getBoolean(R.bool. config_header_location_enabled); } Пример использования: if (!uiManager. hasHeaderLocation()) { disableHeaderLocationView(); }
  17. 17. Пример меню
  18. 18. Добавление webView  За работу с webView отвечает отдельный фрагмент.  Подменяем ссылку: private String getUrl();  <string name="custom_url_news"> http://kassa.rambler.ru </string>
  19. 19. Добавление элементов  При добавлении элементов характерных для всех типовых кинотеатров, мы добавляем их в основной проект  При добавлении нетипичных элементов, мы используем подмену фрагментов  @Override public Place getPlace() { Place customPlace = new Place(); customPlace.setId(52); … return customPlace; }
  20. 20. Тестирование и отладка  Для unit тестирования используется Robolectric, для UI - espresso  Для деплоя и аналитики используется fabric.io (ex Crashlytics)  gradle assembleRelease crashlyticsUploadDistributionRelease  ext.betaDistributionReleaseNotes=”Исправлено мигание превью.”  ext.betaDistributionEmails=“betaUser@ramble-co.ru, betaUser2@rambler-co.ru"  ext.betaDistributionGroupAliases=”ramblerCinema”
  21. 21. Continuous Integration  Для CI используется Jenkins  Сервер автоматически скачивает код из репозитория по событиям  Собираются все проекты  Автотесты проходят для всех проектов  Собранные apk доступны для скачивания и более детального анализа.  Доступен анализ покрытия кода тестами и успешности выполнения
  22. 22. Управление аккаунтами  Приложение выкладывается из под аккаунта предоставленного заказчиком  К данному аккаунту привязываются сторонние сервисы, предоставляется доступ к статистике.  Публикация в google play и app store также происходит от лица заказчика.  Возможно использование Publishing API https://developers.google.com/android-publisher/
  23. 23. Конверсия в приложениях
  24. 24. Отзывы пользователей
  25. 25. Спасибо за внимание! Смотрите кино!

×