Android Broadcast
14.1K subscribers
3.42K photos
308 videos
11 files
5.72K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
🔥Открываем Flutter-подкаст, знакомимся и обсуждаем возможности и перспективы фреймворка.

https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk

Станет ли Flutter спасением для мелкого аутсорса и стартапов, какой помощи ждать от Google тем, кто всё-таки решился переехать на Flutter, какими внутренними Flutter-приложениями уже пользуются сами гуглеры, "что там по Фуксии" и перестало ли слово "кроссплатформа" быть ругательным - всё это и многое другое мы обсудим в пилотном выпуске!

У микрофона: Евгений Сатуров, Артем Зайцев, Звиад Кардава.

Спонсор выпуска - студия разработки Surf (Mobile + AI) https://surfstudio.ru/

Родмэп-2019: github.com/flutter/flutter/wiki/Roadmap
Баг-трекер: github.com/flutter/flutter/issues
Майлстоуны: github.com/flutter/flutter/milestones
Коллекция библиотек: pub.dartlang.org/flutter/packages
Подборка готовых приложений: itsallwidgets.com
Нашумевшая статья от Хакер о Фуксии(платно): xakep.ru/2019/01/09/

Официальный чат подкаста: https://t.me/flutterdevpodcast
#AppBundle #Optimizations

Google Santa Tracker — Moving to an Android App Bundle

Кто слышал о приложение Google Santa Tracker? Это приложение, который каждый год позволяет миллионам пользователям следить за передвижением Санты, и чтобы сделать его лучше "Корпорация Добра" обновляет его, уже в 2017 году приложение весело 60 Мб 😢 (универсальное APK), что довольно много и является проблемой чтобы быстро насладиться главным функционалом приложения - трекером.

Чтобы решить эту проблем разработчики решили воспользоваться Android App Bundle (AAB). С помощью этого формата поставки приложения можно организовать динамическую загрузку функционала, который пользователь использует редко или вовсе не используется и не загружать ресурсы графики, строки и нативные библиотеки, которые не нужны на устройстве.

В результате проведенных оптимизаций с помощью AAB удалось сократить размер загружаемого APK при начальной установки до 9.21 MB (85% сокращение).

В статье описывается:
👉 Первые шаги с AAB
👉 Dynamic Delivery
👉 Реализация Feature модулей и как это изменило UI/UX
👉 Результаты оптимизации
Диаграмма размеров в оптимизированном приложение с Dynamic Delivery
#Kotlin #Extensions

KdroidExt - Use the power of Kotlin to make your code smaller and beautiful

С момент официальной поддержки Kotlin в Android появилась специальная библиотека Android KTX, которое включает в себя различные Kotlin функции, которые упрощают взаимодействие с Android SDK из Kotlin.

Добавление нового API там довольно консервативно и порой хочется добавить что-то более простое, но не вписывающееся в видение авторов библиотеки 😞

Но можно же просто решить такую проблема - запилить свою библиотеку (у меня в проекте есть 😀), но тут снова печаль - нет никакой стандартизации. KdroidExt - имеет множество расширений, позволяющих упростить работу и может стать стандартом, если мы начнем ее активнее использовать:
👉 Работу с различными *View
👉 Доступ к системным сервисам
👉 Показ toast (их кстати выпили из Android KTX к релизу 1.0)
👉 Создание Intent и запуск Activity/Service
👉 Логирование
👉 Работа с потоками/AsyncTask
👉 Изящно избавиться от if(Build.Version.SDK_INT > 21)
👉 Работа с ресурсами
👉 Расширения для Activity/Fragment
👉 очень много всего еще
#GoogleIO

Google I/O 2019 пройдет 7-9 мая

Билеты будут продаваться 21-27 февраля, а потом состоится традиционная лотерея!

Чего ждете от конференции вы?
Forwarded from ❗️NEWS Android Dev Подкаст (Denis Nek)
https://androiddev.apptractor.ru/android-dev-podkast-85/

Подкаст #85. ML в Android

