Android Broadcast – Telegram
Android Broadcast
14.4K subscribers
3.68K photos
368 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

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

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

Introducing a new Google Play app and game icon specification

Google Play Store представляет новые требования по дизайну для иконок приложений.

Какие изменения:
Размер иконок остаётся прежним, но прозрачный фон больше недопустим
Google Play и Chrome OS будут динамически закруглять углы и отбрасывать тень на иконку. Радиус углов будет 20% от размера иконки.
Изменения не касаются Google Play на Android TV, Wear и Auto
Изменения не касаются иконок в лаунчере для Android

Сроки для внесения изменения следующие:
1️⃣ Начало апреля - можно начать загрузку иконок с новыми требованиями. Старые и новые иконки будут отображаться корректно
2️⃣ 1 мая - можно загружать только новые иконки. Оба типа иконок будут отображаться корректно.
3️⃣ . 24 июня - старые иконки будут конвертированы в "legacy" режим. Загружать можно только новые иконки. Старые иконки будут сконвертированы в "legacy" режим

Обновление поможет команде из Google унифицировать внешний вид Google Play.

Google Play icon design specifications
👍1
Слева направо: старая иконка, новая иконка (пример), старая иконка в "legacy" режиме
#AndroidQ #WhatNews

Android Q - что нового для разработчиков

13 марта была представлена первая бета версия Android Q - очередного обновления популярной ОС. Основные изменения направлены на улучшение безопасности данных пользователя и ограничение возможностей сторонних приложений.

В статье я подробно разобрал все изменения
👍1
#ArchComponents #Navigation #MasterDetail

Master-Detail views with Navigation Components

Совсем недавно вышел Navigation Arch Component и идет его активное исследование. В статье рассказывается как реализовать "Master-Detail" на планшете с помощью новой библиотеки. Как оказалось это не совсем тривиальное решение.
👍1
#D8 #R8 #CPU #JVM

Android CPU, Compilers, D8 & R8

Статья о компиляции кода в Android и как Google улучшает процесс. В ней вы найдете:
👉 JVM и ее связи с Android
👉 Как работает JVM
👉 DEX
👉 Как читать байткод
👉 Как происходит сборка Android приложения
👉 Android Runtime (ART)
👉 D8 & R8
👍1
Мой первый барьер преодолён - 300 подписчиков ⭐️⭐️⭐️
🔥1
#Koin #DependencyInjection #Kotlin

Koin 2.0 Beta

Я люблю Kotlin и стараюсь использовать библиотеки, которые написаны на этом языке чтобы получить максимальную эффективность от использования Kotlin.

Самое важное в Koin 2.0 то, что библиотека упростила API и повысила скорость работы.
👍1
Результаты тестов Koin на LG G4 (Snapdragon 808/3 Gb). Как видите устройство не самое быстрое (ему уже 4 года), но результаты - 🔥🔥🔥
👍1
#GooglePlay

Google Mobile Developer Day at Game Developers Conference 2019

Google принимает участие в Game Developers Conference и сделала интересные анонсы:
👉 Теперь предварительная регистрация доступна для всех. Этот механизм позволяет заранее узнать о выходе продукта и подписаться пользователям на анонс приложения/игры, когда оно станет доступно в Google Play
👉 Увеличен размер конечной APK, получаемой из Android App Bundles, до 150 МБ (раньше было 100 МБ)
👉 Возможность кастомизации описания приложения в разных странах
👉 Обновление A/B тестов с описанием приложения в Google Play: теперь можно поменять описание для пользователей кто уже посетил страничку приложения.
👍1
#Coroutines #Architecture #ViewModel

Easy Coroutines in Android: viewModelScope

Coroutine имеют очень хорошую возможность - CoroutineScope, которые позволяют вам автоматически отменять выполнение всех Coroutine, связанных с ним. Это очень эффективно помогает при работе с UI, например при запуске Coroutine в Activity/Fragment/ViewModel.

Google активно поддерживает Coroutine и в AndroidX Lifecycle v2.1.0 добавлена поддержка CoroutineScope для ViewModel с помощью viewModelScope extension property. Подробности использования и реализации вы можете найти в статье!

Ждем релиза новой версии библиотеки
#Architecture #ViewModel #MVVM #ArchComponents

MVVM — How View and ViewModel should communicate?

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

На текущий момент очень популярным решением стало MVVM (Model-View-ViewModel). Рост спроса на эту архитектуру подкрепился тем, что разработчики из Google сделали готовые компоненты для удобной реализации этого подхода, что значительно упрощает задачу.

Замечание: классический MVVM, описанный в Microsoft, отличается от того что обычно применяется в Android

Чтобы сделать MVVM качественно надо придерживаться нескольких правил:
👉 У каждого компонента есть четкая роль: View отвечает за отображение данных, VM - предоставляет данные, которые отобразятся на View и обрабатывает события, связанные с данными в ней
👉 VM содержит только логику. Он не должен содержать никаких классов из Android SDK, все платформенное API должно предоставляться через абстракции в виде интерфейсов.
👉 Когда происходит клик или прочие события на UI, View только сообщается VM о произошедшем событие (простым вызовом метода в VM) и не выполняет какой-либо логики
👉 VM не знает ничего о View
👉 При модификации данных в VM они сразу же должны отображаться в View. Эффективный способ достичь этого - использовать LiveData. Это позволяет организовать push взаимодействие между VM и View, что дает мгновенное отображение любых изменений в данных на экране.
👉 ViewModel может предоставлять дополнительные методы для View. В случаях когда у вас много логики в VM можно вынести ее в отдельный класс - Presenter, который служит медиатором между VM. В таком случае VM будет служить чистым контейнером состояния View.

