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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#KotlinAndroidExtensions

Analyzing the Internals of Kotlin's Android Synthetic Import

Как часто в Android вам приходится использовать findViewById(int) ? Наверное, не так часто, потому что есть Butter Knife, Android Data Binding (а в Android Studio 3.6 упрощенный вариант - View Binding) . У Kotlin на жто свой взгляд - Kotlin Android Extensions.

Какая магия скрывается за этим решением? Что за synthetic импорт появляется для обеспечения работы этой функциональности? Каким образом не происходит утечек памяти? Как очищается кэш? Ответы на эти вопросы вы найдете в статье
#Kotlin #Refactoring

From Java Programming Language to Kotlin — the idiomatic way

Kotlin набрал огромную популярность в современной Android разработке и уже успел стать основным языком для нее. Но что делать если ваш проект написан на Java и вы хотите мигрировать на Kotlin?

Самое простое решение - встроенный конвертер Java кода в Kotlin Plugin for IDEA. Он сделает за вас основную работу, но не сделает код идиоматическим для Kotlin 😞. Поэтому необходима вторая фаза, в которой надо поправить получившийся код. Google создали codelab, который покажет как пройти этот процесс.
#Kotlin #Refactoring #Codela

Google Codelab: Refactoring to Kotlin

Содержание:
👉 Handling nullability
👉 Implementing singletons
👉 Data classes
👉 Handling strings
👉 Elvis operator
👉 Destructuring
👉 Properties and backing properties
👉 Default arguments and named parameters
👉 Working with collections
👉 Extension functions
👉 Top-level functions and parameters
👉 let, apply, with, and run keywords
#Modularization #Architecture

Inverting the Dependency — Independent Features in Android Applications

Подход к разбиению приложения на модули по принципу "Feature-спутник". Архитектура строилась чтобы удовлетворять требованиям:
1️⃣ Feature может не добавляться в buildVariant
2️⃣ Feature может быть загружена во время работы приложения
3️⃣ Может быть несколько feature, реализующих один и тот же функционал

Как это реализовывали и что из этого получилось вы можете узнать из статьи
#Java #Test

Truth 1.0: Fluent Assertions for Java and Android Tests

Google выпустила assertation библиотеку для тестов. В чем ее преимущества по сравнению с уже существующими решениями AssertJ и Hamcrest:
👉 Более простое API: вызовы идут цепочкой и IDE может легко вам предлагать подходящие assertation
👉 Сообщения об ошибки более читабельны

Truth поддерживает Java, Kotlin, Android, AndroidX Test, GWT.
Сравнение Truth и AssertJ
#AndroidQ

Android Q Beta 5 Update

Вышла новая бета Android Q. В рамках нее производилась стабилизация работы системы и API, т.к. финальное SDK мы получили в предыдущей Beta версии.

В Beta 5 вы сможете найти обновление в системе навигации. Google активно работает со своими партнерами, чтобы стандартизировать это поведение системы между всеми производителями.

Уже запустил установку системы телефоны себе на устройство. Через пару дней дам фидбек
#Room #SQLite

Вышла первая альфа Room 2.2.0

Показали первую альфу следующей версии Room. В ней нас ждут:
👉 Начальные данные для заполнения БД из asset-ов или файла
👉 Возможность задания значений по умолчанию для колонок @ColumnInfo(defaultValue=...)
👉 Поддержка m:n отношения между таблицами
👉 Поддержка инкрементного процессинга аннотаций. Пока для этого надо добавить room.incremental = true в опции процессора. В стабильном релизе будет включено по умолчанию.
👉 Теперь для работы с одной таблице смогут использовать несколько DAO. Новое свойство targetEntity в аннотация @Insert, @Update, @Delete, которое позволяет указать таблицу для которой выполняются действия метода DAO.
👉 Исправление багов

Очень жду следующих альфа версий, чтобы услышать о поддержке Flow из Kotlin Coroutines.
#EditorConfig #IDEA

Managing Code Style on a Directory Level with EditorConfig

