#Java8 #D8 #R8
Support for newer Java language APIs
Android Gradle Plugin 4.0 дал нам возможность вызывать Java API, которые появились в более поздних версиях Android SDK на всех предыдущих.
В статье вы найдете подробности о D8/R8 Java API Desugaring: как работает и какие API теперь стали доступны
Support for newer Java language APIs
Android Gradle Plugin 4.0 дал нам возможность вызывать Java API, которые появились в более поздних версиях Android SDK на всех предыдущих.
В статье вы найдете подробности о D8/R8 Java API Desugaring: как работает и какие API теперь стали доступны
Medium
Support for newer Java language APIs
Imagine developing an app where you need to deal with time calculations. After some googling, you’ll most likely end up finding great…
#IDEA
Shared Indexes Plugin Unveiled
Одной из проблем при подключении к уже существующему проекту является индексация кода. Это необходимо для навигации и ускорения работы. На маленьких проектах это практически не заметно, но индексация большого проекта с несколькими сотнями тысяч строк кода может занять очень много времени.
Для решения этой проблемы JetBrains представили новый плагин, который позволяет делиться частью индексации большого проекта.
Shared Indexes Plugin Unveiled
Одной из проблем при подключении к уже существующему проекту является индексация кода. Это необходимо для навигации и ускорения работы. На маленьких проектах это практически не заметно, но индексация большого проекта с несколькими сотнями тысяч строк кода может занять очень много времени.
Для решения этой проблемы JetBrains представили новый плагин, который позволяет делиться частью индексации большого проекта.
The JetBrains Blog
Shared Indexes Plugin Unveiled | The IntelliJ IDEA Blog
Indexing is one of the key features under the hood of IntelliJ IDEA. It is designed to simplify your work by teaching the IDE the ins and outs of your code even before you start applying any changes.
#Coroutines
Вышла kotlinx.coroutines 1.3.8
Вышла новая версия Coroutine которая по большей части исправила баги. Появился новый оператор
Вышла kotlinx.coroutines 1.3.8
Вышла новая версия Coroutine которая по большей части исправила баги. Появился новый оператор
Flow.transformWhile
GitHub
kotlinx.coroutines/CHANGES.md at master · Kotlin/kotlinx.coroutines
Library support for Kotlin coroutines . Contribute to Kotlin/kotlinx.coroutines development by creating an account on GitHub.
#Kotlin #DefaultMethod
Kotlin 1.4-M3: Generating Default Methods in Interfaces
В Kotlin 1.4 появится новый режим компилятора для default методов в интерфейсах с Java 8 Target. Вместо генерации отдельного класса со статическими методами, Kotlin компилятор сможет генерировать сразу Java 8 байткод, причем аннотация
Kotlin 1.4-M3: Generating Default Methods in Interfaces
В Kotlin 1.4 появится новый режим компилятора для default методов в интерфейсах с Java 8 Target. Вместо генерации отдельного класса со статическими методами, Kotlin компилятор сможет генерировать сразу Java 8 байткод, причем аннотация
JvmDefault
больше не понадобится.The JetBrains Blog
Kotlin 1.4-M3: Generating Default Methods in Interfaces | The Kotlin Blog
In Kotlin 1.4, we’re adding new experimental ways for generating default methods in interfaces in the bytecode for the Java 8 target. Later, we’re going to be deprecating the @JvmDefault annotation in
#LiveData #Corotines #Flow
LiveData with Coroutines and Flow
Серия статей от гуглера о реактивном UI на основе Coroutine Flow. В серии статей рассказывается о:
👉 Реактивном UI
👉 Scope выполнения операций
👉 Почему Kotlin Coroutine хорошо подходят для решения асинхронных UI задач
👉 Интеграция Coroutines и Arch Components
👉 Отмена выполнения Coroutine
👉 Подходы для работы с
LiveData with Coroutines and Flow
Серия статей от гуглера о реактивном UI на основе Coroutine Flow. В серии статей рассказывается о:
👉 Реактивном UI
👉 Scope выполнения операций
👉 Почему Kotlin Coroutine хорошо подходят для решения асинхронных UI задач
👉 Интеграция Coroutines и Arch Components
👉 Отмена выполнения Coroutine
👉 Подходы для работы с
LiveData
и Coroutine
в ViewModel
Medium
LiveData with Coroutines and Flow — Part I: Reactive UIs
This article is a summary of the talk I gave with Yigit Boyar at the Android Dev Summit 2019.
#Architecture
Keep your interfaces simple
Написание интерфейсов с хорошим API может быть сложной задачей. Иногда для более удобного взаимодействия с интерфейсом хочется добавить метод, который имеет более удобное API, чем имеющийся, но при этом выполняющий схожие действия. Добавление такого метода привносит неявный контракт для всех классов, имплементирующих этот интерфейс.
Одним из решений может стать реализация метода по умолчанию, однако такой подход не будет работать при мокировании объекта в тестах. Автор статьи предлагает использовать extension функции для таких случаев и объясняет преимущества такого подхода.
Keep your interfaces simple
Написание интерфейсов с хорошим API может быть сложной задачей. Иногда для более удобного взаимодействия с интерфейсом хочется добавить метод, который имеет более удобное API, чем имеющийся, но при этом выполняющий схожие действия. Добавление такого метода привносит неявный контракт для всех классов, имплементирующих этот интерфейс.
Одним из решений может стать реализация метода по умолчанию, однако такой подход не будет работать при мокировании объекта в тестах. Автор статьи предлагает использовать extension функции для таких случаев и объясняет преимущества такого подхода.
Medium
Keep your interfaces simple
Avoiding implicit connections and learn how extension functions can help you writing good APIs
#RxJava
Что нового в RxJava 3
Весной вышла в свет новая версия реактивного фреймворка RxJava. Она не привнесла кардинальных изменений и в основном содержит исправление багов. В статье автор описывает что нового мы получили в этой мажорной версии:
👉 Поддержка Java 8
👉 Поддержка
👉 Убрана поддержка
👉 По заверениям разработчиков теперь не будут теряться ошибки
👉 Функция reset для "горячих"
👉 Возможность ставить Flowable на паузу
👉 Новый тип -
Так же автор даёт рекомендации по миграции на новую версию. Более подробно можно ознакомиться в статье.
Что нового в RxJava 3
Весной вышла в свет новая версия реактивного фреймворка RxJava. Она не привнесла кардинальных изменений и в основном содержит исправление багов. В статье автор описывает что нового мы получили в этой мажорной версии:
👉 Поддержка Java 8
👉 Поддержка
Streams
и CompletabeFuture
👉 Убрана поддержка
java.time.Duration
и java.util.function
👉 По заверениям разработчиков теперь не будут теряться ошибки
👉 Функция reset для "горячих"
Observable
👉 Возможность ставить Flowable на паузу
👉 Новый тип -
Supplier
– аналог Callable
, но с throws Throwable
Так же автор даёт рекомендации по миграции на новую версию. Более подробно можно ознакомиться в статье.
Хабр
Что нового в RxJava 3
Весной 2020 года вышла свежая версия фреймворка RxJava – RxJava 3. Давайте рассмотрим, в чем заключаются основные изменения, как можно перейти с RxJava 2 на нову...
#Performance
Зачем инженерам тратить время на перформанс
В статье рассказывается как важно уделять внимание производительность, как замерить эффект плохой производительность, а когда слишком быстрая работа сервиса может вызвать подозрения у пользователя. Своим опытом делится инженер компании Авито
Зачем инженерам тратить время на перформанс
В статье рассказывается как важно уделять внимание производительность, как замерить эффект плохой производительность, а когда слишком быстрая работа сервиса может вызвать подозрения у пользователя. Своим опытом делится инженер компании Авито
Хабр
Зачем инженерам тратить время на перформанс
Привет, меня зовут Михаил Юдин, я Android-инженер в Авито. Хочу рассказать, в чём польза перформанса и как начать внедрять его в продукте. Осенью 2018 года у нас...
#SQLite #Security #Room
Securing a Room Database With Passcode-Based Encryption
Обеспечение безопасности данных пользователя важно для любого приложения. Если в вашем приложении есть экран с кодом, значит пользователю есть что защищать. Поэтому берите ключ, который вводит пользователь и шифруйте им данные пользователя.
В статье вы найдёте как шифровать базу данный SQLite, и в случае когда у вас используется Room.
Securing a Room Database With Passcode-Based Encryption
Обеспечение безопасности данных пользователя важно для любого приложения. Если в вашем приложении есть экран с кодом, значит пользователю есть что защищать. Поэтому берите ключ, который вводит пользователь и шифруйте им данные пользователя.
В статье вы найдёте как шифровать базу данный SQLite, и в случае когда у вас используется Room.
Medium
Securing a Room Database With Passcode Based Encryption
Using available Java APIs
#Performance
Android Vitals - What time is it?
Для того чтобы получить время в Android существует 2 основных класса: System и SystemClock. В статье разбираются чем отличаются способу получения времени в этих классах и производится сравнение производительности (SystemClock работает практически в 2 раза быстрее)
Android Vitals - What time is it?
Для того чтобы получить время в Android существует 2 основных класса: System и SystemClock. В статье разбираются чем отличаются способу получения времени в этих классах и производится сравнение производительности (SystemClock работает практически в 2 раза быстрее)
DEV Community
Android Vitals - What time is it?
Note: the pretty header photo is from Romain Guy. Yesterday I had an idea:...
#Gradle #Performance
Optimize the build speed for your Android project
Извечная тема - Gradle и скорость сборки. Очередная статья которая напоминает что сделать, чтобы не проводить много времени ожидая сборки проекта.
Что стоит добавить в
👉
👉
👉
👉
👉
👉
А еще советы:
👉 Отключить
👉 Отключить загрузку Firebase mapping где не нужно
Optimize the build speed for your Android project
Извечная тема - Gradle и скорость сборки. Очередная статья которая напоминает что сделать, чтобы не проводить много времени ожидая сборки проекта.
Что стоит добавить в
gradle.properties
👉
org.gradle.configureondemand=true
👉
kapt.use.worker.api = true
👉
org.gradle.parallel=true
👉
org.gradle.caching=true
👉
room.incremental = true
👉
org.gradle.unsafe.watch-fs=true
А еще советы:
👉 Отключить
crunchPngs
👉 Отключить загрузку Firebase mapping где не нужно
#AndroidBroadcast
Android Broadcast совместно с Avito.tech разработали стикерпак. Заветы Джейка, RxJava, Kotlin, Jetpack. Все это можно найти в стикерах.
Android Broadcast совместно с Avito.tech разработали стикерпак. Заветы Джейка, RxJava, Kotlin, Jetpack. Все это можно найти в стикерах.
#AndroidBroadcast
Помимо всего еще появились и интересные Zoom фоны от Android Broadcast! 🔥🔥🔥
Скачать фоны в высоком качестве можно ➡️ здесь
Помимо всего еще появились и интересные Zoom фоны от Android Broadcast! 🔥🔥🔥
Скачать фоны в высоком качестве можно ➡️ здесь
#Gradle #Performance
The proper care and feeding of your Gradle build
В дополнение к вчерашнему посту об оптимизации Gradle сборки Android проектов рекомендую еще уделить внимание и анализу зависимостей и плагинов вашего проекта.
В статье разбирается Dependency Analysis Gradle Plugin. Плагин поможет понять вам:
👉 Есть ли у вас в проекте неиспользуемые зависимости
👉 Если ли у вас неиспользуемые процессоры аннотаций
👉 Правильно ли вы объявляете зависимости
👉 Используете ли вы транзитивные зависимости, которые лучше объявить явно
👉 Все ли плагины используются?
The proper care and feeding of your Gradle build
В дополнение к вчерашнему посту об оптимизации Gradle сборки Android проектов рекомендую еще уделить внимание и анализу зависимостей и плагинов вашего проекта.
В статье разбирается Dependency Analysis Gradle Plugin. Плагин поможет понять вам:
👉 Есть ли у вас в проекте неиспользуемые зависимости
👉 Если ли у вас неиспользуемые процессоры аннотаций
👉 Правильно ли вы объявляете зависимости
👉 Используете ли вы транзитивные зависимости, которые лучше объявить явно
👉 Все ли плагины используются?
DEV Community
The proper care and feeding of your Gradle build
Maintain a healthy build with the Dependency Analysis Gradle Plugin. Optimize your dependency graph and remove redundant plugins.
#Dagger #Hilt #DependencyInjection
Scoping in Android and Hilt
В Dagger мы привыкли работать с Subcomponent и делать разные Scope, для того чтобы управлять жизнью отдельных объектов графа. В Hilt нас ждут перемены работы с графом и это задело Scope тоже
В статье происходит разбор того как создать Scope для ViewModel при использовании Hilt
Scoping in Android and Hilt
В Dagger мы привыкли работать с Subcomponent и делать разные Scope, для того чтобы управлять жизнью отдельных объектов графа. В Hilt нас ждут перемены работы с графом и это задело Scope тоже
В статье происходит разбор того как создать Scope для ViewModel при использовании Hilt
Medium
Scoping in Android and Hilt
Scoping an object A to another object B means that throughout the lifecycle of B, it’ll always have the same instance of A. When it comes…
#Kotlin #Native
Kotlin/Native Memory Management Roadmap
В Kotlin/Native изменится модель управления памятью, чтобы избавиться от ограничений, которые сейчас накладываются на параллельное программирование. Изменения пока еще находятся на стадии проектирования и текущая модель останется работать.
Kotlin/Native Memory Management Roadmap
В Kotlin/Native изменится модель управления памятью, чтобы избавиться от ограничений, которые сейчас накладываются на параллельное программирование. Изменения пока еще находятся на стадии проектирования и текущая модель останется работать.
The JetBrains Blog
Kotlin/Native Memory Management Roadmap | The Kotlin Blog
TL;DR: The current automatic memory management implementation in Kotlin/Native has limitations when it comes to concurrency and we are working on a replacement. Existing code will continue to work and
Как правильно назвать того, кто разрабатывает приложения под Android?
Final Results
74%
Android разработчик
13%
Разработчик под Android
6%
Android инженер
0%
Другой вариант (пищите в @android_broadcast_talks)
6%
Не участвую
#BatteryOptimization #OEM
The Bifurcation Of Android
Производителя устройств творят что угодно при разработке собственных прошивок. Нет Android разработчика, который не столкнулся с тем что стандартное поведение Android расходится с реализацией производителя.
В особенности приходится страдать из-за агрессивного убийства процессов в фоне, правда это справедливо не для всех. Часть предустановленных приложений или тех кто смог договориться попадают в white list. Как быть простому разработчику?
В статье вы найдете историю борьбы разработчика с производителем устройств и что Google предпринимает для того, чтобы приструнить создателей смартфонов
The Bifurcation Of Android
Производителя устройств творят что угодно при разработке собственных прошивок. Нет Android разработчика, который не столкнулся с тем что стандартное поведение Android расходится с реализацией производителя.
В особенности приходится страдать из-за агрессивного убийства процессов в фоне, правда это справедливо не для всех. Часть предустановленных приложений или тех кто смог договориться попадают в white list. Как быть простому разработчику?
В статье вы найдете историю борьбы разработчика с производителем устройств и что Google предпринимает для того, чтобы приструнить создателей смартфонов
Medium
The Bifurcation Of Android
How the emergence of a dual-class app permission structure is handicapping developers in Africa
#Dagger #Hilt #Migration
Migrating the Google I/O app to Hilt
Google перевела приложение Google I/O на Hilt и результаты впечатляющие - убрали 1500 строк кода. Миграцию выполняли с
Migrating the Google I/O app to Hilt
Google перевела приложение Google I/O на Hilt и результаты впечатляющие - убрали 1500 строк кода. Миграцию выполняли с
dagger.android
. Тем кто готов уже пробовать альфу - можете использовать как гайд, а исходники приложения как примерMedium
Migrating the Google I/O app to Hilt
Hilt is the new library built on top of Dagger that simplifies Dependency Injection (DI) in Android apps. But, how much does it simplify…