ANDROID SCHOOL.RU - Android на практике
993 subscribers
19 photos
1 video
235 links
Делюсь опытом, пишу статьи по Android. Пошаговые инструкции с примерами, помогут разработать готовое приложение.
📌Курс по System Design https://clck.ru/3MdggN
📌Менторинг https://clck.ru/3HseCY
Download Telegram
#adb #приёмы_эффективности
5 полезных команд Android Debug Bridge, которые повысят вашу эффективность

Всем привет! Помимо того, что я веду курсы по Android-разработке, недавно начал вести курс для тестировщиков мобильных приложений. Ну там рассказать как тестировать производительность приложений, проверить overdraw, runtime-permisions и кучу ещё всего для проверки именно мобильных приложений. Одной из тем была работа с adb (Android Debug Bridge).

Если вы раньше использовали эту штуку только для установки/удаления apk, то спешу поделиться с вами удобнейшим набором команд на все случаи жизни. Рекомендую ознакомиться и использовать - повысите эффективность и заметно вырастите в глазах коллег.

Из интересного:
- Быстрая проверка UI приложения через смену конфигурации экрана
- Сброс прав/разрешений приложения (очень удобно для тех, кто не хочет тратить время на поиски в настройках)
- Изменение SharedPreference (Спорим вы не знали об этом?)
- Сохранение логов в файл
- Ввод текста в EditText (а если знаете python то можно написать скрипт и не вводить одно и тоже при авторизации)

Здесь я указал самые частые кейсы, которыми пользуюсь сам, но с полным списком команд можете ознакомиться по ссылке
https://gist.github.com/Pulimet/5013acf2cd5b28e55036c82c91bd56d8

Ну а ещё, совсем скоро вас ждёт новый курс по работе с одним из компонентов Android Jetpack - WorkManager
@android_school_ru
​​#новый_курс #work_manager #rxworker

Если вы ещё не работали с мощным и гибким инструментом из Android JetPack - WorkManager - то этот бесплатный практический курс для вас! В этом курсе вы научитесь управлять фоновыми задачами, используя рекомендованный Google компонент – WorkManager. Это современный способ для управления задачами, которые должны выполняться не в UI – потоке, даже когда пользователь уже активно не взаимодействует с приложением.

Задачи, эффективно решаемые с помощью WorkManager

- Выполнение сетевых запросов с заданной периодичностью
- Очищение кэша базы данных раз в сутки
- Обновление информации для виджетов
- Последовательное выполнение фоновых задач
- Скачивание тяжёлых файлов
- Трекинг геолокации пользователя в фоне

В этом курсе вы разработаете приложение-геотрекер. Приложение получает координаты устройства и сохраняет в локальную БД Room каждые 15 минут.

Вы освоите:

- Запуск фоновых задач без работы приложения через WorkManager
- Условия запуска фоновой задачи с использованием Constraints (наличие сети, состояние батареи и т.д.)
- Виды задач OneTimeWorkRequest и PeriodicWorkRequest
- Работа с RxWorker
- Способы получения геолокации через FusedLocationProviderClient
- Room для хранения информации в качестве локальной БД
- Flipper как инструмент для отладки Android-приложений

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/background-tasks-with-workmanager/

@android_school_ru
​​#MLKit #CameraX #LandmarkApi #Firebase #WikipediaApi

Новый курс: Распознавание образов на базе ML Kit и CameraX в Android.

Машинное обучение и нейронные сети окружают нас повсюду и только глухой не слышал о ML, Deep Learning и других баззвордах. А как дела обстоят с мобильными приложениями? Насколько сложно использовать методы ML в современных мобильных приложениях?

Не обязательно быть кандидатом наук, чтобы использовать ML при разработке собственных приложений. В этом мини-курсе предлагается разработать приложение - сканер известных достопримечательностей. Вы наводите камеру на Эйфелеву Башню и узнаёте интересные факты о ней. С помощью ML Kit SDK - это делается в несколько строк кода.

В этом курсе вы научитесь:

- Использовать ML Kit для задач распознавания изображений, в частности landmark recognition API
- Применять новый компонент CameraX - рекомендуемый Google для разработки приложений использующих камеру
- Получать данные из Wikipedia API
- Использовать Retrofit для сетевых запросов

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс!

https://androidschool.ru/courses/landmark-recognition-api-ml-kit/

@android_school_ru
​​#новый_курс #unit_tests #mockito #mvp
В этом мини-курсе на @android_school_ru мы разработаем приложение для поиска и сохранения любимых фильмов, а потом напишем Unit-тесты, используя Mockito.

