#IDEA
IntelliJ IDEA 2019.3: Better Performance and Quality
Разработчики из JetBrains дали свой ответ Project Marble из Android Studio 3.5 и выпустили релиз своей IDE, направленный на улучшение производительности и фиксу багов. Улучшены различные аспекты: индексация проектов, анализ кода, скорость запуска IDE, улучшение работы многих функций IDE и др.
К сожалению, даже будущая Android Studio 4.0 базируется на IDEA 2019.2, поэтому высока вероятность что все эту стабильность мы сможем почувствовать только в Android Studio 4.1. Главное, чтобы код Google не сломал там все!
IntelliJ IDEA 2019.3: Better Performance and Quality
Разработчики из JetBrains дали свой ответ Project Marble из Android Studio 3.5 и выпустили релиз своей IDE, направленный на улучшение производительности и фиксу багов. Улучшены различные аспекты: индексация проектов, анализ кода, скорость запуска IDE, улучшение работы многих функций IDE и др.
К сожалению, даже будущая Android Studio 4.0 базируется на IDEA 2019.2, поэтому высока вероятность что все эту стабильность мы сможем почувствовать только в Android Studio 4.1. Главное, чтобы код Google не сломал там все!
#Intro
What to consider when starting a new app development
На что стоит обратить внимание когда стартуете разработку нового Android приложения? Конечно же архитектуре, но также важно не забывать про особенности платформы и ее возможности. Автор статьи предлагает уделить внимание:
👉 Работа с местоположением
👉 Push уведомления
👉 Сбор аналитики
👉 Сбор информации о трекинга
👉 Авторизация
👉 Стиль приложения (Тема)
👉 Фоновые сервисы
👉 Локализация (не только переводы но и адаптация под другие регионы)
👉 Возможность работы с приложением без сети
👉 Анимации
What to consider when starting a new app development
На что стоит обратить внимание когда стартуете разработку нового Android приложения? Конечно же архитектуре, но также важно не забывать про особенности платформы и ее возможности. Автор статьи предлагает уделить внимание:
👉 Работа с местоположением
👉 Push уведомления
👉 Сбор аналитики
👉 Сбор информации о трекинга
👉 Авторизация
👉 Стиль приложения (Тема)
👉 Фоновые сервисы
👉 Локализация (не только переводы но и адаптация под другие регионы)
👉 Возможность работы с приложением без сети
👉 Анимации
Medium
What to consider when starting a new app development
What to consider when starting a new app development
#Firebase #CloudMessaging #PushNotification
Особенности работы с Firebase Cloud Messaging
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, разработчики Redmadrobot собрали вместе все найденные неявности и рассказали на митапе Redmadrobot. 🤖
Главное, что надо запомнить:
‼️ если вы в настройках вызвали Force Stop, то ваше приложение совсем перестанет получать пуши до следующего запуска!
‼️ если в данных пуша нет поля
‼️ если в данных есть поле
Вывод: лучше не используйте поле
Особенности работы с Firebase Cloud Messaging
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, разработчики Redmadrobot собрали вместе все найденные неявности и рассказали на митапе Redmadrobot. 🤖
Главное, что надо запомнить:
‼️ если вы в настройках вызвали Force Stop, то ваше приложение совсем перестанет получать пуши до следующего запуска!
‼️ если в данных пуша нет поля
notification
, но есть поле data, то система ОБЯЗАТЕЛЬНО вызовет ваш сервис обработки пуша‼️ если в данных есть поле
notification
, то система покажет уведомление сама ТОЛЬКО если приложение не на экране у пользователя (например, свернуто)Вывод: лучше не используйте поле
notification
!YouTube
Push Notifications
В каждом современном приложении есть Push уведомления, но так как встраивать их приходится нечасто, то каждый раз как в первый раз! 🤷♀️
Чтобы не ходить по одним и тем же граблям, Руслан собрал вместе все найденные неявности и рассказал на нашем митапе. 🤖…
Чтобы не ходить по одним и тем же граблям, Руслан собрал вместе все найденные неявности и рассказал на нашем митапе. 🤖…
#DynamicFeature #GooglePlay
Exploring Dynamic Feature Modules at Swiggy
Google Play предоставляет хорошую возможность для ваших приложения - Dynamic Delivery. Эта функция, которая позволяет вам загрузить модуль вашего приложения, отложено. Когда это может быть полезно? Например в вашем приложение есть объемная по размеру функция, но пользуется ей небольшое количество пользователей или она специфична для определенных регионов.
Как сделать динамическую загрузку? Ваше приложение должно быть модулизировано (на основе Gradle модулей/проектов). дальше дело техники, которое описывается в статье
Exploring Dynamic Feature Modules at Swiggy
Google Play предоставляет хорошую возможность для ваших приложения - Dynamic Delivery. Эта функция, которая позволяет вам загрузить модуль вашего приложения, отложено. Когда это может быть полезно? Например в вашем приложение есть объемная по размеру функция, но пользуется ей небольшое количество пользователей или она специфична для определенных регионов.
Как сделать динамическую загрузку? Ваше приложение должно быть модулизировано (на основе Gradle модулей/проектов). дальше дело техники, которое описывается в статье
Medium
Exploring Dynamic Feature Modules at Swiggy
Implementation details of Android’s Dynamic Feature Modules
#Kotlin #BestPractices
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Стала доступна печатная версия книги "Effective Kotlin", которая содержит в себе лучшие практики. Что стоит делать как, а чего лучше избегать.
Хотите сохранить деревья и всегда иметь актуальную версию книги? Купите электронную версию.
Medium
Effective Kotlin printed version
Lately, the most common question people ask me is not “How are you doing?” but instead, “When Effective Kotlin will be available in…
#Architecture #BestPractices
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
How to start writing reusable components for Android apps?
Для чего нужно переиспользовать код? Как минимум это уменьшение затрат на разработку других проектов и отсутствие расхождения в работе в разных проектах.
Как сделать эффективное повторное использование кода? Начните со следующего:
👉 Уделяйте внимание архитектуре вашего приложения
👉 Пишите собственные
View
👉 Используйте стандартное API из SDK по максимуму
👉 Dependency injection - ваш друг
👉 Выделяйте общий функционал в библиотеки/модули
Medium
How to start writing reusable components for Android apps?
A journey researching custom views on Android platform
#DependencyInjection #Dagger #AssistedInject #Square
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Brave New Android World with AssistedInject
Если вы активно используете Dagger, то скорее всего сталкивались с проблемой передачи зависимостей вне графа, например передать id в
Presenter
. Раньше это решалось те, что создавался новый Dagger компонента, куда этот параметр передается.Решить эту проблему можно с использование Factory, но это множество boileplate кода. Исправляет это библиотека AssistedInject, а в статье разбирается как ее использовать и как ее применить в Android.
Medium
Brave New Android World with AssistedInject
Assisted Inject is interesting feature of dependency injection, but looks very weird at a first grasp. Let me explain when it could be…
#Jetpack #AndroidX #ktx
Знаете ли вы все расширения для Kotlin из *-ktx библиотек? Где найти по ним документацию? Это можно сделать на сайте developers.android.com, если переключиться на формат документации в Kotlin.
Есть ли способ проще? Теперь да - полный список KTX расширений на официальном сайте. Рекомендую пройтись по списку, чтобы сделать ваш Kotlin код лучше и чище.
Знаете ли вы все расширения для Kotlin из *-ktx библиотек? Где найти по ним документацию? Это можно сделать на сайте developers.android.com, если переключиться на формат документации в Kotlin.
Есть ли способ проще? Теперь да - полный список KTX расширений на официальном сайте. Рекомендую пройтись по списку, чтобы сделать ваш Kotlin код лучше и чище.
Android Developers
List of KTX extensions | Android Developers
#ColorUtils
Contrasting text and icons over background
При реализации Material Design легко стоклнуться с тем что иконки, могут располагаться поверх других картинок. В этом случае вы сталкиваетесь с проблемой, что в зависимости от фона приходится менять картинку, или делать какой-то эффект чтобы на любой картинки ваше иконки не терялись.
Добиться это можно если перекрашивать иконки с зависимости от картинок. Как это сделать? Нужно рассчитывать яркость и динамически менять иконку. Рецепт в статье
Contrasting text and icons over background
При реализации Material Design легко стоклнуться с тем что иконки, могут располагаться поверх других картинок. В этом случае вы сталкиваетесь с проблемой, что в зависимости от фона приходится менять картинку, или делать какой-то эффект чтобы на любой картинки ваше иконки не терялись.
Добиться это можно если перекрашивать иконки с зависимости от картинок. Как это сделать? Нужно рассчитывать яркость и динамически менять иконку. Рецепт в статье
👨💻 Jorge Castillo
Contrasting text and icons over background
Detecting whether background is dark or light to pick the right foreground color for better contrast. Quite often we’ve needed to display icons or texts on top of colored backgrounds or images and we’ve fallen into contrasting problems. Let’s say we have…
#Coroutines
Suspending over Views
Kotlin Coroutines позволяют интегрировать их подход с любым принципом, основанным на Callback-ах. Где в Android можно найти много callback-ов? Это система View в Android. В статье рассказывается как это сделать и каким образом этом может быть эффективно применить.
Suspending over Views
Kotlin Coroutines позволяют интегрировать их подход с любым принципом, основанным на Callback-ах. Где в Android можно найти много callback-ов? Это система View в Android. В статье рассказывается как это сделать и каким образом этом может быть эффективно применить.
Medium
Suspending over Views
How coroutines can make UI programming easier
#DSL #Anko #Kotlin
Кладбище проектов пополнилось еще одним решением - Anko. Авторы написали прощальный MD, в котором объясняют причины закрытия проекта из-за сложностей развития отдельного функционала и появление хорошего аналога от Google в виде
Кладбище проектов пополнилось еще одним решением - Anko. Авторы написали прощальный MD, в котором объясняют причины закрытия проекта из-за сложностей развития отдельного функционала и появление хорошего аналога от Google в виде
*-ktx
. Создатели библиотеки предлагают мигрировать на другие решения, одним из которых является Jetpack Compose.GitHub
GitHub - Kotlin/anko: Pleasant Android application development
Pleasant Android application development. Contribute to Kotlin/anko development by creating an account on GitHub.
#CodeQuality #Kotlin
Вышел KtLint 0.36.0 в рамках которой вы найдете:
👉 новую возможность создания HTML отчетов
👉 Новые правила и улучшение старых
👉 Багфикс
Вышел KtLint 0.36.0 в рамках которой вы найдете:
👉 новую возможность создания HTML отчетов
👉 Новые правила и улучшение старых
👉 Багфикс
GitHub
Release 0.36.0 · pinterest/ktlint
Added
HTML reporter (#641)
Experimental rule to lint enum entry names (#638)
@Suppress("RemoveCurlyBracesFromTemplate") now respected (#263)
Upgraded
Gradle version to 5.6.2 (#616)
Kot...
HTML reporter (#641)
Experimental rule to lint enum entry names (#638)
@Suppress("RemoveCurlyBracesFromTemplate") now respected (#263)
Upgraded
Gradle version to 5.6.2 (#616)
Kot...
#DeepLink
От веба до приложения за один DeepLink
Deep Link - это популярная функция любого приложения. Она позволяет связывать между собой ссылку на страничку и окном в установленном приложении. Что делать если приложение не установлено? Открыть страницу в браузере? Предложить установить приложение? Также помимо Deep Link в Android есть еще и App Link.
Как все это связать между собой? Как решить проблемы с редиректом в разных браузеров на разных платформах. В статье рассматриваются решения OneLink и Firebase Dynamic Link: принципы работы, трудности с которыми столкнулся автор, особенности работы с Chrome Custom Tab.
От веба до приложения за один DeepLink
Deep Link - это популярная функция любого приложения. Она позволяет связывать между собой ссылку на страничку и окном в установленном приложении. Что делать если приложение не установлено? Открыть страницу в браузере? Предложить установить приложение? Также помимо Deep Link в Android есть еще и App Link.
Как все это связать между собой? Как решить проблемы с редиректом в разных браузеров на разных платформах. В статье рассматриваются решения OneLink и Firebase Dynamic Link: принципы работы, трудности с которыми столкнулся автор, особенности работы с Chrome Custom Tab.
Firebase Dynamic Link
оказалось лучшим решением так как его работа базируется на Google Play Services, что позволяет эффективнее обрабатывать случаи когда приложение не установлено.Хабр
От веба до приложения за один DeepLink
Android-приложения являются отражением сайта или сервиса и зачастую представляют собой сходный функционал в удобной оболочке. Из-за этого становится насущным в...
#Gradle #DependencyManagement
Стала доступна запись вебинара "What’s New in Gradle 6.0". В рамках сессии разработчики этой системы сборки рассказали о:
👉 Нововведениях в системе управления зависимостями
👉 Публикация Gradle Module Metadata и его роль
👉 Улучшениях поддержки java, Groovy, Scala
👉 Новых возможностях для разработчиков плагинов
Стала доступна запись вебинара "What’s New in Gradle 6.0". В рамках сессии разработчики этой системы сборки рассказали о:
👉 Нововведениях в системе управления зависимостями
👉 Публикация Gradle Module Metadata и его роль
👉 Улучшениях поддержки java, Groovy, Scala
👉 Новых возможностях для разработчиков плагинов
Gradle Enterprise
What's New in Gradle 6.0 | Gradle Enterprise
Gradle 6.0 is the culmination of several years of innovative improvements in Dependency Management. Embracing the idea that there is more to software
#Kotlin #Conference #Copenhagen
Сегодня началась конференция Kotlin Conf 2019. Первый день посвящен воркшопам, а завтра нас уже ждут доклады, как и в третий день конференции. В этом году все потоки будут транслироваться онлайн и поэтому вы можете полностью увидеть всех со сцен в онлайне.
В конце первого дня докладов нас ждет загадочный анонс нового продукта компании... Жду не дождусь чтобы узнать чем нас порадует компания, которая создала язык и IDE, изменившие качество разработки множества Android разработчиков и не только!
Также в вашем городе вы можете попробовать найти мероприятия в рамках KotlinConf Global. Карту можно найти здесь.
А я уже сажусь в самолёт ✈️, чтобы увидеть все своими глазами и конечно же делиться новостями в канале! Если у вас есть какие-то вопросы к компаниям на стендах или разработчикам из JetBrains - можете написать мне (@krlrozov) и я постараюсь задать ваш вопрос.
Сегодня началась конференция Kotlin Conf 2019. Первый день посвящен воркшопам, а завтра нас уже ждут доклады, как и в третий день конференции. В этом году все потоки будут транслироваться онлайн и поэтому вы можете полностью увидеть всех со сцен в онлайне.
В конце первого дня докладов нас ждет загадочный анонс нового продукта компании... Жду не дождусь чтобы узнать чем нас порадует компания, которая создала язык и IDE, изменившие качество разработки множества Android разработчиков и не только!
Также в вашем городе вы можете попробовать найти мероприятия в рамках KotlinConf Global. Карту можно найти здесь.
А я уже сажусь в самолёт ✈️, чтобы увидеть все своими глазами и конечно же делиться новостями в канале! Если у вас есть какие-то вопросы к компаниям на стендах или разработчикам из JetBrains - можете написать мне (@krlrozov) и я постараюсь задать ваш вопрос.
KotlinConf
KotlinConf 2026, May 20–22, Munich
KotlinConf is the official Kotlin conference by JetBrains. It is a place for the community to gather and discuss all things Kotlin.
#Security
An Update on Android TLS Adoption
Google хвастается тем что добавление Network Security Configuration в Android 7.0, а позже и введение политик по умолчанию который блокируют незашифрованный трафик, начиная с Android 9.0, дали прекрасные результаты. На текущий день что 80% всех Android приложений шифруют трафик по умолчанию, а для Android 9.0+ этот Показатель еще выше - 90%.
Если вы еще не позаботились о безопасности работы в сети, в статье вы найдёте краткое руководство.
An Update on Android TLS Adoption
Google хвастается тем что добавление Network Security Configuration в Android 7.0, а позже и введение политик по умолчанию который блокируют незашифрованный трафик, начиная с Android 9.0, дали прекрасные результаты. На текущий день что 80% всех Android приложений шифруют трафик по умолчанию, а для Android 9.0+ этот Показатель еще выше - 90%.
Если вы еще не позаботились о безопасности работы в сети, в статье вы найдёте краткое руководство.
Android Developers Blog
An Update on Android TLS Adoption
Posted by Bram Bonné, Senior Software Engineer, Android Platform Security & Chad Brubaker, Staff Software Engineer, Android Platform Secu...
#Security #Fingerprint #Biometric #Migration
Migrating from FingerprintManager to BiometricPrompt
Не так давно вышла библиотека AndroidX Biometric, в рамках которой произошла унификация работы между FingerprintManager и BiometricPrompt, а также появился единый UI. Пора задуматься о миграции на новый API.
В статье рассматривается миграция с
Migrating from FingerprintManager to BiometricPrompt
Не так давно вышла библиотека AndroidX Biometric, в рамках которой произошла унификация работы между FingerprintManager и BiometricPrompt, а также появился единый UI. Пора задуматься о миграции на новый API.
В статье рассматривается миграция с
FingerprintManager
в 2 вариантах: с использование шифрования данных с полученным CryptoObject или без. Первый вариант нужен если вам необходимо выполнять шифрование данных, а второй - если вы используете биометрическую авторизацию как пароль.Medium
Migrating from FingerprintManager to BiometricPrompt
The Android Framework and Security team recently released the AndroidX Biometric Library, a support library that supersedes all previous…
#Kotlin #Conference #Copengagen
Обзор анонсов Kotlin Conf 2019
5-6 декабря в Копенгаген (Дания) проходит конференция Kotlin Conf в рамках которой рассказали подробности следующей версии языка и представили новый продукт компании JetBrains - Space. В видео я делюсь личными впечатлениями от первого дня и рассказываю про анонсы.
P.S. Видео записывалось в отеле в спешке, прошу не судить строго за огрехи ☹️
Обзор анонсов Kotlin Conf 2019
5-6 декабря в Копенгаген (Дания) проходит конференция Kotlin Conf в рамках которой рассказали подробности следующей версии языка и представили новый продукт компании JetBrains - Space. В видео я делюсь личными впечатлениями от первого дня и рассказываю про анонсы.
P.S. Видео записывалось в отеле в спешке, прошу не судить строго за огрехи ☹️
YouTube
Обзор анонсов Kotlin Conf
5-6 декабря в Копенгаген (Дания) проходит конференция Kotlin Conf в рамках которой рассказали подробности следующей версии языка и представили новый продукт ...
Coroutines Flow убьют необходимость использования LiveData.
Уже задумывался над тем, чтобы заменить LiveData на Flow, т.к. наличие из коробки CoroutineScope для жизненных циклов не несут в себе никакой ценности использования LiveData
Уже задумывался над тем, чтобы заменить LiveData на Flow, т.к. наличие из коробки CoroutineScope для жизненных циклов не несут в себе никакой ценности использования LiveData
#Kotlin #Multiplatform
JetBrains запустила страничку на своём сайте, которая позволяет быстро и эффектно продемонстрировать как с помощью Kotlin MPP шарить код между iOS и Android, а также какие преимущества это даёт. Выглядет супер - и страничка, и технология 😀
JetBrains запустила страничку на своём сайте, которая позволяет быстро и эффектно продемонстрировать как с помощью Kotlin MPP шарить код между iOS и Android, а также какие преимущества это даёт. Выглядет супер - и страничка, и технология 😀
JetBrains
Kotlin Multiplatform for Cross-Platform Development | JetBrains
Kotlin Multiplatform is a technology that enables reusing code across Android, iOS, web, desktop, and server-side while retaining native programming benefits.