#Новости
Android Broadcast - это уже не только Telegram канал, но и подкаст. Вы можете найти все выпуски (их пока 4) на множестве площадок. Уже 2 записанных подкаста и находятся на стадии постобработки. Подписывайтесь, что узнать о них первым:
👉 SoundCloud
👉 Google Podcasts
👉 Pocket Casts
👉 Castbox
👉 Apple Podcasts
👉 Spotify
👉 Яндекс Музыка
👉 YouTube
Android Broadcast - это уже не только Telegram канал, но и подкаст. Вы можете найти все выпуски (их пока 4) на множестве площадок. Уже 2 записанных подкаста и находятся на стадии постобработки. Подписывайтесь, что узнать о них первым:
👉 SoundCloud
👉 Google Podcasts
👉 Pocket Casts
👉 Castbox
👉 Apple Podcasts
👉 Spotify
👉 Яндекс Музыка
👉 YouTube
Android Broadcast призывает на помощь
Всем привет! Меня зовут Кирилл Розов. Я автор канала "Android Broadcast". Канал заметно вырос с момента своего появления. Проект идет дальше и о Android Broadcast нельзя сказать только в рамках Telegram канала. Сейчас вы уже можете найти видео на YouTube канале и подкасты на SoundCloud, Apple Podcasts, YouTube и др. площадках
За всем этим контентом стоят часы подготовки и часы постобработки. Хочется развиваться активнее и делать больше интересного материала, но в силу того что проект некоммерческий, я не могу уделять ему все свое время. Поэтому хочу обратиться к вам по трём поводам:
1️⃣ Присоединяйтесь к команде Android Broadcast!
Работе в проекте много и пригодятся все ваши навыки, как технические, так и нет. Задач много и разных: графический дизайн, помочь с сайтом. управлением контентом, постобработка записей подкастов. продвижение и др.
Если у вас есть желание помочь, то обязательно пишите
2️⃣ Подписаться на Android Broadcast
Просьба довольна стандартная, но очень важная для создателей контента, так как это позволяет привлекать больше внимание аудитории вне подписчиков и пиарить проект активнее. Подписывайтесь:
👉 Android Broadcast YouTube канал
👉 Android Broadcast Twitter
👉 Персональный Twitter Кирилла Розова
👉 SoundCloud
👉 Google Podcast
👉 Apple Podcasts
3️⃣ Помочь Android Broadcast материально
Проект «Android Broadcast» некоммерческий и все затраты кладутся на мои плечи. Расходы растут с появлением нового контента: подписки на сервисы, оборудование, продвижение и пр. Если вы хотите помочь Android Broadcast, то это можно сделать через Patreon.
Присоединяйтесь и давайте развивать проект для сообщества вместе!
С большим уважением ко всем читателям и благодарность за поддержку, автор "Android Broadcast" Кирилл Розов
Всем привет! Меня зовут Кирилл Розов. Я автор канала "Android Broadcast". Канал заметно вырос с момента своего появления. Проект идет дальше и о Android Broadcast нельзя сказать только в рамках Telegram канала. Сейчас вы уже можете найти видео на YouTube канале и подкасты на SoundCloud, Apple Podcasts, YouTube и др. площадках
За всем этим контентом стоят часы подготовки и часы постобработки. Хочется развиваться активнее и делать больше интересного материала, но в силу того что проект некоммерческий, я не могу уделять ему все свое время. Поэтому хочу обратиться к вам по трём поводам:
1️⃣ Присоединяйтесь к команде Android Broadcast!
Работе в проекте много и пригодятся все ваши навыки, как технические, так и нет. Задач много и разных: графический дизайн, помочь с сайтом. управлением контентом, постобработка записей подкастов. продвижение и др.
Если у вас есть желание помочь, то обязательно пишите
2️⃣ Подписаться на Android Broadcast
Просьба довольна стандартная, но очень важная для создателей контента, так как это позволяет привлекать больше внимание аудитории вне подписчиков и пиарить проект активнее. Подписывайтесь:
👉 Android Broadcast YouTube канал
👉 Android Broadcast Twitter
👉 Персональный Twitter Кирилла Розова
👉 SoundCloud
👉 Google Podcast
👉 Apple Podcasts
3️⃣ Помочь Android Broadcast материально
Проект «Android Broadcast» некоммерческий и все затраты кладутся на мои плечи. Расходы растут с появлением нового контента: подписки на сервисы, оборудование, продвижение и пр. Если вы хотите помочь Android Broadcast, то это можно сделать через Patreon.
Присоединяйтесь и давайте развивать проект для сообщества вместе!
С большим уважением ко всем читателям и благодарность за поддержку, автор "Android Broadcast" Кирилл Розов
#SQLite #Room
SQLite Triggers (+ Android Room)
SQLite - самая популярная БД в мобильных ОС. Почему? Немалую роль сыграло в этом ее встраивание в мобильные ОС и схожесть синтаксиса запросов с SQL. В Android вы также могли слышать о библиотеке Room, которая является ORM для SQLite и значительно упрощает работу с получением данных, а также получением их обновлений через
В статье автор разбирается в механизме SQLite Trigger и как оповещается об обновление данных в Room.
SQLite Triggers (+ Android Room)
SQLite - самая популярная БД в мобильных ОС. Почему? Немалую роль сыграло в этом ее встраивание в мобильные ОС и схожесть синтаксиса запросов с SQL. В Android вы также могли слышать о библиотеке Room, которая является ORM для SQLite и значительно упрощает работу с получением данных, а также получением их обновлений через
LiveData
, RxJava Observable
или Coroutines Flow
.В статье автор разбирается в механизме SQLite Trigger и как оповещается об обновление данных в Room.
Medium
SQLite Triggers (+ Android Room)
Diving into SQLite Triggers and Android Room internals
#TrustedWeb
Introducing android-browser-helper, a library for building Trusted Web Activities
Google представила первую стабильную версию библиотеки Android Browser Helper, цель которой облегчить работу с Trusted Web Activity (TWA). Все это делается уже поверх существующих библиотек из AndroidX.
Руководство по миграции с Chrome Custom Tab на Android Browser Helper
Introducing android-browser-helper, a library for building Trusted Web Activities
Google представила первую стабильную версию библиотеки Android Browser Helper, цель которой облегчить работу с Trusted Web Activity (TWA). Все это делается уже поверх существующих библиотек из AndroidX.
Руководство по миграции с Chrome Custom Tab на Android Browser Helper
Chrome Developers
android-browser-helper, a new library to build Trusted Web Activities. - Chrome Developers
Introduces android-browser-helper, a new library to build Trusted Web Activities.
This media is not supported in your browser
VIEW IN TELEGRAM
#RecyclerView
Zoom Recyler Layout
Куда не заводит только фантазия дизайнеров, чтобы сделать UI приложения красивым и неповторимым. Библиотека "Zoom Recyler Layout" может сделать переключение между элементами списка красивым.
Поддерживается обе ориентации
Zoom Recyler Layout
Куда не заводит только фантазия дизайнеров, чтобы сделать UI приложения красивым и неповторимым. Библиотека "Zoom Recyler Layout" может сделать переключение между элементами списка красивым.
Поддерживается обе ориентации
В каком варианте вы предпочитаете читать книги?
Final Results
44%
Бумажный
43%
Электронный
7%
Не читаю книги
7%
Посмотреть ответы
#ArchitectureComponent #Navigation #BottomNavigation
Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 1
Jetpack Navigation - это решение, предложенное разработчиками из Google для решения сложностей навигации. Самое важное, что Jetpack Navigation это не только API, но и визуальный редактор, а также Safe Args плагин для Gradle, который упрощает передачу аргументов и делает ее безопасной.
В статье разбирается интеграция
Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 1
Jetpack Navigation - это решение, предложенное разработчиками из Google для решения сложностей навигации. Самое важное, что Jetpack Navigation это не только API, но и визуальный редактор, а также Safe Args плагин для Gradle, который упрощает передачу аргументов и делает ее безопасной.
В статье разбирается интеграция
Jetpack Navigation
с Bottom Navigation из MaterialMedium
🚀 Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 1
A step-by-step guide for beginners on how to create Bottom Navigation using Android Jetpack Navigation
#ArchitectureComponent
Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 2
Во второй части разбирается:
👉 реализация меню для каждого из Fragment с Bottom Navigation
👉 навигация в глубину и скрытие/показ Bottom Navigation
👉 двойной back для выхода из приложения
Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 2
Во второй части разбирается:
👉 реализация меню для каждого из Fragment с Bottom Navigation
👉 навигация в глубину и скрытие/показ Bottom Navigation
👉 двойной back для выхода из приложения
Medium
🚀Beginner’s Guide to Bottom Navigation with Android Jetpack — Part 2
Part 2 of step-by-step guide for beginners on how to create Bottom Navigation using Android Jetpack Navigation
#Coroutines
DispatcherProvider
Использовать Dispatchers для получения стандартных CoroutineDispatcher напрямую - не самая лучшая практика, так как у вас не будет возможности легко изменить их. Например, это может быть полезно при рефакторинге или написание Unit тестов (мы же все стараемся их писать 😁), когда все выполнение должно происходить синхронно.
Для решения этой задачи обычно рекомендуется использовать свой собственный интерфейс или класс
Библиотека решает упростить это, реализовав за вас. Подход интересный и своеобразный. Мне кажется, что автор усложнил концепцию, описанную выше.
DispatcherProvider
Использовать Dispatchers для получения стандартных CoroutineDispatcher напрямую - не самая лучшая практика, так как у вас не будет возможности легко изменить их. Например, это может быть полезно при рефакторинге или написание Unit тестов (мы же все стараемся их писать 😁), когда все выполнение должно происходить синхронно.
Для решения этой задачи обычно рекомендуется использовать свой собственный интерфейс или класс
DispatcherProvider
(название может отличаться), который содержит ссылки на стандартные CoroutineDispatcher
с разницей, что он не является Singletone и доставляется с помощью DI (не всегда) в те места где требуется получение CoroutineDispatcher
.Библиотека решает упростить это, реализовав за вас. Подход интересный и своеобразный. Мне кажется, что автор усложнил концепцию, описанную выше.
GitHub
GitHub - RBusarow/Dispatch: Automatic CoroutineDispatcher injection and extensions for kotlinx.coroutines
Automatic CoroutineDispatcher injection and extensions for kotlinx.coroutines - GitHub - RBusarow/Dispatch: Automatic CoroutineDispatcher injection and extensions for kotlinx.coroutines
#Java #Java14
Java 14: записи (records preview)
Android разработка уже переехала на рельсы Kotlin (своей основной массой), но под капотом все равно старая добрая Java и про нее забывать не стоит.
В статье разбирается новая возможность в Java 14 records, которая направлена на упрощение синтаксиса языка. Фактически
Java 14: записи (records preview)
Android разработка уже переехала на рельсы Kotlin (своей основной массой), но под капотом все равно старая добрая Java и про нее забывать не стоит.
В статье разбирается новая возможность в Java 14 records, которая направлена на упрощение синтаксиса языка. Фактически
record
- это аналоги data класса из Kotlin.Хабр
Java 14: записи (records preview)
В скором времени в грядущей Java 14 появится новая синтаксическая фича — записи (records). После изучения превью, в котором вкратце описано, как выглядят записи...
#Gradle #AnnotationProcessing #Performance
Инкрементальный annotation processing для ускорения gradle-сборок
Практически всем в Android разработке приходится сталкиваться с процессингом аннотаций, а в частности kapt. Чтобы этот процесс происходил быстрее нужно выполнение инкрементальной компиляции, т.е. компилировать только необходимый код, а не весь полностью. Эти возможности появились в Gradle 4.7 и Kotlin 1.3.30.
В статье рассматривается теория и эффект от применения этих нововведений подробно:
👉 Как работает инкрементальная компиляция
👉 Инкрементальный annotation processing
👉 Категории процессоров аннотаций
👉 Опыт внедрения incremental annotation processing в hh.ru
👉 Профайлинг инкрементальных сборок
👉 Результаты бенчмарков
👉 Анатомия сборки в Gradle Build Scan
👉 Incremental vs parallel
Инкрементальный annotation processing для ускорения gradle-сборок
Практически всем в Android разработке приходится сталкиваться с процессингом аннотаций, а в частности kapt. Чтобы этот процесс происходил быстрее нужно выполнение инкрементальной компиляции, т.е. компилировать только необходимый код, а не весь полностью. Эти возможности появились в Gradle 4.7 и Kotlin 1.3.30.
В статье рассматривается теория и эффект от применения этих нововведений подробно:
👉 Как работает инкрементальная компиляция
👉 Инкрементальный annotation processing
👉 Категории процессоров аннотаций
👉 Опыт внедрения incremental annotation processing в hh.ru
👉 Профайлинг инкрементальных сборок
👉 Результаты бенчмарков
👉 Анатомия сборки в Gradle Build Scan
👉 Incremental vs parallel
Хабр
Инкрементальный annotation proccesing для ускорения gradle-сборок
Начиная с версий Gradle 4.7 и Kotlin 1.3.30 появилась возможность получить ускорение инкрементальной сборки проектов за счет корректной работы инкрементальной о...
#Analytics #Firebase
Google Analytics vs. Firebase Analytics vs. Google Analytics
У Google слишком много аналитик:
👉 Google Analytics Classic
👉 Google Analytics for Mobile (deprecated)
👉 Google Analytics 360
👉 Firebase Analytics
👉 Google Analytics for Firebase
В чем разница? Зачем постоянные обновления в названиях? Что из этого стоит использовать в современных Android приложениях? Ответы в статье
Google Analytics vs. Firebase Analytics vs. Google Analytics
У Google слишком много аналитик:
👉 Google Analytics Classic
👉 Google Analytics for Mobile (deprecated)
👉 Google Analytics 360
👉 Firebase Analytics
👉 Google Analytics for Firebase
В чем разница? Зачем постоянные обновления в названиях? Что из этого стоит использовать в современных Android приложениях? Ответы в статье
Medium
Google Analytics vs. Firebase Analytics vs. Google Analytics
A Guide for the Slightly Confused
Команда языка Kotlin запустили новый опрос, чтобы вы поделились своим опытом использования языка. Что вам нравится? Что нет? Что вызывает сложности? На все это можно ответить в опросе.
Также вы сможете выиграть призы:
🔥 3 билета на KotlinConf 2020
🔥 20 маек с символикой Kotlin
Также вы сможете выиграть призы:
🔥 3 билета на KotlinConf 2020
🔥 20 маек с символикой Kotlin
#Новости #Podcast #Kotlin #Multiplatform
Если у вас есть вопросы по Kotlin Multiplatform Mobile - спешите задать их в @android_broadcast_discussions, ведь совсем скоро я буду записывать эпизод "Android Broadcast Podcast" c представителями команды из JetBrains: Анастасией Капаниной (Product Manager Kotlin MPP) и Кириллом Шмаковым (разработчик в Kotlin MPP).
Если у вас есть вопросы по Kotlin Multiplatform Mobile - спешите задать их в @android_broadcast_discussions, ведь совсем скоро я буду записывать эпизод "Android Broadcast Podcast" c представителями команды из JetBrains: Анастасией Капаниной (Product Manager Kotlin MPP) и Кириллом Шмаковым (разработчик в Kotlin MPP).
#Podcast #Kotlin #Multiplatform
Android Broadcast #3: Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock
В ожидании выпуска вы можете послушать другие эпизоды. Например, интересующимся Kotlin MPP подойдет выпуск об опыте разработчиков из компании IceRock о адаптации этой технологии для Android и iOS проектов. Ребята разработали более 10 проектов с ее использованием и говорят уже на реальном опыте применения в production.
Android Broadcast #3: Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock
В ожидании выпуска вы можете послушать другие эпизоды. Например, интересующимся Kotlin MPP подойдет выпуск об опыте разработчиков из компании IceRock о адаптации этой технологии для Android и iOS проектов. Ребята разработали более 10 проектов с ее использованием и говорят уже на реальном опыте применения в production.
#Kotlin
Zero-cost* abstractions in Kotlin
Очень часто приходится сталкиваться в коде с тем, что в виде чисел могут представляться разные по смыслу переменные. Лучший пример - идентификаторы ресурсов в Android. Все это выражается цифрами и передать неправильное значение довольно легко.
Google дала нам решение в виде xxxRes, IntDef, IntRange и др. аннотаций над типами, но это не позволяет избавиться от ошибки во время компиляции.
Как же это решать? Оборачивать все в отдельные классы? Это доп. расход памяти и всех нас учили использовать Java примитивы в предпочтение типам оберткам.
В Kotlin предложили свое решение - inline классы, которые во время компиляции встраивают обернутый объект в место вызова. В статье вы найдет больше подробностей об это возможности языка Kotlin и когда компилятор не может развернуть тип
Zero-cost* abstractions in Kotlin
Очень часто приходится сталкиваться в коде с тем, что в виде чисел могут представляться разные по смыслу переменные. Лучший пример - идентификаторы ресурсов в Android. Все это выражается цифрами и передать неправильное значение довольно легко.
Google дала нам решение в виде xxxRes, IntDef, IntRange и др. аннотаций над типами, но это не позволяет избавиться от ошибки во время компиляции.
Как же это решать? Оборачивать все в отдельные классы? Это доп. расход памяти и всех нас учили использовать Java примитивы в предпочтение типам оберткам.
В Kotlin предложили свое решение - inline классы, которые во время компиляции встраивают обернутый объект в место вызова. В статье вы найдет больше подробностей об это возможности языка Kotlin и когда компилятор не может развернуть тип
Medium
Zero-cost* abstractions in Kotlin
Kotlin Vocabulary: inline classes
#JUnit #Test
Вышла новая версия JUnit 5.6.0
Основные изменения:
👉 Новый
👉 Новое API
👉 Улучшение отчетов для крэшей во время поиска/выполнения тестов
👉 Модуляризация Javadoc
Множество других улучшений который вы можете найти в полном описание изменений
Вышла новая версия JUnit 5.6.0
Основные изменения:
👉 Новый
@Enabled
/@DisabledForJreRange
условия для выполнения теста👉 Новое API
TestInstancePreDestroyCallback
для расширений👉 Улучшение отчетов для крэшей во время поиска/выполнения тестов
👉 Модуляризация Javadoc
Множество других улучшений который вы можете найти в полном описание изменений
Какую версию JUnit используете вы?
JUnit 5 (Spek 2 здесь) - 33
👍👍👍 13%
JUnit 4 - 115
👍👍👍👍👍👍👍👍 47%
Не пишу тесты - 83
👍👍👍👍👍👍 34%
Не знаю - 5
👍 2%
Использую другой тестовый framework - 3
👍 1%
Секрет. Но результаты посмотрю - 7
👍 3%
👥 246 человек уже проголосовало.
JUnit 5 (Spek 2 здесь) - 33
👍👍👍 13%
JUnit 4 - 115
👍👍👍👍👍👍👍👍 47%
Не пишу тесты - 83
👍👍👍👍👍👍 34%
Не знаю - 5
👍 2%
Использую другой тестовый framework - 3
👍 1%
Секрет. Но результаты посмотрю - 7
👍 3%
👥 246 человек уже проголосовало.
#Gradle #CI #Performance
How fast are your Android CI builds? And why it matters
Android проекты растут и разрабатываются долгое время большими командами. Все разработчики локально страдают от того как собираются долго проекты, но на CI это делается еще дольше так как обычно ему надо сделать:
👉 Скомпилировать код
👉 Прогнать Unit тесты
👉 Запустить статический анализатор KtLint, Detekt, Checkstyle, Android Lint и др.
Все это еще происходит медленнее чем на локальной машине т.к. на сервере выключается Gradle демон, который не имеет смысла на CI, когда собирается много разных ветках или вовсе все в Docker контейнерах.
В статье приводится история ребят, которые вместе с DevOps сели решить проблему долгой сборки проекта (47 минут) и как у них получилось (8 минут)
От себя рекомендую периодически запускать Gradle Build Scan, чтобы проверить где у вас есть проблемные места в сборке.
How fast are your Android CI builds? And why it matters
Android проекты растут и разрабатываются долгое время большими командами. Все разработчики локально страдают от того как собираются долго проекты, но на CI это делается еще дольше так как обычно ему надо сделать:
👉 Скомпилировать код
👉 Прогнать Unit тесты
👉 Запустить статический анализатор KtLint, Detekt, Checkstyle, Android Lint и др.
Все это еще происходит медленнее чем на локальной машине т.к. на сервере выключается Gradle демон, который не имеет смысла на CI, когда собирается много разных ветках или вовсе все в Docker контейнерах.
В статье приводится история ребят, которые вместе с DevOps сели решить проблему долгой сборки проекта (47 минут) и как у них получилось (8 минут)
От себя рекомендую периодически запускать Gradle Build Scan, чтобы проверить где у вас есть проблемные места в сборке.
Medium
How fast are your Android CI builds? And why it matters.
Over time our Android CI builds gradually got slower and slower and before we knew it our CI build times were taking 47 minutes and…