Unit-тесты являются залогом здорового сна для разработчика. Если ваш код покрыт тестами, то количество багов будет стремительно уменьшаться - ваши пользователи перестанут писать негативные отзывы в Play Market, а вы наконец-то займётесь разработкой новых интересных фичей вместо постоянного исправления багов. К тому же тесты являются отличной документацией - по ним можно легко понять логику. А ещё они заставляют декомпозировать ваш код на мелкие тестируемые части.

Кроме unit-тестов, мы рассмотрим такую архитектуру как MVP и перепишем приложение так,
чтобы оно соответствовало принципам такой архитектуры для дальнейшего покрытия тестами.

После прохождения мини-курса вы сможете:

- Писать собственные Unit-тесты
- Использовать Mockito для написания  unit-тестов
- Применять архитектурный паттерн MVP для разработки Android-приложений

В итоге вы научитесь писать unit-тесты на базе Mockito и разрабатывать Android-приложения в соответствии с паттерном MVP.

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс!
https://androidschool.ru/courses/mockito-unit-tests-with-mvp/

@android_school_ru
​​#kotlin_coroutines #новый_курс

Мини-курс "Введение в Kotlin Coroutines"  - подойдёт для начинающих разработчиков, которые до этого не использовали Kotlin Coroutines. В нём мы разберём основы работы с корутинами. В результате вы сможете использовать Kotlin Coroutines в своих Android-приложениях для сетевых запросов, взаимодействия с UI и любых других асинхронных операций. Это всего лишь введение, призванное показать вам пример работы с корутинами, а более мощный продвинутый практический курс будет доступен осенью.

После прохождения туториала вы поймете:

- Как создать coroutines.
- Как запустить асинхронную операцию через корутины
- Обработка ошибок через coroutines.

Мы разработаем приложение - упрощенный клон Instagram. Пользователь сможет накладывать определённые фильтры на изображения. Загрузку изображений и применение фильтров мы будем реализовывать через Kotlin Coroutines.

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/kotlin-coroutines-intro/

@android_school_ru
​​​​#android_navigation #новый_курс

Всем привет! Новый мини курс, на этот раз для новичков в Android по навигации в приложении.
Мини-курс “Навигация в Android через Navigation Architecture Component” – подойдёт для начинающих разработчиков, которые хотят разобраться в реализации переходов между экранами в Android c помощью Navigation Architecture Component - библиотеки от Google являющейся частью Android Architecture Components. В результате вы сможете использовать Navigation Architecture Component в своих Android-приложениях для переходов между экранами, а также реализовать механизм deeplinks.

После прохождения туториала вы сможете:

📌 Реализовать переходы между экранами
📌 Обрабатывать deeplinks
📌 Передавать и читать данные между экранами

Мы разработаем простое приложение для демонстрации – список для чтения. Пользователь сможет просматривать список книг для чтения и хранить список прочитанных книг, просматривать детали

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/navigation-architecture-component/

После регистрации проверьте письмо в спаме, иногда туда попадают письма.
Кроме того, задать вопрос или предложить идею для курса вы можете в нашем пока маленьком чате https://t.me/android_school_talk

@android_school_ru
Спасибо всем, кто подписался и читает канал, я уверен, вы найдёте на канале, блоге и платформе AndroidSchool.ru множество полезного материла. Теперь, немного хочу познакомиться с вами и представлюсь. Меня зовут Михаил Валуйский, с 0 разработал и до сих пор работаю над приложением
"Мой Билайн"(10+ млн. инсталов) в компании Билайн в качестве лида и руководителя команды Android. До этого работал в Alibaba, Rambler и других компаниях. Кроме того, веду уроки в базовом и продвинутом курсе по Android-разработке в онлайн - школе Otus.

Проект AndroidSchool.ru и канал призваны помочь начинающим и мидл-разработчиком в получении и совершенствовании навыков, необходимых современному Android-разработчику. Здесь будут как обзоры и туториалы новых фишек, так и более фундаментальные вещи, как скажем паттерны, архитектуры и т.д.
Чтобы материалы и туториалы были максимально полезны, не поленитесь рассказать о себе, это займёт не больше 15 секунд https://forms.gle/RsfqXp6CNjqjJ6Xh9
Применяем паттерны проектирования в Android. Flyweight (Легковес).

Тема паттернов традиционно считается чем-то очень сложным, однако многие из разработчиков могут даже не подозревать, что используют их каждый день.
В этой статье я описал один из популярных паттернов, который реализован под капотом в Java, вы узнаете зачем вам применять такой паттерн проектирования как Легковес, какие есть примеры реализации в реальной жизни, узнаете о преимуществах и недостатках паттерна. И самое главное, после прочтения этой статьи вы ответите на вопрос, который очень любят задавать на собеседованиях. @android_school_ru

Узнать про паттерн Flyweight (Легковес)
🔐 Как сделать аутентификацию через отпечаток пальца или faceId? Изучаем AndroidX Biometric Library.