Machine Learning, а вернее запуск моделей на мобильных устройствах, тема не столько популярная, как выбор архитектуры мобильного приложения, но в ней таится очень много интересного. Интервью со Славой, бывшим разработчиком Prisma, о всех его приключениях в мобильном ML мире. В выпуске вы узнаете сколько тензоров нужно, чтобы сжечь Xiaomi и как не уйти в запой, когда инференс на одном устройстве занимает 3 секунды, а на другом с той же моделью 5 минут.

https://github.com/XiaoMi/mace - Xiaomi MACE
https://firebase.google.com/docs/ml-kit/ - Firebase ML Kit (beta)
https://tensorflow.org/lite/ - TensorFlow Lite
https://research.fb.com/downloads/caffe2/ - Caffe2 by Facebook
https://pytorch.org/ - PyTorch
https://code.fb.com/ml-applications/qnnpack/ - Optimized Mobile Deep Learning by Facebook
https://developer.qualcomm.com/software/qualcomm-neural-processing-sdk - Qualcomm Neural Processing SDK for AI (SNPE)
https://developer.huawei.com/consumer/en/devservice/doc/2020315 - HUAWEI HiAI
https://developer.android.com/ndk/guides/neuralnetworks/ - Neural Networks API by Google
http://ai-benchmark.com/ - AI benchmarks
https://blog.prismalabs.ai/real-time-portrait-segmentation-on-smartphones-39c84f1b9e66 - Prisma about portrait segmentation
https://www.androidauthority.com/kirin-970-vs-snapdragon-845-859742/ - NPU vs DSP

А еще не забудьте послушать пилотный выпуск подкаста про Flutter https://soundcloud.com/flutterdevpodcast/0-pilotnyy-vypusk
#UI #Material

Setting up a Material Components theme for Android

На Google I/O 2018 было представлено значительное обновление системы дизайна Google - Material Design 2.0. Новая библиотека com.google.android.material содержит множество изменений: новые темы, виджеты, стиль и атрибуты, на основе которы происходит кастомизация.

В статье подробно рассматриваются аспекты реализации нового дизайна в ваших приложениях на Android

Material Design Components Playground

Репозиторий Material Components for Android
#Kotlin #VarArg

Kotlin’s vararg and spread operator

Kotlin поддерживает переменное число аргументов (vararg) у функций, но в отличие от Java у него нет ограничения что vararg параметр может быть только один и должен быть расположен последним. В Kotlin у вас вполне будет валидна функция

fun sample(text:String, vararg list1: String, count: Int)

Как такое может компилироваться в валидный байт код? Какова цена разворачивания массива в vararg с помощью spread оператора (*) ? Все это вы можете узнать из статьи.
#AndroidX #RecyclerView #Selection

A guide to recyclerview-selection