В IntelliJ IDEA 2019.2 добавляется расширенная поддержка EditorConfig. В рамках неё появляется поддержка специфичных параметров для IntelliJ платформы и языков программирования.

EditorConfig - это решение, которое позволяет вам описывать единый стиль кода для проектов. Особенность этого подхода в том, что формат описания не привязан к какому либо инструменту для работы с кодом.
#Dagger

Delect - The Gradle Plugin for Dagger Reflect

Каково это избавиться от процессинга аннотаций Dagger 2 и ускорить сборку? Ребята из Soundcloud взяли идею Jake Wharton и заменили весь сгенерированный код Dagger 2 на решение на основе рефлексии. Это снизило производительность во время работы приложения, но зато дает более быструю сборку. Такое положительно скажется на билдах для разработчиков.

Библиотека находится в версии 0.1.0
Android Broadcast
​#AndroidQ Android Q Beta 5 Update Вышла новая бета Android Q. В рамках нее производилась стабилизация работы системы и API, т.к. финальное SDK мы получили в предыдущей Beta версии. В Beta 5 вы сможете найти обновление в системе навигации. Google активно…
#AndroidQ

Пошли уже вторые сутки как я хожу с Android Q Beta 5 на Pixel 3 и могу сказать, что я не нашел критичных багов. То что видел:
👉 В некоторых приложениях с темной темой цвет текста тоже черный и его не видно
👉 Проблемы при шаринге ссылок. Почему-то в списке доступных приложений для шаринга не показываются те, что были на Android P
👉 Очень долго включался телефон. Держал кнопку включения секунд 10 до того как увидел что-то на экране.
#HowItWorks

Android Internals 101: How Android OS Starts You Application

Более глубокое знание внутреннего устройства Android ОС даст вам знания об оптимизациях, которые вы можете использовать в разработке своих приложений. В статье вы найдете информацию о том что происходит за включением вашего телефона:
👉 Цикл загрузки Android
👉 Что такое Bootloader?
👉 Роль ядра ОС
👉 Процесс "Init"
👉 Zygote
👉 Виртуальная машина
👉 System Server
👉 За что отвечает Activity Manager?
#Dagger

Dagger Tutorial

Dagger - это очень мощное решение для Dependency Injection. Однако изучить его из-за этого сложно + на официальном сайте не найти руководства по тому как использовать его на Kotlin, а особенностей много.

На сайте Dagger сделали простое руководство по тому как начать работу с библиотекой. В нем освещаются все базовые возможности библиотеки и немного шире. Жду руководства на Kotlin.
#AndroidQ #Text

What’s new for text in Android Q

Android Q принес ряд оптимизаций для текста:
👉 Перенос слов (hyphenation) отключен по умолчанию в Android Q и AppCompat 1.1.0. На то чтобы рассчитать переносы тратилось около 70% времени из общего времени подготовки текста к отображению
👉 Использования множества шрифтов в одном TextView
👉 Улучшение text spans API: поддержка шрифтов, тени, fontFeatureSettings and fontVariationSettings
👉 Доступ к системным шрифтам: вы можете получить список системных шрифтов
👉 Обновление шрифтов: новый шрифт Myanmar и эмоджи
#Java #iOS

A plan to bring Java to iOS

Планируется перезапуск над проектом OpenJDK Mobile, цель которого портировать JDK 9 на популярные мобильные платформы: Android, iOS и Windows.

OpenJDK Mobile планирует использовать ahead-of-time компиляцию для создания исполняемых файлов, которые будут запускаться на без виртуальной машины.

Что-то очень попахивает Kotlin Multiplatform Projects 🤔
#Dagger #DependencyInjection #Multibinding

Abusing Dagger with Initializers

Dagger - самое популярное решение для Dependency Injection в современной Android разработке. Он имеет множество возможностей, которыми пользуются немногие, а есть и такие которыми пользуются единицы (например Dagger Producers - асинхронный Dependency Injection).

В статье вы сможете подробнее узнать о том, как применить Dagger Multibinding на примере решения задачи выполнения различных инициализаций при запуске приложения с плагинной архитектурой.