Возможно, вы неоднократно задавались вопросом, как реализовать вход в приложение через отпечаток пальца или faceId?

До Biometric Library, каждый реализовывал процесс входа по отпечатку пальца как мог. Какого-то стандартного способа не было, что приводило к большим неудобствам для разработчиков, учитывая высокую фрагментированность устройств на Android. К счастью, в Android 10 (API 29) была учтена обратная связь от разработчиков, и теперь появился единый интерфейс для использования биометрических датчиков (сканер отпечатка пальца и faceId) для аутентификации с помощью AndroidX Biometric Library API буквально в несколько  строчек, при этом появился стандартный диалог, который избавит вас от ненужного кода и самостоятельного создания UI.

В этой статье мы поговорим как работать с AndroidX Biometric Library API и создадим небольшое приложение, которое предлагает пользователю пройти процесс аутентификации через отпечаток пальца.

Кроме того, напомню для тех, кто недавно присоединился к нам - на платформе androidschool.ru - много полезных современных туториалов, каждый снабжён кодом и примерами.
​​#jetpack #datastore
Jetpack DataStore - новый способ хранения данных

В этом мини-курсе вы познакомитесь с Jetpack Datastore – это новый и улучшенный способ хранения данных, призванный заменить SharedPreferences. DataStore предоставляет 2 имплементации: Proto DataStore, позволяющий хранить типизированные объекты typed objects (на базе protocol buffers) и Preferences DataStore, хранящий пары ключ-значение. Данные сохраняются асинхронно, консистентно и транзакционно, избавляя от недостатков подхода на SharedPreferences.

📌Вы узнаете:
- Что такое DataStore и почему стоит его использовать.
- Как добавить DataStore в ваш проект.
- Ключевые различия между Preferences и DataStore и плюсы/минусы использования
- Как использовать Preferences DataStore.
- Как мигрировать с SharedPreferences на новые Preferences DataStore.

📌Проект:
В качестве практического примера вы разработаете приложение-список дел, которое позволяет сортировать список созданных задач по приоритету или по дедлайну. Ссылка на мини-курс

По ссылке вам доступны уроки и пошаговые примеры кода. Не забудьте оставить обратную связь и оценить курс

Канал AndroidSchool.ru
​​#новый_курс #viewmodel #livedata
Android LiveData и ViewModel

В этом курсе вы научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов LiveData и ViewModel. Обычно, когда меняются данные, нужно обновить состояние и графического интерфейса, который отображал данные. Учитывая то, что Android-компоненты имеют свой жизненный цикл и могут быть недоступны на момент обновления интерфейса - до недавнего времени обработка таких ситуаций была настоящей головной болью для разработчиков.  Однако теперь с помощью LiveData это стало проще простого. И в этом курсе мы разберёмся как это сделать.

Ключевые особенности курса:
📌 Научитесь работать с компонентами, помогающими пережить жизненный цикл активити или фрагментов
📌 Сможете применять LiveData для обновления UI
📌 Освоите работу с ViewModel
📌 Научитесь работать с Android Architecture Components

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс
https://androidschool.ru/courses/livedata-start/

Задать вопрос или предложить идею для курса вы можете в чате https://t.me/android_school_talk
Платформа AndroidSchool теперь обзавелась своим образовательным блогом на хабре! Первая статья о том, как создать сложный список за 20 минут! Сохраните себе, чтобы не забыть - точно пригодится! Комментарии и репосты приветствуются!
https://habr.com/ru/post/523768/
​​#koin #внедрениезависимости #di #servicelocator
Koin. Основы внедрения зависимостей

🚀Арсенал современного Android-разработчика стремительно обновляется и, хотя Koin уже более 2-ух лет доступен для использования, очень много туториалов используют старые и неактуальные версии. Поэтому я решил посвятить новый туториал основам работы с Koin.

В Android-разработке для DI традиционно используют Dagger 2, очень мощный фреймворк с кодогенерацией. Но есть проблема: новичкам сложно его использовать. Сами принципы DI просты и понятны, но Dagger усложняет их. С появлением Kotlin появилась возможность писать удобные вещи, которые были бы практически невозможны с использованием Java. Одной из таких вещей стал Koin, имеющий очень лаконичный API, упрощающий написание и поддержку кода. Пройдя новый курс: "Koin. Основы внедрения зависимостей" вы поймёте разницу между Dependency Injection и Service Locator, а также научитесь работать с Koin.

Ключевые особенности курса:
📌 Поймёте разницу между паттернами Dependency Injection и Service Locator
📌 Научитесь работать с Koin и применять своих проектах
📌 Готовый проект с исходным кодом доступен на GitHub

