#Java #Java14
Java 14: записи (records preview)
Android разработка уже переехала на рельсы Kotlin (своей основной массой), но под капотом все равно старая добрая Java и про нее забывать не стоит.
В статье разбирается новая возможность в Java 14 records, которая направлена на упрощение синтаксиса языка. Фактически
Java 14: записи (records preview)
Android разработка уже переехала на рельсы Kotlin (своей основной массой), но под капотом все равно старая добрая Java и про нее забывать не стоит.
В статье разбирается новая возможность в Java 14 records, которая направлена на упрощение синтаксиса языка. Фактически
record
- это аналоги data класса из Kotlin.Хабр
Java 14: записи (records preview)
В скором времени в грядущей Java 14 появится новая синтаксическая фича — записи (records). После изучения превью, в котором вкратце описано, как выглядят записи...
#Gradle #AnnotationProcessing #Performance
Инкрементальный annotation processing для ускорения gradle-сборок
Практически всем в Android разработке приходится сталкиваться с процессингом аннотаций, а в частности kapt. Чтобы этот процесс происходил быстрее нужно выполнение инкрементальной компиляции, т.е. компилировать только необходимый код, а не весь полностью. Эти возможности появились в Gradle 4.7 и Kotlin 1.3.30.
В статье рассматривается теория и эффект от применения этих нововведений подробно:
👉 Как работает инкрементальная компиляция
👉 Инкрементальный annotation processing
👉 Категории процессоров аннотаций
👉 Опыт внедрения incremental annotation processing в hh.ru
👉 Профайлинг инкрементальных сборок
👉 Результаты бенчмарков
👉 Анатомия сборки в Gradle Build Scan
👉 Incremental vs parallel
Инкрементальный annotation processing для ускорения gradle-сборок
Практически всем в Android разработке приходится сталкиваться с процессингом аннотаций, а в частности kapt. Чтобы этот процесс происходил быстрее нужно выполнение инкрементальной компиляции, т.е. компилировать только необходимый код, а не весь полностью. Эти возможности появились в Gradle 4.7 и Kotlin 1.3.30.
В статье рассматривается теория и эффект от применения этих нововведений подробно:
👉 Как работает инкрементальная компиляция
👉 Инкрементальный annotation processing
👉 Категории процессоров аннотаций
👉 Опыт внедрения incremental annotation processing в hh.ru
👉 Профайлинг инкрементальных сборок
👉 Результаты бенчмарков
👉 Анатомия сборки в Gradle Build Scan
👉 Incremental vs parallel
Хабр
Инкрементальный annotation proccesing для ускорения gradle-сборок
Начиная с версий Gradle 4.7 и Kotlin 1.3.30 появилась возможность получить ускорение инкрементальной сборки проектов за счет корректной работы инкрементальной о...
#Analytics #Firebase
Google Analytics vs. Firebase Analytics vs. Google Analytics
У Google слишком много аналитик:
👉 Google Analytics Classic
👉 Google Analytics for Mobile (deprecated)
👉 Google Analytics 360
👉 Firebase Analytics
👉 Google Analytics for Firebase
В чем разница? Зачем постоянные обновления в названиях? Что из этого стоит использовать в современных Android приложениях? Ответы в статье
Google Analytics vs. Firebase Analytics vs. Google Analytics
У Google слишком много аналитик:
👉 Google Analytics Classic
👉 Google Analytics for Mobile (deprecated)
👉 Google Analytics 360
👉 Firebase Analytics
👉 Google Analytics for Firebase
В чем разница? Зачем постоянные обновления в названиях? Что из этого стоит использовать в современных Android приложениях? Ответы в статье
Medium
Google Analytics vs. Firebase Analytics vs. Google Analytics
A Guide for the Slightly Confused
Команда языка Kotlin запустили новый опрос, чтобы вы поделились своим опытом использования языка. Что вам нравится? Что нет? Что вызывает сложности? На все это можно ответить в опросе.
Также вы сможете выиграть призы:
🔥 3 билета на KotlinConf 2020
🔥 20 маек с символикой Kotlin
Также вы сможете выиграть призы:
🔥 3 билета на KotlinConf 2020
🔥 20 маек с символикой Kotlin
#Новости #Podcast #Kotlin #Multiplatform
Если у вас есть вопросы по Kotlin Multiplatform Mobile - спешите задать их в @android_broadcast_discussions, ведь совсем скоро я буду записывать эпизод "Android Broadcast Podcast" c представителями команды из JetBrains: Анастасией Капаниной (Product Manager Kotlin MPP) и Кириллом Шмаковым (разработчик в Kotlin MPP).
Если у вас есть вопросы по Kotlin Multiplatform Mobile - спешите задать их в @android_broadcast_discussions, ведь совсем скоро я буду записывать эпизод "Android Broadcast Podcast" c представителями команды из JetBrains: Анастасией Капаниной (Product Manager Kotlin MPP) и Кириллом Шмаковым (разработчик в Kotlin MPP).
#Podcast #Kotlin #Multiplatform
Android Broadcast #3: Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock
В ожидании выпуска вы можете послушать другие эпизоды. Например, интересующимся Kotlin MPP подойдет выпуск об опыте разработчиков из компании IceRock о адаптации этой технологии для Android и iOS проектов. Ребята разработали более 10 проектов с ее использованием и говорят уже на реальном опыте применения в production.
Android Broadcast #3: Kotlin Multiplatform - выходим за рамки Kotlin/Android c IceRock
В ожидании выпуска вы можете послушать другие эпизоды. Например, интересующимся Kotlin MPP подойдет выпуск об опыте разработчиков из компании IceRock о адаптации этой технологии для Android и iOS проектов. Ребята разработали более 10 проектов с ее использованием и говорят уже на реальном опыте применения в production.
#Kotlin
Zero-cost* abstractions in Kotlin
Очень часто приходится сталкиваться в коде с тем, что в виде чисел могут представляться разные по смыслу переменные. Лучший пример - идентификаторы ресурсов в Android. Все это выражается цифрами и передать неправильное значение довольно легко.
Google дала нам решение в виде xxxRes, IntDef, IntRange и др. аннотаций над типами, но это не позволяет избавиться от ошибки во время компиляции.
Как же это решать? Оборачивать все в отдельные классы? Это доп. расход памяти и всех нас учили использовать Java примитивы в предпочтение типам оберткам.
В Kotlin предложили свое решение - inline классы, которые во время компиляции встраивают обернутый объект в место вызова. В статье вы найдет больше подробностей об это возможности языка Kotlin и когда компилятор не может развернуть тип
Zero-cost* abstractions in Kotlin
Очень часто приходится сталкиваться в коде с тем, что в виде чисел могут представляться разные по смыслу переменные. Лучший пример - идентификаторы ресурсов в Android. Все это выражается цифрами и передать неправильное значение довольно легко.
Google дала нам решение в виде xxxRes, IntDef, IntRange и др. аннотаций над типами, но это не позволяет избавиться от ошибки во время компиляции.
Как же это решать? Оборачивать все в отдельные классы? Это доп. расход памяти и всех нас учили использовать Java примитивы в предпочтение типам оберткам.
В Kotlin предложили свое решение - inline классы, которые во время компиляции встраивают обернутый объект в место вызова. В статье вы найдет больше подробностей об это возможности языка Kotlin и когда компилятор не может развернуть тип
Medium
Zero-cost* abstractions in Kotlin
Kotlin Vocabulary: inline classes
#JUnit #Test
Вышла новая версия JUnit 5.6.0
Основные изменения:
👉 Новый
👉 Новое API
👉 Улучшение отчетов для крэшей во время поиска/выполнения тестов
👉 Модуляризация Javadoc
Множество других улучшений который вы можете найти в полном описание изменений
Вышла новая версия JUnit 5.6.0
Основные изменения:
👉 Новый
@Enabled
/@DisabledForJreRange
условия для выполнения теста👉 Новое API
TestInstancePreDestroyCallback
для расширений👉 Улучшение отчетов для крэшей во время поиска/выполнения тестов
👉 Модуляризация Javadoc
Множество других улучшений который вы можете найти в полном описание изменений
Какую версию JUnit используете вы?
JUnit 5 (Spek 2 здесь) - 33
👍👍👍 13%
JUnit 4 - 115
👍👍👍👍👍👍👍👍 47%
Не пишу тесты - 83
👍👍👍👍👍👍 34%
Не знаю - 5
👍 2%
Использую другой тестовый framework - 3
👍 1%
Секрет. Но результаты посмотрю - 7
👍 3%
👥 246 человек уже проголосовало.
JUnit 5 (Spek 2 здесь) - 33
👍👍👍 13%
JUnit 4 - 115
👍👍👍👍👍👍👍👍 47%
Не пишу тесты - 83
👍👍👍👍👍👍 34%
Не знаю - 5
👍 2%
Использую другой тестовый framework - 3
👍 1%
Секрет. Но результаты посмотрю - 7
👍 3%
👥 246 человек уже проголосовало.
#Gradle #CI #Performance
How fast are your Android CI builds? And why it matters
Android проекты растут и разрабатываются долгое время большими командами. Все разработчики локально страдают от того как собираются долго проекты, но на CI это делается еще дольше так как обычно ему надо сделать:
👉 Скомпилировать код
👉 Прогнать Unit тесты
👉 Запустить статический анализатор KtLint, Detekt, Checkstyle, Android Lint и др.
Все это еще происходит медленнее чем на локальной машине т.к. на сервере выключается Gradle демон, который не имеет смысла на CI, когда собирается много разных ветках или вовсе все в Docker контейнерах.
В статье приводится история ребят, которые вместе с DevOps сели решить проблему долгой сборки проекта (47 минут) и как у них получилось (8 минут)
От себя рекомендую периодически запускать Gradle Build Scan, чтобы проверить где у вас есть проблемные места в сборке.
How fast are your Android CI builds? And why it matters
Android проекты растут и разрабатываются долгое время большими командами. Все разработчики локально страдают от того как собираются долго проекты, но на CI это делается еще дольше так как обычно ему надо сделать:
👉 Скомпилировать код
👉 Прогнать Unit тесты
👉 Запустить статический анализатор KtLint, Detekt, Checkstyle, Android Lint и др.
Все это еще происходит медленнее чем на локальной машине т.к. на сервере выключается Gradle демон, который не имеет смысла на CI, когда собирается много разных ветках или вовсе все в Docker контейнерах.
В статье приводится история ребят, которые вместе с DevOps сели решить проблему долгой сборки проекта (47 минут) и как у них получилось (8 минут)
От себя рекомендую периодически запускать Gradle Build Scan, чтобы проверить где у вас есть проблемные места в сборке.
Medium
How fast are your Android CI builds? And why it matters.
Over time our Android CI builds gradually got slower and slower and before we knew it our CI build times were taking 47 minutes and…
#Kotlin #DSL #Builder
Builder Pattern vs Kotlin DSL
Когда у класса в конструкторе много параметров, хорошим тоном является использовать паттерн Builder. Но Kotlin может предложить более интересную альтернативу - Kotlin DSL.
В статье разбирается как заменить старый подход новым.
Builder Pattern vs Kotlin DSL
Когда у класса в конструкторе много параметров, хорошим тоном является использовать паттерн Builder. Но Kotlin может предложить более интересную альтернативу - Kotlin DSL.
В статье разбирается как заменить старый подход новым.
Medium
Builder Pattern vs kotlin DSL
Creating complex objects using Builder pattern vs Kotlin DSL. We’ll see which one is compact, more readable etc…
Починить, хакнуть, раскопать. Решаем онлайн-квест Droid Mission
В прошлом году Яндекс провел квест для мобильных разработчиков Droid Mission. После подведения итогов можно ознакомиться с решениями задач.
Тематика их абсолютно разная: SQLite, Android SDK, утечки памяти, Java, Android NDK, Dagger, Reverse Engineering и взлом приложений
В прошлом году Яндекс провел квест для мобильных разработчиков Droid Mission. После подведения итогов можно ознакомиться с решениями задач.
Тематика их абсолютно разная: SQLite, Android SDK, утечки памяти, Java, Android NDK, Dagger, Reverse Engineering и взлом приложений
Хабр
Починить, хакнуть, раскопать. Решаем онлайн-квест Droid Mission
В прошлом году мы провели онлайн-квест для мобильных разработчиков — Droid Mission. В течение месяца участники должны были решить как можно больше задач в трёх...
#Dagger
Dagger Browser - простая утилита для навигации по сгенерированному Dagger графу с помощью SPI плагина
Dagger Browser - простая утилита для навигации по сгенерированному Dagger графу с помощью SPI плагина
#Fragment
Android MultiStacks
Популярный дизайн паттерн в Android приложениях Bottom Navigation имеет один недостаток в реализации - в библиотеке AndroidX Fragment нет поддержки множества стеков для каждой вкладки ☹️. Библиотека Android MultiStacks предлагает решение этой проблемы.
Android MultiStacks
Популярный дизайн паттерн в Android приложениях Bottom Navigation имеет один недостаток в реализации - в библиотеке AndroidX Fragment нет поддержки множества стеков для каждой вкладки ☹️. Библиотека Android MultiStacks предлагает решение этой проблемы.
GitHub
GitHub - DimaKron/Android-MultiStacks: Easy multiple stack emulation for Android
Easy multiple stack emulation for Android. Contribute to DimaKron/Android-MultiStacks development by creating an account on GitHub.
#Podcast
Android Broadcast #5: "Как стать крутым разработчиком" с Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким разработчиком выяснил с Денисом Неклюдовым. Завсегдатый Dev Fest-ов и тайный поклонник Android Academy.
Денис Неклюдов - Android разработчик в Lyft, Google Developer Expert в Android, IoT и Google Pay. Ведущий подкаста "Android Dev Podcast". Чаcтый спикер на конференция Mobius и Apps Conf.
Полезные ссылки:
👉 Android Dev Podcast RU
👉 Android Dev Podcast EN
👉 Android Dev Podcast Telegram
👉 Доклад "Google Ecosystem for Apps. Total Integrations"
👉 Доклад "Переезд: подготовка, выбор, освоение территории"
👉 Доклад "Переезд Vol2. Детальный разбор направлений"
👉 Интервью с Денисом "Об удаленке в Тайланде, переезде в Сингапур, экстраординарной визе в США!"
👉 Отзывы на "90 Seconds"
👉 Анонс курсов по трудоустройству от Дениса и Кати из Подлодки Подкаста
👉 Программа "Google Developer Experts"
👉 Денис на сайте GDE
Контакты:
👉 Кирилл Розов - [email protected], t.iss.one/krlrozov
👉 Денис Неклюдов - t.iss.one/nekdenis
Отдельное спасибо Александру Марцинкевичу за помощь в монтаже выпуска
Android Broadcast #5: "Как стать крутым разработчиком" с Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким разработчиком выяснил с Денисом Неклюдовым. Завсегдатый Dev Fest-ов и тайный поклонник Android Academy.
Денис Неклюдов - Android разработчик в Lyft, Google Developer Expert в Android, IoT и Google Pay. Ведущий подкаста "Android Dev Podcast". Чаcтый спикер на конференция Mobius и Apps Conf.
Полезные ссылки:
👉 Android Dev Podcast RU
👉 Android Dev Podcast EN
👉 Android Dev Podcast Telegram
👉 Доклад "Google Ecosystem for Apps. Total Integrations"
👉 Доклад "Переезд: подготовка, выбор, освоение территории"
👉 Доклад "Переезд Vol2. Детальный разбор направлений"
👉 Интервью с Денисом "Об удаленке в Тайланде, переезде в Сингапур, экстраординарной визе в США!"
👉 Отзывы на "90 Seconds"
👉 Анонс курсов по трудоустройству от Дениса и Кати из Подлодки Подкаста
👉 Программа "Google Developer Experts"
👉 Денис на сайте GDE
Контакты:
👉 Кирилл Розов - [email protected], t.iss.one/krlrozov
👉 Денис Неклюдов - t.iss.one/nekdenis
Отдельное спасибо Александру Марцинкевичу за помощь в монтаже выпуска
YouTube
"Как стать крутым разработчиком" c Денисом Неклюдовым
Каково это быть крутым и популярным разработчиком? Когда ты выступаешь на митапах и конференциях, твой голос узнают в подкастах и читают твои статьи. Однозначно интересно! Это дает как профессиональное развитие, так и карьерное продвижение. Как стать таким…
#Android10 #DarkTheme
Dark Mode
Темная тема - одна из самых долгожданных функций в Android 10. Её наличие позволяет сократить расход батареи и уменьшить напряжение на глаза в темных условиях. В видео разбирают как можно адаптировать ваше приложение под темную тему.
Dark Mode
Темная тема - одна из самых долгожданных функций в Android 10. Её наличие позволяет сократить расход батареи и уменьшить напряжение на глаза в темных условиях. В видео разбирают как можно адаптировать ваше приложение под темную тему.
YouTube
Dark Mode
Dark theme is a new alternative to Android's default light theme, which is a system wide setting that applies to all apps that support it. By supporting Dark theme, you can reduce power usage by a significant amount and improve usability for users who have…
"Now in Android" теперь на YouTube
"Now in Android" с последними новостями Android разработки из Google от Chet Haase теперь стало доступно в видео формате
"Now in Android" с последними новостями Android разработки из Google от Chet Haase теперь стало доступно в видео формате
YouTube
Now in Android: 01 - Room, KTX extensions, AndroidX, conference videos, ADB podcast & more!
Welcome to Now in Android, your ongoing guide to what’s new and notable in the world of Android development. In this video, Chet Haase goes over the new Room and KTX docs, AndroidX releases, a new Room article, a new codelab, videos from recent conferences…
#AndroidKtx #Kotlin #Codelab
Building a Kotlin extensions library
Используете ли вы Android KTX библиотеки? Это расширения стандартного API и библиотек из Jetpack чтобы удобно писать под Android на языке Kotlin.
Google выпустила новую Codelab с руководством как создать свою собственную Ktx библиотеку и адаптировать ее API. Рассматриваются:
👉 Extension Functions
👉 Coroutines
👉 Flow
Также рекомендую посмотреть доклад "KotlinConf 2019: Android Jetpack ❤️ Kotlin: On the road to more wholesome APIs" от Wojtek Kaliciński
Building a Kotlin extensions library
Используете ли вы Android KTX библиотеки? Это расширения стандартного API и библиотек из Jetpack чтобы удобно писать под Android на языке Kotlin.
Google выпустила новую Codelab с руководством как создать свою собственную Ktx библиотеку и адаптировать ее API. Рассматриваются:
👉 Extension Functions
👉 Coroutines
👉 Flow
Также рекомендую посмотреть доклад "KotlinConf 2019: Android Jetpack ❤️ Kotlin: On the road to more wholesome APIs" от Wojtek Kaliciński
#Jetpack #Fragment
Jetpack Updates 22.01.2020
Новая пачка обновлений библиотек из Jetpack:
👉 Activity 1.1.0
👉 Fragment 1.2.0
👉 Lifecycle 2.2.0
👉 ViewModel-SavedState 1.0.0
👉 Navigation 2.2.0
👉 Sqlite 2.1.0
👉 Transition 1.3.0
👉 WorkManager 2.3.0
Также еще вышли новые альфы CameraX, Ads, Heif Writer и TextClassifier
Давайте подробнее пройдется по каждой из библиотек
Jetpack Updates 22.01.2020
Новая пачка обновлений библиотек из Jetpack:
👉 Activity 1.1.0
👉 Fragment 1.2.0
👉 Lifecycle 2.2.0
👉 ViewModel-SavedState 1.0.0
👉 Navigation 2.2.0
👉 Sqlite 2.1.0
👉 Transition 1.3.0
👉 WorkManager 2.3.0
Также еще вышли новые альфы CameraX, Ads, Heif Writer и TextClassifier
Давайте подробнее пройдется по каждой из библиотек
Android Developers
Recent Release Notes | Android Developers
#Jetpack #ViewModel #SavedState
ViewModel-SavedState 1.0.0
В
ViewModel-SavedState 1.0.0
В
ViewModel
решена задача с сохранением данных при изменение конфигурации. Ранее состояние сохранялась пока жив процесс, но вот при его уничтожение системой способа сохранить данные "из коробки" не было. Теперь есть - SavedStateHandle