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
#ProGuard #R8

ProGuard and R8: a comparison of optimizers

ProGuard приобрел значительную долю популярности, если не большую, за счет Android разработки. Каково же их разочарование когда Google начала разрабатывать R8 как замену ProGuard и уже в следующем релизе Android Studio 3.4 R8 по умолчанию заменит ProGuard.

В статье вы найдете сравнение ProGuard и R8. Сразу скажу что R8 не срывает оваций т.к. часть оптимизаций, которые уже давно есть в ProGuard еще не реализованы в новой утилите от Google, но она содержит другие и активно наращивает обороты. Также R8 сфокусировано на Android разработке: исправление багов с интерпретаций байткода на различных версиях Android, удаление сервисного кода от Kotlin и прочие.
#R8 #Optimization #Kotlin

R8 Optimization: Null Data Flow Analysis (Part 2)
R8 Optimization: Null Data Flow Analysis (Part 1)

Продолжение серии статей от Jake Wharton про оптимизации, которые выполняет R8 в Kotlin коде. В статье рассматривает о том как R8 избавляется от сервисного кода по проверки Java объектов на null.
#Library #UI #PorterDuff

The power of Android Porter/Duff Mode

В статье рассказывается о создание анимации источника света на основе Porter/Duff Mode и все это собрано в библиотеку.

Github LightProgress
#Dagger #LibUpdates #DependencyInjection

Dagger 2.21 is out

Вышла новая версия Dagger. Релиз не содержит нового функционала и включает:
👉 Улучшение скорости сборки
👉 Новые валидации графа зависимостей
👉 Улучшения в генерированном коде
#Deadlock #Kotlin #Coroutines

Deadlocks in non-hierarchical Communicating Sequential Processes (CSP) от Roman Elizarov

Рассказ о том, как при CSP (actor в корутинах), можно получить deadlock. Самое главное - как этого не допускать! Эта статья яркий пример, что каким бы крутым не было решение, то допустить ошибку можно с любой и надо быть внимательным.
#ProGuard #Security #HowItWork

Как работает ProGuard от @miproblema

Если вы делаете качественные Android приложение с высоким уровнем безопасности и маленьким размер, то вы наверняка знаете, что такое ProGuard. Много написано о том как настроить эту утилиту, но как она работает? Что происходит для того чтобы оптимизировать ваше приложение и оставить его рабочим? Статья раскрывает как работает ProGuard
#Lifecycle #ViewModel #Activity

The Android Lifecycle cheat sheet — part IV : ViewModels, Translucent Activities and Launch Modes

Четвертая часть в серии диаграмм жизненного цикла основных компонентов Android. В последней статье вы найдете информацию о жизненном цикле:
👉 ViewModel в Activity и Fragment
👉 Translucent Activity
👉 Activity в различных launch режимах: "single top" и "single task"
#Image #Native #Library

Spectrum by Facebook - cross-platform image transcoding library

Facebook делает много интересных проектов в Open Source, либо открывает те которыми ужа давно пользуются. Spectrum - один из таких проектов. Библиотека позволяет выполнять основные операции с изображениями в форматах JPG, PNG и WEBP:
👉 Encoding - сохранение Bitmap на диск
👉 Transcoding - конвертирование одного формата изображений в другой
👉 Decoding - считывание Bitmap из закодированной картинки
👉 Transforming - выполнение базовых преобразований изображений: поворот, изменений размера, обрезка.

Библиотека отличается тем что:
👍 лучше оптимизирует картинку при сохранение на диск
👍 при групповом выполнение операций оптимизирует их
👍 все операции выполняются за рамками Java Heap, что позволяет эффективнее использовать память на Android

Spectrum GitHub
#Kotlin #Coroutines

Kotlin Coroutine Cheat Sheet от Kt.Academy

Cheat sheet с основными классами корутин и их описанием.
Исходник в PDF.
#WebView

Digging into failed redirects within Android Webviews от Joe Birch

История исследования проблемы с авторизацией oAuth в WebView и какую роль в этом сыграла WebSettings. setDomStorageEnabled.
#Library #GPU #Video

GPUVideo-android