Курс бесплатный, но требуется регистрация. После регистрации вам доступны уроки и пошаговые примеры кода. Чтобы после регистрации начать курс - нажмите кнопку Enroll внизу или справа на детальном описании курса. Не забудьте оставить обратную связь и оценить курс

📚Ссылка на курс
💬Чат канала
Kotlin Android Extensions deprecated. Что делать? Инструкция по миграции

Возможно, вы уже слышали, что Kotlin Android Extensions — плагин для Kotlin теперь deprecated.

Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. Написал небольшую статью в блоге на medium по этому поводу. В статье мы кратко рассмотрим, что такое плагин Kotlin Android Extension, какие были проблемы с ним и что теперь нам, Android-разработчикам делать.
📚Читать полностью
​​#paging #flow #бесконечныйсписок
Реализуем бесконечный список на базе Android Paging Library 3.0

🚀Списки являются неотъемлемой частью любого мобильного приложения. У большинства списков нет фиксированного размера, поскольку информации слишком много для отображения сразу. Например, приложения соцсетей такие как Вконтакте, Instagram, Facebook. Вы можете бесконечно скролить вниз ленту новостей и никогда не дойдёте до конца - так как контента слишком много. Естественно, загружать сразу большой массив данных в мобильное приложение нельзя. Здесь есть множество причин: часто интернет в мобильных телефонах не такой быстрый как в WiFi, кроме того еще и платный. Очевидно, что данные нужно загружать порционно - такой паттерн называется paging (разбивка на страницы, подкачка страниц). 

К счастью, Google анонсировал библиотеку, позволяющую реализовать процесс постраничной загрузки данных в Android c минимальными трудозатратами. Такой подход улучшит пользовательский опыт при работе с приложением - так как для пользователя список будет казаться бесконечным и получение новой порции данных будет незаметно.

Ключевые особенности курса:
📌 Рассмотрим Android Paging Library 3.0
📌 На примере рассмотрим работу с Kotlin Flow
📌 Научитесь реализовывать бесконечные списки с постраничной загрузкой
📌 Готовый проект с исходным кодом доступен на GitHub

Ну а я напоминаю, что у вас есть возможность присоединиться к практическому онлайн-интенсиву, где вы прокачаетесь в Android на практике за 12 занятий.

📚Ссылка на курс
💬Чат канала
🔥Онлайн-интенсив
Поздравляю всех с наступающим 2021 годом!
Пусть в новом году исполнятся все заветные желания. Крутых проектов, здоровья, кучу путешествий, интересных людей вокруг💥

Этот год был достаточно результативным - было проведено несколько интенсивов, разработано с нуля с десяток туториалов и создан блог на хабре! В следующем году вас ждут новые практические интенсивы (в том числе и для новичков) и множество полезных туториалов по современной Android-разработке! А пока, желаю всем хорошо отдохнуть - чтобы ворваться в новое десятилетие и достичь поставленных целей!

Увидимся в следующем году!
#kotlin #приемы
Пишем чистый код на Kotlin. 8 простых, но эффективных приёмов

С каждым днем Kotlin набирает популярность в качестве языка программирования под Android. И уже даже те, кто был ярым адептом Java потихоньку тоже переходят на рекомендуемый Google язык разработки. Однако, на code review я часто замечаю, как разработчики, пересевшие на Kotlin, все еще пишут Java-подобный код, только используя синтаксис Kotlin.

Если вы хотите писать более чистый и лаконичный код на Kotlin, повысить свою эффективность и удивить коллег знанием языка, то прочитайте этот пост до конца — думаю найдете для себя много полезного. Читать
#паттерны #kotlin #builder
👷Эволюция паттерна Builder в Android.

Продолжаем тему паттернов проектирования. На этот раз рассмотрим порождающий шаблон проектирования Builder. Мы рассмотрим какую проблему решает Builder в Java, какие у него есть “братья” и как этот паттерн эволюционировал в Android-разработке при использовании Kotlin. Рассмотрим антипаттерны "Телескопический конструктор" и JavaBeans, а затем поговорим как реализовать паттерн Builder в Kotlin

Эволюция паттерна Builder в Android. Читать
#room #миграции
Как написать миграцию базы данных для Room?

Миграции базы данных порой пугают начинающих разработчиков и вместо правильной обработки смены версии БД, многие выбирают просто удаление старой базы данных вместе с данными.

Такой способ не подойдет для приложений, которые хранят данные, потому что в этом случае при обновлении приложения - все данные удалятся.

Поэтому в этой статье мы рассмотрим миграции версий базы данных на примере использования Room и научимся тестировать корректность миграций.

А совсем скоро выйдет туториал, в котором мы пошагово научимся тестировать приложение на базе MVVM и такие компоненты как LiveData, ViewModel и Room Dao

http://androidschool.ru/2020/03/24/room-migrations/