Android Head First - видео - все видео

Новые видео из канала RuTube на сегодня - 20 April 2026 г.

Android Head First
  20.01.2023
Android Head First
  20.01.2023
Android Head First
  20.01.2023
Android Head First
  20.01.2023
Android Head First
  20.01.2023

Видео на тему: Android Head First - видео


Пример написания Unit-тестов (MockK & JUnit) для источников данных (Data Sources) в Android-приложении. Пример тестирования кода с корутинами (suspend-функции и suspend-лямбды). Замена классов из Android SDK моками в юнит-тестах. Исходники проекта с тестами: https://github.com/romychab/android-tutorials/tree/main/tests-boxes-project Исходники сервера: https://github.com/romychab/boxes-server Сборки сервера (Win 10 & Linux, x64): https://github.com/romychab/boxes-server/releases/tag/v0.1В этом ролике рассматриваем простой пример написания UI-тестов на Espresso для приложения с RecyclerView, Coil, MVVM и Hilt. Рассматриваем особенности написания юнит-тестов для трех различных типов навигации: на базе активити, на базе фрагментов, и на базе Navigation Component. Ссылка на исходники: https://github.com/romychab/android-tutorials/tree/main/tests-espresso-simple Idling Resource: https://developer.android.com/training/testing/espresso/idling-resource Официальная документация по Espresso: https://developer.android.com/training/testing/espressoПример написания юнит-тестов для вью-моделей в Android-проекте. Наследование в юнит-тестах, подмена viewModelScope, тестирование LiveData с помощью InstantTaskExecutorRule, тестирование Kotlin Flows. Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/tests-boxes-project Исходники сервера: https://github.com/romychab/boxes-server Сборки сервера (Win 10 & Linux, x64): https://github.com/romychab/boxes-server/releases/tag/v0.1Вкратце рассматриваем фреймворк Robolectric, который позволяет написать обычные юнит-тесты для классов, которые зависят от Android SDK, в том числе - для фрагментов и активити. Такие тесты можно запускать без эмулятора или андроид-устройства и выполняются они быстрее, чем UI-тесты на Espresso.Пример написания юнит-тестов (JUnit & MockK) для слоя domain с бизнес-логикой приложения. Юнит-тесты для класса Result, для entities и для репозиториев. Наглядный пример, зачем нужен паттерн "фабрика". Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/tests-boxes-project Исходники сервера: https://github.com/romychab/boxes-server Сборки сервера (Win 10 & Linux, x64): https://github.com/romychab/boxes-server/releases/tag/v0.1Пример использования RemoteMediator + Retrofit + Room для пагинации списка в RecyclerView с кэшированием в локальную базу (Paging Library v3) В проекте используется SpaceX API для получения данных о космических запусках от SpaceX: https://github.com/r-spacex/SpaceX-API Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/paging-remote-mediator Документация по RemoteMediator: https://developer.android.com/topic/libraries/architecture/paging/v3-network-dbПродолжаем изучение фреймворка для внедрения зависимостей в Android - Hilt. В прошлом видео были мигрированы на Hilt классы модели, в этом видео мигрируем вью-модели, фрагменты и Activity. Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/hilt Исходники сервера: https://github.com/romychab/boxes-server Сборки сервера (x64 Windows 10 & Linux): https://github.com/romychab/boxes-server/releases/tag/v0.1Основы и теория тестирования. Что такое тестирование, какие бывают виды тестирования программного обеспечения и Android-приложений в частности. Ссылка на домашнее задание (реализация ResourceManager; можете также опционально попробовать написать к нему JUnit-тесты до реализации aka TDD): https://github.com/romychab/android-tutorials/tree/main/tests-intro-taskОсновы использования MockK. MockK - это библиотека для языка Kotlin, которая позволяет легко подменять зависимости в тестируемых классах с помощью заглушек и моков (stubs & mocks), имитируя поведение реальных объектов. Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/tests-mockk Документация MockK: https://mockk.io Альтернатива - Mockito: https://site.mockito.org/ Статья Martin Fowler: https://martinfowler.com/articles/mocksArentStubs.htmlОсновные принципы написания юнит-тестов. Методика написания юнит-тестов, основные условия тестируемости классов. Обзор базовых возможностей JUnit. Основные аннотации в JUnit (Test, Before, After). Класс Assert и методы assertXxx. Пример написания юнит-тестов в Android Studio для класса ResourceManager из предыдущего видео. Исходники: https://github.com/romychab/android-tutorials/tree/main/tests-junitИспользование библиотеки OkHttp для взаимодействия с HTTP-серверами. Использование парсера GSON для сериализации/десериализации JSON-сообщений. Логирование сетевых запросов с помощью HttpLoggingInterceptor. Автоматическое добавление заголовка Authorization в HTTP-запросы с помощью перехватчиков (Interceptors). Ссылка на исходники готового проекта: hhttps://github.com/romychab/android-tutorials/tree/main/network-okhttp-gson Ссылка на исходники с TODO-комментариями: https://github.com/romychab/android-tutorials/tree/main/network-okhttp-gson-exercise Ссылка на исходники сервера: https://github.com/romychab/boxes-server Ссылка на готовые сборки сервера (x64 Windows 10 & Linux): https://github.com/romychab/boxes-server/releases/tag/v0.1 OkHttp: https://square.github.io/okhttp/ GSON: https://github.com/google/gsonТеория внедрения зависимостей в Android. Что такое инверсия управления (Inversion of Control - IoC), принцип инверсии зависимостей (Dependency Inversion Principle - DIP), внедрение зависимостей (Dependency Injection - DI) и IoC Container. Зачем это нужно? Ссылка на исходники проекта с модулем foundation: https://github.com/romychab/android-tutorials/tree/main/mvvm-foundation-coroutinesВведение в сетевой протокол HTTP, который чаще всего используется в android-приложениях. Использование CURL для проверки работоспособности HTTP-запросов Исходники приложения-сервера и список запросов из видео: https://github.com/romychab/boxes-server Готовые сборки (x64) для Windows 10 и Linux: https://github.com/romychab/boxes-server/releases/tag/v0.1Основы использования библиотеки Hilt для построения графа зависимостей. Подключение Hilt к проекту. Основные понятия: модули (Module), компоненты (Component), квалификаторы (Qualifier), скоупы (Scope). Стандартные компоненты и квалификаторы в Hilt. Аннотации HiltAndroidApp, AndroidEntryPoint, Module, InstallIn, Binds, Provides, Inject. Официальная документация по Hilt: https://developer.android.com/training/dependency-injection/hilt-android Исходники готового проекта: https://github.com/romychab/android-tutorials/tree/main/hilt Исходники сервера: https://github.com/romychab/boxes-server Сборки сервера (x64, Windows 10 & Linux): https://github.com/romychab/boxes-server/releases/tag/v0.1Использование клиента Retrofit для взаимодействия с HTTP-сервером. Использование парсера Moshi для сериализации/десериализации JSON-сообщений. Интеграция Moshi с Retrofit.Продолжаем тему Jetpack Paging Library v3. В этом видео рассматриваем, как обновлять данные в списке с пагинацией без полной перезагрузки. Рассматриваем, когда можно и когда нельзя избежать перезагрузки списка. Ссылка на исходники проекта: https://github.com/romychab/android-tutorials/tree/main/paging-library-2Пагинация в Android - Jetpack Paging Library v3: загрузка данных небольшими порциями при прокрутке списка (endless scrolling). Использование PagingSource, Pager, PagingDataAdapter и LoadStateAdapter. Обработка ошибок при загрузке страниц списка. Отображение прогресса при загрузке списка и отдельных страниц списка. Реализация фильтрации (поиска) в списке с пагинацией. Документация по Paging Library v3: https://developer.android.com/topic/libraries/architecture/paging/v3-overview Исходники проекта: https://github.com/romychab/android-tutorials/tree/main/paging-libraryОсновы библиотеки Room для работы с базой данных SQLite. Подключение библиотеки к проекту. Создание DAO-классов, создание класса базы данных, создание сущностей и описание DAO-операций для работы с SQLite. Tuple-классы для более эффективной работы с базой данных. Аннотации: Entity, Database, Dao, ColumnInfo, Query, Insert, Update. Объявление первичных и внешних ключей в Room, создание индексов. Пред-заполнение базы данных из ассетов (assets) приложения. Документация по Room (подключение зависимостей): https://developer.android.com/training/data-storage/room#setup Исходники проекта с todo-комментариями: https://github.com/romychab/android-tutorials/tree/main/database-room-exercise Исходники готового проекта: https://github.com/romychab/android-tutorials/tree/main/database-roomВыборка данных из нескольких таблиц. Аннотации Relation и Embedded. Использование DatabaseView. Документация Room: https://developer.android.com/training/data-storage/room Исходники с ToDo-комментариями: https://github.com/romychab/android-tutorials/tree/main/database-room-2-exercise Исходники готового проекта: https://github.com/romychab/android-tutorials/tree/main/database-room-2Что такое миграция базы данных и зачем она нужна. Основы миграции баз данных с помощью библиотеки Room. Виды миграции в Room: автомиграция, гибридная миграция и ручная миграция баз данных. Исходники с TODO-комментариями: https://github.com/romychab/android-tutorials/tree/main/database-room-3-exercise Исходники готового проекта: https://github.com/romychab/android-tutorials/tree/main/database-room-3 Официальная документация: https://developer.android.com/training/data-storage/room/migrating-db-versions