#LibUpdates #ButterKnife #JakeWharton
ButterKnife 10.1.0 was released
Вышло обновление ButterKnife 10.1.0. Что нового:
👉 Слушатель для OnLongClickListener больше не требует возвращения
👉 Добавлена поддержка @OnTextChanged и @OnPageChange в
👉 Улучшения в
ButterKnife 10.1.0 was released
Вышло обновление ButterKnife 10.1.0. Что нового:
👉 Слушатель для OnLongClickListener больше не требует возвращения
boolean
и может возвращать void
👉 Добавлена поддержка @OnTextChanged и @OnPageChange в
butterknife-reflect
👉 Улучшения в
butterknife-reflect
GitHub
butterknife/CHANGELOG.md at master · JakeWharton/butterknife
Bind Android views and callbacks to fields and methods. - butterknife/CHANGELOG.md at master · JakeWharton/butterknife
#ThreeTen #Backport #JakeWharton
ThreeTenABP 1.1.2
Вышло очередное обновление ThreeTenABP - обертка библиотеки ThreeTen бекпорта Java 8 Data/Time API. Релиз обновил базу данных по временным зонам и обновил базируемую версию ThreeTen до 1.3.8
ThreeTenABP 1.1.2
Вышло очередное обновление ThreeTenABP - обертка библиотеки ThreeTen бекпорта Java 8 Data/Time API. Релиз обновил базу данных по временным зонам и обновил базируемую версию ThreeTen до 1.3.8
GitHub
Release 1.1.2 · JakeWharton/ThreeTenABP
Version 1.1.2
#JakeWharton #R8 #Optimizations
R8 Optimization: Class Constant Operations
Продолжение серии статей о оптимизация кода, которые реализованы в R8 от Jake Wharton. В новой статье рассказывается о оптимизации констант классов.
Рассмотрим частый пример классов в константах:
Такие константы очень часто используются для логирования. Если рассмотреть после компиляции кода, то
R8 получила такую оптимизацию кода и теперь неважно как вы будете создать
Android Studio 3.4 уже на подходе и R8 становится инструментом по умолчанию для оптимизации кода в ней.
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 становится инструментом по умолчанию для оптимизации кода в ней.
Jake Wharton
R8 Optimization: Class Constant Operations – Jake Wharton
#LibUpdate #JakeWharton
ThreeTebABP 1.2.0
Вышел новый релиз библиотеки ThreeTebABP, который добавил возможность загружать базу данных часовых поясов, расположенных в asset-ах
ThreeTebABP 1.2.0
Вышел новый релиз библиотеки ThreeTebABP, который добавил возможность загружать базу данных часовых поясов, расположенных в asset-ах
GitHub
ThreeTenABP/CHANGELOG.md at trunk · JakeWharton/ThreeTenABP
An adaptation of the JSR-310 backport for Android. - JakeWharton/ThreeTenABP
#Retrofit #Coroutines #UnderTheHood #JakeWharton
Exceptions and proxies and coroutines, oh my!
В Retrofit 2.6.0 была добавлена поддержка Kotlin Coroutine - функции в интерфейсе Retrofit можно помечать ключевым словом
. Что стоит за этой реализацией? Какие образом Java Dynamic Proxy может работать с Coroutine? В своей статье Jake делает разбор
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 и выше
Вышел Butter Knife 10.2.0
Вышла новая версия библиотеки Butter Knife, в которой реализована поддержка инкрементального процессинга аннотаций, а также теперь поддерживается только Android Gradle Plugin версии 3.3 и выше
GitHub
butterknife/CHANGELOG.md at master · JakeWharton/butterknife
Bind Android views and callbacks to fields and methods. - butterknife/CHANGELOG.md at master · JakeWharton/butterknife
#JakeWharton #ViewBinding
Важная новость которую я пропустил в посте и Butter Knife 10.2.0 - Jake рекомендует мигрировать на View Binding т.к. разработка Butter Knife останавливается
Важная новость которую я пропустил в посте и Butter Knife 10.2.0 - Jake рекомендует мигрировать на View Binding т.к. разработка Butter Knife останавливается
#R8 #Optimization #jakeWharton
R8 Optimization: Class Reflection and Forced Inlining
В новой серии статей Jake Wharton рассказывает о том как R8 умеет оптимизировать некоторые вызовы рефлексии и принудительный inline методов с помощью
Бойся ProGuard - R8 все качает мышцы и наращивает фичи
R8 Optimization: Class Reflection and Forced Inlining
В новой серии статей Jake Wharton рассказывает о том как R8 умеет оптимизировать некоторые вызовы рефлексии и принудительный inline методов с помощью
-alwaysinline
.Бойся ProGuard - R8 все качает мышцы и наращивает фичи
Jake Wharton
R8 Optimization: Class Reflection and Forced Inlining – Jake Wharton
#R8 #JakeWharton #Optimization
R8 Optimization: Enum Ordinals and Names
Продолжение серии статей об оптимизациях, который выполняют R8. В этот раз разбираются Enum:
👉 inline вызовов функции ordinal()
👉 замена вызова функции name() на соответствующую строковую константу
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
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 в
Wormhole
Модификатор байткода, который добавляет будущие API в
android.jar
, которые могут работать на все версиях Android с использованием D8 и R8GitHub
GitHub - JakeWharton/wormhole: A time-traveling bytecode rewriter which adds future APIs to android.jar
A time-traveling bytecode rewriter which adds future APIs to android.jar - JakeWharton/wormhole
#JakeWharton
Which is better on Android: divide by 2 or shift by 1?
Сравнение оптимизации деления и умножения на 2 с использованием битовых операций
Итоги расследования (цитирую):
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
R8 Optimization: Lambda Groups
Разбор как оптимизируются лямбда выражения в Java и Kotlin с помощью R8
#Tooling #JakeWharton
Dependency Tree Diff
Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
Dependency Tree Diff
Утилита для вычисления разницы между выводом Gradle таска `dependencies`. Будет полезно, чтобы делать анализ и визуализировать что менялось между коммитами. Также упростит отслеживание транзитивных зависимостей.
#Tooling #JakeWharton
Diffuse - утилита для определения изменения размера APK, AAB, AAR и JAR файлов, которая по категориям файлов в архивах показывает детали.
Diffuse - утилита для определения изменения размера APK, AAB, AAR и JAR файлов, которая по категориям файлов в архивах показывает детали.