Следование правилам, описанным выше, позволит вам:
👉 реализовать эффективную архитектуру в Android
👉 не иметь проблем с жизненным циклом
👉 не думать о сохранение данных при повороте экрана
👉 позволит покрыть логику Unit тестами
👉 упростит расширение функционала в будущем
👍1
#MachineLearning #TensorFlow

TensorFlow Dev Summit key takeaways for Android Developers

На прошедшем TensorFlow Dev Summit было объявлено несколько важных новостей касательно работы этого фреймворка на Android:
👉 Ускорение TensorFlow Lite на GPU, которая увеличивает скорость 2-7 раз на устройствах с OpenGL ES 3.1 (Android 5.0+)
👉 Улучшена документация. больше примеров
👉 Запуск более сложных моделей на устройстве
👍1
#Gradle

Gradle 5.3 Released

Вышла новая версия Gradle. Релиз содержит следующие обновления:
👉 Feature variants (аналогично опциональным зависимостям в Maven)
👉 Обновление Kotlin DSL
👉 Gradle Module Metadata 1.0 - новый формат метаданных, которые решает проблемы Maven POM
👉 Исправление багов
👍1
#Performance #Gradle #Marble #AndroidGradlePlugin

Improving build speed in Android Studio

Статья о том как Google старается улучшить скорость сборки приложения в Android Studio (AS), хотя не совсем это получается по результатам работы на разных проектах. Причин этому несколько:
👉 Рост кодовой базы
👉 Spectre и Meltdown патчи снизили скорость процессоров
👉 Сторонние и собственные Gradle плагины, которые не поддерживают API последних версий Gradle, позволяющих ускорить сборку
👉 Использование Java 8 - приводит к работе desugar, что увеличивает время сборки. D8 и R8 позволяют снизить негативный эффект.
👉 Использование Kotlin, в особенности Kotlin annotation processing (KAPT), влияет на сборку
👉 Множество библиотек, построенных на Android Support Library, и требующих работы Jetifier при использование AndroidX библиотек

Для того чтобы решить проблемы Google активно работает с Gradle и JetBrains.


Google сделала множество улучшений в последних версиях Android Gradle Plugin:
👉 namespaced resources
👉 Инкрементальный annotation processor
👉 Поддержка Gradle Worker API
👉 Миграция на Gradle Lazy API


Как исправить положение дел в вашем проекте:
👉 Анализируйте производительность сборки вашего проекта с помощью Gradle Scan или Gradle profiler
👉 Используйте Gradle Lazy API, избегайте использовать I/O или любых других длительных операций
👉 Настраивайте все task-и в фазе конфигурации
👉 Настраивайте входные и выходные файлы/папки, чтобы ваши результат task-ов могли кэшироваться
👉 Разделяйте большие task-и на более мелкие, чтобы они могли кэшироваться независимо и выполняться инкрементально
👉 Убедитесь что один task не затирает результаты другого
👉 Используйте языки со статической типизацией (Java/Kotlin) вместо динамически типизируемых (Groovy) для написания ваших плагинов и Gradle скриптов
👍1
#AppBundle #GooglePlay #Instant

The latest Android App Bundle updates including the additional languages API

Google представили обновления Android App Bundle и его работе в Google Play:
👉Дополнительное API по установке языков, которое позволяет показывать пользователю диалог с выбором языков для установки, а также получить список всех установленных языков. API доступно в Play Core Library 1.4.0.
👉Поддержка Google Play Instant в App Bundle, теперь можно загружать Android App Bundle, который содержит модули для Google Play Instant
👉Удаление dymanic feature модулей, встроенных в приложение, при установке приложения. Это позволит удалять модули, для которых выставлено onDemand="false".
👉Теперь необязательно заливать ключ для Google Play App Signing и артефакт, подписанный этим ключом, перед этим. Больше подробностей здесь.
👍1
#AndroidKTX #Drawing #Kotlin

Android Canvas APIs with Kotlin and KTX

Библиотека Android KTX значительно упрощает разработку приложений на Kotlin, предоставляя Kotlin расширения для API из Android SDK.

Одно из таких удобных расширений - расширения для Canvas API.

Давайте посмотрим на результаты работы с новым API.
Без Android KTX:
val translateCheckpoint = canvas.save()
canvas.translate(200f, 300f)
canvas.drawCircle(...)
val rotateCheckpoint = canvas.save()
canvas.rotate(45f)
canvas.drawRect(...)
canvas.restoreToCount(rotateCheckpoint)
canvas.restoreToCount(translateCheckpoint)

С Android KTX
canvas.withTranslate(200f, 300f) {
drawCircle(...)
withRotate(45f) {
drawRect(...)
}
}

Плюсы от использования Android KTX - более читабельный код и невозможность избежать ошибки с вызовами save/restore().
👍1
Есть ли нативный (С/С++) код в вашем Android приложении?
Final Results
27%
Да
70%
Нет
4%
Не уверен