2 Легко отделить и тиражировать фичу для экспериментов 3 Наличие механизм навигации (диплинки / апплинки) 4 Низкая связность фичей Ожидания от подхода Стабильная работа системы 5 13
внешние зависимости Решает конкретную бизнес задачу Практически не относится к бизнес логике приложения • Авторизация • Профиль • Резюме • Список вакансий • Base UI • List & Pagination • Metrics & Analytics • Network 14
FeatureApi { fun getPositionFragment(): Fragment } interface FeatureApi { fun getPositionFragment(): Fragment //Допустимые внешние зависимости fun getSomeIntent(): SomeIntent fun getSomeInteractor(): SomeInteractor fun getSomeRepository(): SomeRepository // … } 22
API External Internal External Internal API APP Mediator External Internal API Deps MainSearchScreenMediator Component Holder MainSearchScreenComponent API External Stub API Internal 26
@ProvidePresenter fun providePresenter(): AutosearchPresenter { return AutosearchDI.openAutosearchScope().getInstance(AutosearchPresenter::class.java) } DI внутри модуля 38
PositionDependencies { fun getCurrentPosition(): String fun setCurrentPosition(position: String) fun onClosePositionScreen() } interface PositionDependencies { fun getCurrentPosition(): String fun setCurrentPosition(position: String) fun onClosePositionScreen() } Закрытие фичи 43
Фиче-модули User Job Position Push Suggestion University … Base UI List Processing Pagination Network Remote Config Custom Views View#1 View#2 View#3 … … Applicant Application Russia Azerbaijan Belarus Employer Application Russia Belarus Итоговая картина 46
приложения на одной кодовой базе в (!) одном модуле 3 Multi-Activity подход и монолитные Activity и Fragment 4 Dagger 2 и пухлый ApplicationScope 5 Отсутствие Event Bus, наличие синглтонов 6 End2end тесты основных сценариев на голом Espresso Контекст 48
Activity + Fragment Делаем механизм для роутинга (Smart Router) 3 Не занимайтесь внедрением MVP / MVVM / MVI на этом шаге Заменяем Activity + Fragment на Fragment 4 Слезаем с Multi Activity ШАГ №6 56
модулей Подготовка DI Разделение проектов Реанимация UI тестов Анализ слабых мест №8 №7 №1 №2 №3 №4 №5 №6 Photo by Sven Mieke on Unsplash План перехода на модульную архитектуру 69
с инструментами меняющими таблицу ресурсов 4 Для работы необходимы Android 5.0 (API level 21) и последняя версия приложения Play Store 5 Прочие баги, ограничения и недоработки https://developer.android.com/guide/app-bundle/#known_issues Ограничения С сайта Android Developers 85
зрелых проектов Экспериментируйте. В экспериментах рождается истина Слайды Обзор проблем Картина “TO BE” Подведение итогов Переход от “AS IS” к “TO BE” Динамические фиче-модули О чем мы говорили 92