#Android11 #Gradle
Preparing your Gradle build for package visibility in Android 11
В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию
Preparing your Gradle build for package visibility in Android 11
В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию
<queries>
. Поддерживается она только в Android Gradle Plug-in 4.1 выше поэтому без обновления не обойдётсяAndroid Developers Blog
Preparing your Gradle build for package visibility in Android 11
Posted by David Winer , Product Manager One of the central themes for Android 11 has been protecting user privacy. On Android 10 an...
#Android11 #Notifications
People Notification
4 минуты чтения
В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
People Notification
4 минуты чтения
В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
Medium
People notifications
In Android 11, we’re making Android more people-centric and expressive, reimagining the way we have conversations on our phones, and…
#Network
Вышел OkHttp 4.8.0
👉 Работы в направление отказа от зависимости Bouncy Castle в
👉 Улучшения для приложений с большим количеством параллельных запросов
👉 Обновление до Okio 2.7.0
👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier"
👉 Баг фикс
Вышел OkHttp 4.8.0
👉 Работы в направление отказа от зависимости Bouncy Castle в
okhttp-tls
👉 Улучшения для приложений с большим количеством параллельных запросов
👉 Обновление до Okio 2.7.0
👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier"
👉 Баг фикс
GitHub
okhttp/CHANGELOG.md at master · square/okhttp
Square’s meticulous HTTP client for the JVM, Android, and GraalVM. - square/okhttp
#Testing
Юнит-тесты переоценены
Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
Юнит-тесты переоценены
Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
Хабр
Юнит-тесты переоценены
Предлагаем вам перевод поста «Unit Testing is Overrated» от Alex Golub, чтобы подискутировать на тему юнит-тестов. Действительно ли они переоценены, как считает...
#Kotlin #R8 #Reflection
Shrinking Kotlin Libraries and Applications using Kotlin Reflection with R8
В R8 добавлена поддержка работы с Kotlin Metadata. Новый функционал доступен, начиная с Android Gradle Plugin 4.1.0-beta03.
В статье разбирается, что такое Kotlin Metadata и как это работает
Shrinking Kotlin Libraries and Applications using Kotlin Reflection with R8
В R8 добавлена поддержка работы с Kotlin Metadata. Новый функционал доступен, начиная с Android Gradle Plugin 4.1.0-beta03.
В статье разбирается, что такое Kotlin Metadata и как это работает
Medium
Shrinking Kotlin libraries and applications using Kotlin reflection with R8
Co-authored by Morten Krogh-Jespersen and Mads Ager
#Android11
Improving app startup with I/O prefetching
Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)
IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.
Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.
В статье вы найдете множество графиков и подробности работы IORap на устройстве.
Improving app startup with I/O prefetching
Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)
IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.
Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.
В статье вы найдете множество графиков и подробности работы IORap на устройстве.
Medium
Improving app startup with I/O prefetching
In Android 11, we introduced IORap, a new feature which greatly improves application startup times. We have observed that apps start more…
#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! 🔥🔥🔥
Скачать фоны в высоком качестве можно ➡️ здесь