Google делает много полезных библиотек в рамках AndroidX, но не всегда они славятся простой той и гибкостью 😞. Яркий пример - RecyclerView Selection. В статье вы найдете руководство о том, как настроить выбор в RecyclerView, а самое главное - череду проблем и как их пришлось решать окольными путями (. Например, не сохраняется состояние после поворота и происходит креш 🤬
#RecyclerView

Update recycler view content without refreshing the data

Знали ли вы о роли payload в
RecyclerView.Adapter.notifyItemChanged(int position, Object payload)
RecyclerView.Adapter.notifyItemRangeChanged(int positionStart, int itemCount, Object payload)
???

С помощью этих данных можно обновить элементы вашего списка без необходимости полной перерисовки. Это будет полезно когда вам надо выделить текст на элементе списка, либо свернуть/развернуть его. Как это можно реализовать найдете в статье.
#Firebase #Firestore

Cloud Firestore has Gone GA, Lower Pricing Tiers, New Locations, and more!

Обновления от команды Firebase:
🎉 Firestore вышел из Beta
💲 Новая ценовая политика... скоро. Скидки до 50% при использование серверов в отлдельных регионах
📍 Новые локации с серверами
👉 Возможность просматривать статистику использования Firestore: чтения, запись и удаление. Это поможет в оценке расходов. Работает на основе Stackdriver, благодаря чему позволяет задавать уведомления о достижении лимитов.
#UI #Layout #FlexBox

Google FlexboxLayout for Android

Те кто работает с Web технологиями знают о CSS Flexible Layout, довольно гибкое решение для построения UI. Ребята из Google реализовали это решение для Android FlexboxLayout.

Суть layout сводится к тому что он позволяет довольно гибко выстраивать сетку из View, переносить их на новую строку/столбец если они не вмещаются на экране, задвать веса

Поиграться с layout можно с помощью примера Flexbox Playground
This media is not supported in your browser
VIEW IN TELEGRAM
Пример реализации FlexbotLayoutManager для RecyclerView
#Dagger #AnnotationProcessing

Dagger 2 Reflect

Annotation Processing - бич современной Android разработки, т.к. он увеличивает время сборки значительно и полноценной поддержки инкрементальной компиляции его нет 😞. Jake Wharton разрабатывает решение, которое позволит избавиться от annotation processing для Dagger 2. Однозначное решение более медленное в работе в runtime, но вот время сборки улучшится разы и идеально подходит во время разработки.

Ждем первого релиза и скрестим пальцы 🤞 что Google поддержит эту инициативу и сделает этот проект официальной частью Google Dagger 2
#Kotlin #Architecture

Tips For Writing a Library in Kotlin

Когда вы будете писать библиотеку под Android, какой язык вы выберете: Java или Kotlin? Если конечный проект не использует Kotlin для него это может быть overhead по размеру. В свою очередь, разработка на Kotlin позволит вам использовать Multiplatform Project (MPP) и писать библиотеку, которая может использоваться на различных платформах: JVM, JS и Native!

Общие советы для написания библиотек:
👉 Делайте API компактным
👉 Делайте API абстрактным и чистым
👉 Используйте интерфейсы
👉 Модуляризация библиотеки

Для Kotlin библиотек:
👉 Добавляйте companion object, даже если он пустой
👉 Extension функции помогают делать более гибкий API
👉 Используйте reified в функциях

И наконец для MPP:
👉 Используйте Property вместо Getter-ов
👉 Скрывайте Kotlin API, которая не подходит для Java проектов
👉 Скрывайте Java API, который генерируется Kotlin (например с модификатором internal)
👉 Расширяемость
👉 Используйте Multiplatform аннотации
👉 Проблема Multiplatform SAM (Single Abstract Method) -> используйте интерфейсы вместо функций
От себя порекомендую перед тем как публиковать библиотеку покажите ее своим коллегам, ребятам из сообщества и постарайтесь максимально привлечь людей, чтобы API вашей библиотеки было изучено конечными пользователям с разными потребностями.
#AndroidAcademy #Concurrency #Coroutines #Rx

Android Academy Minsk #2: Threading

Сегодня пройдет встреча Android Academy 😎, на которой я расскажу о как делать многопоточными приложения в Android. В программе:
1️⃣ Как работает Handler/Looper механизм в Android
2️⃣ RxJava: основы подхода, в чем ее сила и как она может стать болью в вашем проекте
3️⃣ Kotlin Coroutines: основы идеи, отличие от блокирующего подхода, основы работы с корутинами, structured concurrency
4️⃣ Подводные камни многопоточной разработки

Проведите вечер понедельника с пользой и приходите в Space (Октябрьская 10Б). Мы начинаем ровно в 19:00! До встречи 👋

Участие бесплатно по предварительной регистрации. Количество билетов ограничено
#Networking #LibUpdates

OkHttp 3.13 was released

Вышла новая версия библиотеки OkHttp. В обновление реализовано:
👉Минимальная поддерживая версия Android 5.0 и Java 8. Это связано с проблемой поддержки TLS 1.2 на старых версиях Android
👉TLSv1 и TLSv1.1 отключены по умолчанию
👉Обновлено Okio до версии 1.17.3. Для тех кто использует Kotlin friendly Okio - обновитесь до версии 2.2.2 и выше
👉 Различный багфикс и улучшения API