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

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

РКН https://abdev.by/rkn_tg_ab
Download Telegram
#LibUpdates #ButterKnife #JakeWharton

ButterKnife 10.1.0 was released

Вышло обновление ButterKnife 10.1.0. Что нового:
👉 Слушатель для OnLongClickListener больше не требует возвращения boolean и может возвращать void
👉 Добавлена поддержка @OnTextChanged и @OnPageChange в butterknife-reflect
👉 Улучшения в butterknife-reflect
#ThreeTen #Backport #JakeWharton

ThreeTenABP 1.1.2

Вышло очередное обновление ThreeTenABP - обертка библиотеки ThreeTen бекпорта Java 8 Data/Time API. Релиз обновил базу данных по временным зонам и обновил базируемую версию ThreeTen до 1.3.8
#JakeWharton #R8 #Optimizations

R8 Optimization: Class Constant Operations

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

Рассмотрим частый пример классов в константах:
private static final String TAG = "MyClass";
// or
private static final String TAG =
MyClass.class.getSimpleName();

Такие константы очень часто используются для логирования. Если рассмотреть после компиляции кода, то MyClass.class.getSimpleName() всегда будет возвращать одно и тоже значение - "MyClass". Фактически в оптимизированном байткоде можно делать подмену выполнения метода на простую строку. Важно понимать что это не работает для случая getClass().getSimpleName(), т.е. когда класс получается динамически.

R8 получила такую оптимизацию кода и теперь неважно как вы будете создать LOG_TAG для ваших логов 🎉

Android Studio 3.4 уже на подходе и R8 становится инструментом по умолчанию для оптимизации кода в ней.
#LibUpdate #JakeWharton

ThreeTebABP 1.2.0

Вышел новый релиз библиотеки ThreeTebABP, который добавил возможность загружать базу данных часовых поясов, расположенных в asset-ах
#Retrofit #Coroutines #UnderTheHood #JakeWharton

Exceptions and proxies and coroutines, oh my!

В Retrofit 2.6.0 была добавлена поддержка Kotlin Coroutine - функции в интерфейсе Retrofit можно помечать ключевым словом
suspend
. Что стоит за этой реализацией? Какие образом Java Dynamic Proxy может работать с Coroutine? В своей статье Jake делает разбор
#JakeWharton

Вышел Butter Knife 10.2.0

Вышла новая версия библиотеки Butter Knife, в которой реализована поддержка инкрементального процессинга аннотаций, а также теперь поддерживается только Android Gradle Plugin версии 3.3 и выше
#JakeWharton #ViewBinding

Важная новость которую я пропустил в посте и Butter Knife 10.2.0 - Jake рекомендует мигрировать на View Binding т.к. разработка Butter Knife останавливается
#R8 #Optimization #jakeWharton

R8 Optimization: Class Reflection and Forced Inlining

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

Бойся ProGuard - R8 все качает мышцы и наращивает фичи
#R8 #JakeWharton #Optimization

R8 Optimization: Enum Ordinals and Names

Продолжение серии статей об оптимизациях, который выполняют R8. В этот раз разбираются Enum:
👉 inline вызовов функции ordinal()
👉 замена вызова функции name() на соответствующую строковую константу
#Java #D8 #Desugarung #JakeWharton

D8 Library Desugaring

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

Есть одно "НО" - проблема не решена для Java API. Android разработчики стали чувствовать проблему меньше с приходом Kotlin, но все же в JDK есть интересные API:
👉 Java 8 Stream Collection (API 24)
👉 Java 8 Date Time (API 26)
👉 Optional (API 24)
👉 CompletableFuture (API 24)
Использовать в большинстве приложений не получится т.к. наиболее распространенные minSdk - это 21 или 23.

В Android Studio 4.0 (а точнее в Android Gradle Plugin и D8) была добавлена новая возможность “core library desugaring”, которая позволяет делать бэкпорт этих API, а также новых методов, появившиеся в других API (более подробный список здесь) и исправлять баги в Java API на старых версиях Android.

В своей статье Jake разбирается как устроена новая фича в D8
#Android #Java10 #JakeWharton

Wormhole

Модификатор байткода, который добавляет будущие API в android.jar, которые могут работать на все версиях Android с использованием D8 и R8
#JakeWharton

Which is better on Android: divide by 2 or shift by 1?

Сравнение оптимизации деления и умножения на 2 с использованием битовых операций

Итоги расследования (цитирую):
With this we can now definitely say that replacing value / 2 with value >> 1 offers no benefit
#R8 #JakeWharton

R8 Optimization: Lambda Groups

Разбор как оптимизируются лямбда выражения в Java и Kotlin с помощью R8
​​#Tooling #JakeWharton

Dependency Tree Diff

Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
​​#Tooling #JakeWharton

Diffuse - утилита для определения изменения размера APK, AAB, AAR и JAR файлов, которая по категориям файлов в архивах показывает детали.