Android Broadcast
14.2K subscribers
3.52K photos
339 videos
11 files
5.89K links
Подборка новостей и статей для Android разработчиков.

Связь с автором @android_broadcast_bot
Реклама @ab_manager

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#Conference #Moscow #Promo

Mobius Москва 2019

Вы можете купить билет со скидкой предоставленной специально для Android Broadcast - используйте промокод mobius19mskAndroidBpc и купите билет здесь.

7-8 декабря в Москве пройдет конференция о мобильных технологиях Mobius. Спикеры из компаний LG, Яндекс, Tinkoff, Сбербанк, Вконтакте, JFrog, Amazon, Badoo, Lyft, Mail.Ru расскажут о:
👉 Лучших практиках тестирования
👉 Эффективный UI с Litho
👉 Как создать собственное правило для Android Lint
👉 Лучшие практики Kotlin
👉 Устройство шрифтов
👉 Как защитить ваше приложение
👉 Создание гибких и расширяемых архитектур
👉 Разбор в зоопарке Android систем: Things, Auto, Automotive, Wear, TV и классический вариант для телефонов
👉 Как продвинуть ваше приложение в Google Play и какие пути есть чтобы понравиться поддержке этого сервиса
#Architecture #MVI #PureKotlin

MVIDroid - MVIDroid is a framework written 100% in Kotlin that brings MVI pattern to Android

Хорошая архитектура приложения - это залог успеха вашего приложения. Она позволит вам расширять функционал, покрывать тестами код и другие полезные вещи.

Сам я никогда не был фанатом MVI, но архитектура довольная интересная. MVIDroid - это хороший пример реализации это архитектуры на чистом Kotlin без лишнего обвеса и оптимизированная под Android.
#Architecture #MVI #PureKotlin

Debugging with MVIDroid

Помимо всего библиотека имеет обширные возможности по отладке: логирование, подмена MviStore через Factory.

Также библиотека имеет функцию Time Travel - сохранение всех событий, благодаря чему вы может делать различные интересные вещи:
👉 Переключение между состояниями вперед или назад
👉 Просмотр всех событий
👉 Просмотр информации о любом событии
👉 Возможность вызова любого события снова
👉 Поставить breakpoint для любого события
👉 Возможность сериализации/десериализации для передачи событий между устройства
👉 Remote debug
#Firebase #FirebaseAppDistribution #Fastlane

Firebase App Distribution, Fastlane, Docker, Bitbucket Pipelines, Telegram, and all that jazz

На днях был представлен публично Firebase App Distribution, который упрощает доставку сборок вашего приложения тестерам.

В статье рассматривается как настроить новый способ доставки сборок на вашем CI с помощью Docker и Fastlane
#Gradle #AndroidGradlePugin

Трансформация кода в Android

Писать boilerplate никто не любит. Сначала это упростили написанием библиотек, потом была рефлексия, затем Annotation Processor и наконец генерация кода с помощью Gradle плагина. Например, с помощью этого работает Android Data Binding.

В статье рассматривается как с помощь Transfrom API написать Gradle плагин, который сохраняет указанные данные в состояние Activity и какие эффекты это несет на время сборки
#Architecture #CleanArchitecture

Multiple ways of defining Clean Architecture layers

Хорошая архитектура - это ключевой элемент для построения приложения которое может делиться на модули, расширяться, упрощать поддержку, обеспечивать тестирование и др.

Чтобы достичь этого мы используем такие подходы как Clean Architecture (CA), S.O.L.I.D., Dependency Injection

В статье рассматриваются различные подходы какие используются для реализации CA:
1️⃣ CA слов в одно модуле
2️⃣ Один CA слой - один модуль
3️⃣ CA слои в feature модуле
4️⃣ CA слои в отдельных модулях для каждой feature
Также проводится сравнение решений
#DependencyInjection #Modularization

Setting Up Android Modules With Kodein

Руководство как осуществлять модуляризацию при использовании Kodein
#Kotlin #Optimization

Kotlin: cleaning Java bytecode before release

Многие говорят о том, что Kotlin генерирует много дополнительного Java байткода и результат не оптимальный. Это незначительно влияет на производительность и объем кода. Это не мешает Java сторонникам на этом факте говорить, что их язык лучше.

В статье разбирается как можно избавиться от дополнительно генерированного Java байткода Kotlin компилятором и не платить цену за удобные фичи языка от JetBrains.
#Kotlin #Coroutines

Structured Concurrency Anniversary

Библиотека kotlinx.coroutines имела другой вид до того как в версии 0.26 была внесена новая концептуальная идея - Structured Concurrency. Эта концепция хорошо подошла для Android с ее сложным жизненным циклом и поэтому была быстра адаптирована и популяризирована. Даже сами разработчики AndroidX и Google рекомендуют использовать Kotlin Coroutines.

В статье Роман Елизаров рассказывает о текущем состояние Structured Concurrency, какие архитектурные решения хотелось бы изменить и что будет делать.