Библиотека, позволяющая применять различные фильтры и модифицировать видео в ExoPlayer. Библиотека построена на основе MediaCodeс API.

Библиотека позволяет делать:
👉 Поворот видео
👉 Изменять размер видео
👉 Накладывать фильтры (40 различных из коробки)
👉 Убирать аудио
👉 Задавать битрейт
#Push

How to solve missing push notifications in Android

Сталкивались ли вы с проблемой того что на некоторых устройства не доходят push уведомления от Firebase Cloud Messaging? Даже high priority 😞 Это связано с определенными оптимизациями на устройствах от различных производителей:
👉 OnePlus убивает приложения, которые потребляют много CPU ресурсов по мнению системы 😞
👉 Xiaomi по умолчанию не стартует приложения при старте системы и соотвественно к вашему приложению ничего не доходит 😞

Популярные приложения этим не страдают, так как производители по умолчанию добавляют таких мажоров как Facebook, WhatApp и пр. в исключения.

Также помимо оптимизаций производителей есть стандартные оптимизации в Android, направленные на сокращение потребления батарейки, уменьшая частоту прихода push нотификаций

Ребята из команды Flock решили обойти проблемы интересным путем. Они воспользовались XMPP API для пашей, которое позволяет получить результат доставки push клиенту, в отличие от его HTTP коллеги. Как только они определяют что клиент теряет уведомления, они предлагают пользователю внести приложение в список исключений.
#Gradle #Kotlin #DSL

Takeaways from migrating a complex Android project to Gradle Kotlin DSL

Для всех тех кто мечтает перевести Gradle в своих проектах на Kotlin DSL данная статья опечалит вас 😞:
👉 Время сборки значительно увеличивается
👉 DSL сторонних плагинов не адаптированно для использования с Kotlin DSL
👉 Процесс миграции не из простых
👉 Больше кодогенерации требуется, чтобы запустить Gradle сборку
👉 Мало примеров

Также вам стоит обновиться до Gradle 5.X так как там уже стабильное Kotlin DSL
#Podcast #Redex #Proguard

Inside Facebook Mobile‏: Android Bytecode Optimisation with Emma

Я уверен что большинство разработчиков знакомы с ProGuard, но слышали ли вы о решение для оптимизации dex файлов от Facebook - Redex? В подкасте обсуждается о необходимости оптимизации байткода и базовых принципах работы Redex.
#Library #Theme

Dynamic Support - а complete library to build Android apps with a built-in theme engine

Для меня одним из важнейших трендов в текущем развитие приложения является поддержка темной (ночной) темы. Почему? Во первых - это экономия батарейки, в особенности на OLED экранах, также это альтернатива яркому, слепящему цвету, и в принципе наличие выбора - это прекрасно!

Android имеет гибкий API по кастомизации на основе стилей и атрибутов, но есть одно но - вам надо перезапускать Activity, а то и вовсе все приложение 😞.

Библиотека Dynamic Support имеет свой собственный движок тем в приложение и позволяет более гибко менять стилизацию приложения во время его работы, без необходимости перезапуска.
#R8 #Optimizations

R8 Optimization Part 3: Value Assumption

Jake Wharton не снижает обороты и радует нас новой статьей из серии об оптимизациях R8 с кодом. В последней части раскрывается анализ использования переменных.

Оптимизация которые стоит применять в таких случаях довольно логичны:
👉 удаление неиспользуемых переменных
👉 удаление веток кода в которых условия постоянны

В статье вы найдете подробности того, как такой анализ выполняется новым оптимизатором кода от Google, как можно избавиться от кучи кода из AndroidX если ваш minSdk выше 14 (спойлер R8 имеет возможность задания ограничения на возвращаемые значения методов).
#Library #Localisation #OverTheAir

Philology - библиотека облегчающая распространение строк "по воздуху", без необходимости обновления приложения в Google Play.

С помощью механизмы подмены при обращении за строкой по ключу, она позволяет написать вам свой перехватчик, которые будет брать за строку откуда вам угодно: на сервер, в БД или читать из файлика.

Если хотите воспользоваться библиотекой, то сервер вам придется писать самостоятельно 😀, так что решение неоднозначное, потому что упростило только часть на работы на клиентской стороне.