Например рекомендуется использовать Job только с coroutineContext в рамках CoroutineScope. Этому правилу следуют новоиспеченные Flow, которые запрещают использовать Job и приведут к крэшу приложения.
#Animation #Transition #SharedElement

Hidden mistakes with Shared Element Transitions

Анимации - это важный компонент хорошего UI/UX приложения. Они позволяют пользователю понимать что происходит в приложение, выглядеть элементам естественными и оставлять приятные ощущения. Одна из таких анимаций - Shared Element Transition (SET), которая позволяет анимировать переходы между экранами.

Все ли так просто? С какими проблемами столкнулся автор и как их решал? В статье вы найдете подробный рассказ:
👉 Как правильно присваивать идентификаторы View для SET
👉 Особенности работы с SET с вложенными Fragment
👉 Особенности использования загрузчиков картинок с SET
👉 Правильный момент для вызова postPostponeTransition() /startPostponedEnterTransition()
👉 Особенности RecyclerView и SET

Автор потратил около 4 дней чтобы понять эти ошибки, а вы можете получить опыт за 10 минут!
#R8 #Optimization #jakeWharton

R8 Optimization: Class Reflection and Forced Inlining

В новой серии статей Jake Wharton рассказывает о том как R8 умеет оптимизировать некоторые вызовы рефлексии и принудительный inline методов с помощью -alwaysinline.

Бойся ProGuard - R8 все качает мышцы и наращивает фичи
Какой оптимизатор/обфускатор кода используете вы?
Final Results
30%
R8
49%
ProGuard
9%
Не знаю
12%
Не использую оптимизацию кода
#Multiplatform #Kotlin #CI #CD

Continuous delivery для вашей Kotlin Multiplatform библиотеки

Kotlin MPP сейчас одно из самых многообещающих решений для шаринга кода между платформами (мнение лично моё). Да есть Flutter и я жду интересной битвы в будущем.

Уже сейчас любому Android разработчику, использующему Kotlin, можно легко заглянуть в будущее языка и узнать как шарить код и с какими проблемами сталкиваются разработчики, которые пишут реальные проекты и выпускаются open source библиотеки.

В статье вы найдёте опыт ребят из Badoo по выстраиванию инфраструктуры CI и CD для сборки и публикации библиотеки Reaktive.
Вам интересно читать посты о Kotlin Multiplatform?
Anonymous Poll
70%
Да
30%
Нет
#Emulator #CI #Docker

Continuous testing with new Android emulator tools

Google открывает доступ к своим скриптам для Docker Container-ов c Android эмулятором, чтобы помочь разработчикам упростить тестирование последних изменений.

Помимо этого Google предоставила следующее:
👉 Скрипт для загрузки эмуляторов (AOSP и Google Play Services)
👉 Генератор Docker образов с Android эмулятором
👉 Поддержка работы по ADB с эмулятором в контейнере
👉 Remote streaming: возможность подключения к эмулятору из контейнера через браузер и видеть что происходит, а также взаимодействовать с ним

Пока образ работает только на Linux, но работы по поддержке macOS и Windows ведутся.
#ChromeOS #LargeScreen

VLC optimizes its Android app for immersive video experiences on larger screens

VLC - самый популярный плеер, доступный на любой из современных платформ: Windows, macOS, Android, iOS. Команда приложения захотела сделать его еще более доступным и адаптировать своё Android приложение для корректно работы на Chrome OS. Что для этого надо было сделать:
👉 Поддержка экранов с большой диагональю
👉 Поддержка управления клавиатурой и мышкой
👉 Поддержка работы в плавающем окне
👉 Поддержка изменения размера окна
👉 VLC - это о видео и звуке, а поэтому надо поддержать нативный код для x86 и x86_64, которые популярны в Chromebook-ах

Будет классно услышать кого-то с опытом адаптации Android приложения для Chrome OS в @android_broadcast_discussions
This media is not supported in your browser
VIEW IN TELEGRAM
SurveyKit: Create beautiful surveys on Android

Любите делать опросы? Тогда вам пригодится библиотека SurveyKit
#AndroidX

Количество артефактов в Android огромное, чтобы посмотреть их можно полазить в документации либо зайти на maven.google.com. Сегодня сайт стал удобнее - на нем наконец-то появился поиск 🎉
#ConstraintLayout #AndroidX

Awesomeness of ConstraintLayout Flow

Мы уже давно ждем ConstrainLayout 2.0, а особенно MotionLayout + визуальный редактор анимаций в Android Studio! Но вот уже с Google I/O 2019 они весят в статусе beta 😞.

В статье рассматриваются новые элемент - Flow. Flow позволяет улучшить расположение элементов, нечто подобное на Chain, но уже работает не в первом измерение а одновременно по горизонтали и вертикали.
#Gradle #Bazel #Buck

Сборка Android-приложения. Задачка со звёздочкой

Сборка современного Android приложения - непростая задача . Множество библиотек, многомодульность, использование плагинов, процессоров аннотаций и др. Система сборки Gradle не радует своей скоростью.

Есть ли сборка на Android вне Gradle? В статье вы найдете сравнение стандартной системы сборки с Bazel и Buck