#Test #Automation
Kaspresso: фреймворк для автотестирования, который вы ждали
Союз ребят из Лаборатории Касперского, HeadHunter и Авито создали фреймворк для автотестирование, который сделает ваши отношения с автотестами лучше и плодотворнее.
Чем же отличился
👉 Возможность использования
👉 Создание скриншотов
👉 Красивый DSL
👉 Решения flaky тестов из коробки
👉 Легкая интеграция если у вы используете Kakao
👉 Гибкость и легкая настраиваемость
В статье рассказывается зачем был нужен еще один инструмент для написания автотестов, чем не угодил Espresso, Kakao, нужен ли DSL для написания тестов и пр.
Kaspresso: фреймворк для автотестирования, который вы ждали
Союз ребят из Лаборатории Касперского, HeadHunter и Авито создали фреймворк для автотестирование, который сделает ваши отношения с автотестами лучше и плодотворнее.
Чем же отличился
Kaspresso
:👉 Возможность использования
adb
, а значит можно настраивать систему для теста👉 Создание скриншотов
👉 Красивый DSL
👉 Решения flaky тестов из коробки
👉 Легкая интеграция если у вы используете Kakao
👉 Гибкость и легкая настраиваемость
В статье рассказывается зачем был нужен еще один инструмент для написания автотестов, чем не угодил Espresso, Kakao, нужен ли DSL для написания тестов и пр.
Хабр
Kaspresso: фреймворк для автотестирования, который вы ждали
Все, кто занимался или занимается автотестами под Android, знают, какая это боль. От объема задач и проблем устаешь так, что и отпуск не помогает. Люди даже увол...
#GooglePlay #Publishing
Как быть опубликованным в Google Play в 2019
Рынок мобильных приложений - это огромные деньги (оценка в 120 млрд на 2019 год). Много конкуренции и стать успешным становится все труднее. Также усложнят жизнь GDPR
В статье вы найдете рекомендации по:
👉 Интеграции AdMob и как на это повлиял GDPR
👉 Возрастные ограничения
👉 Политика конфиденциальности
👉 Copyright
Как быть опубликованным в Google Play в 2019
Рынок мобильных приложений - это огромные деньги (оценка в 120 млрд на 2019 год). Много конкуренции и стать успешным становится все труднее. Также усложнят жизнь GDPR
В статье вы найдете рекомендации по:
👉 Интеграции AdMob и как на это повлиял GDPR
👉 Возрастные ограничения
👉 Политика конфиденциальности
👉 Copyright
Хабр
Как быть опубликованным в Google Play в 2019
Вступление Опубликовать приложение, не нарушив ни чьих прав, стало непростой задачей. За последние пару лет в Google Play добавилось множество новых правил и ограничений, причем некоторые из них...
#Firebase
What's new at Firebase Summit 2019
Сегодня в Мадриде проходит Firebase Summit на котором были представлены обновления:
👉 Firebase Extensions - готовые решения для выполнения распространенных задач: изменения размера картинок, укорачивание ссылок и пр.
👉 Улучшения в Firebase Emulator Suite
👉 Представлена Firebase App Distribution - это замена Fabric Beta, которая позволяет распространять предрелизные версии вашего приложения
👉 Firebase Analytics теперь доступен для Web
Что в итоге? Появилась полная альтернатива всем сервисам из Fabric и теперь можно делать полную миграцию.
What's new at Firebase Summit 2019
Сегодня в Мадриде проходит Firebase Summit на котором были представлены обновления:
👉 Firebase Extensions - готовые решения для выполнения распространенных задач: изменения размера картинок, укорачивание ссылок и пр.
👉 Улучшения в Firebase Emulator Suite
👉 Представлена Firebase App Distribution - это замена Fabric Beta, которая позволяет распространять предрелизные версии вашего приложения
👉 Firebase Analytics теперь доступен для Web
Что в итоге? Появилась полная альтернатива всем сервисам из Fabric и теперь можно делать полную миграцию.
The Firebase Blog
What's new at Firebase Summit 2019
At Firebase, our mission is to help mobile and web developers succeed, but with over 2 million apps actively using Firebase every month, we know that success means different things to different developers. For example, to Le Figaro, the oldest and largest…
Совсем недавно ребята из Android Dev Podcast организовали продажу своих фирменных маек. Но вот незадача, раздавать они их будут только на российских конференциях. Я решил устранить это досадную несправедливость - Android Broadcast организовал возможность получить футболки в Беларуси.
Цена одной футболки: 40 бел. рублей
Сбор заказов будет проходить до 7 октября 00:00.
Футболку можно будет заказать только по полной предоплате. Все подробности вы узнаете из письма после окончания приема заказов: где можно получить, когда будет заказ и как можно получить.
Цена одной футболки: 40 бел. рублей
Сбор заказов будет проходить до 7 октября 00:00.
Футболку можно будет заказать только по полной предоплате. Все подробности вы узнаете из письма после окончания приема заказов: где можно получить, когда будет заказ и как можно получить.
#DependencyInjection #Koin #Modularization
Setting Up Android Modules with Koin
Dependency Injection - стандарт для современных приложений и как самое популярное решение для этого Dagger 2 на Android. С некотор пор я предпочитаю Koin, так как она более простая и pure Kotlin 😍.
Пригоден ли Koin для модуляризации проект? Сможет ли он поддерживать Dynamic Features? В статье рассматривается как это сделать
Setting Up Android Modules with Koin
Dependency Injection - стандарт для современных приложений и как самое популярное решение для этого Dagger 2 на Android. С некотор пор я предпочитаю Koin, так как она более простая и pure Kotlin 😍.
Пригоден ли Koin для модуляризации проект? Сможет ли он поддерживать Dynamic Features? В статье рассматривается как это сделать
Medium
Setting Up Android Modules with Koin
Experimenting with Koin on a multi-module Android project
#Kotlin #Multiplatform
Переиспользование кода между платформами - горячая тема в мобильной разработке, так как всем сейчас необходимо приложение под популярные мобильные ОС: Android и iOS. Уже было много попыток: Apache Cordova, Xamarin, React Native, Flutter, Ionic, PhoneGap
Kotlin/Multiplatform взглянул на эту тему по новому - разработчики не пишут общий код, которые интерпретируется на конечной платформе с помощью виртуальной машины или запускается в браузере, а вы пишите единый Kotlin код, который потом компилируется в нативный код для конечной платформы. Наиболее близкое к этому решения - Flutter.
Ребята из IceRock запустили канал по мобильной разработке на с использованием Kotlin Multiplatform - @kotlinmpp
Переиспользование кода между платформами - горячая тема в мобильной разработке, так как всем сейчас необходимо приложение под популярные мобильные ОС: Android и iOS. Уже было много попыток: Apache Cordova, Xamarin, React Native, Flutter, Ionic, PhoneGap
Kotlin/Multiplatform взглянул на эту тему по новому - разработчики не пишут общий код, которые интерпретируется на конечной платформе с помощью виртуальной машины или запускается в браузере, а вы пишите единый Kotlin код, который потом компилируется в нативный код для конечной платформы. Наиболее близкое к этому решения - Flutter.
Ребята из IceRock запустили канал по мобильной разработке на с использованием Kotlin Multiplatform - @kotlinmpp
#Span #Text #HTML
Making Nested Lists with Android Spannables in Kotlin
Span - это мощный инструмент для форматирования текста в Android. С ним можно и ссылку в тексте сделать или поменять часть стиля текста.
В статье разбирается как сделать многоуровневые bullet в тексте, реализовать Html.TagHandler
Making Nested Lists with Android Spannables in Kotlin
Span - это мощный инструмент для форматирования текста в Android. С ним можно и ссылку в тексте сделать или поменять часть стиля текста.
В статье разбирается как сделать многоуровневые bullet в тексте, реализовать Html.TagHandler
Medium
Making Nested Lists with Android Spannables in Kotlin
How do you display a nested list on Android? That sounds simple. After all, it’s just one button in Microsoft Word right? It’s a little…
#Conference #Moscow #Promo
Mobius Москва 2019
Вы можете купить билет со скидкой предоставленной специально для Android Broadcast - используйте промокод mobius19mskAndroidBpc и купите билет здесь.
7-8 декабря в Москве пройдет конференция о мобильных технологиях Mobius. Спикеры из компаний LG, Яндекс, Tinkoff, Сбербанк, Вконтакте, JFrog, Amazon, Badoo, Lyft, Mail.Ru расскажут о:
👉 Лучших практиках тестирования
👉 Эффективный UI с Litho
👉 Как создать собственное правило для Android Lint
👉 Лучшие практики Kotlin
👉 Устройство шрифтов
👉 Как защитить ваше приложение
👉 Создание гибких и расширяемых архитектур
👉 Разбор в зоопарке Android систем: Things, Auto, Automotive, Wear, TV и классический вариант для телефонов
👉 Как продвинуть ваше приложение в Google Play и какие пути есть чтобы понравиться поддержке этого сервиса
Mobius Москва 2019
Вы можете купить билет со скидкой предоставленной специально для Android Broadcast - используйте промокод mobius19mskAndroidBpc и купите билет здесь.
7-8 декабря в Москве пройдет конференция о мобильных технологиях Mobius. Спикеры из компаний LG, Яндекс, Tinkoff, Сбербанк, Вконтакте, JFrog, Amazon, Badoo, Lyft, Mail.Ru расскажут о:
👉 Лучших практиках тестирования
👉 Эффективный UI с Litho
👉 Как создать собственное правило для Android Lint
👉 Лучшие практики Kotlin
👉 Устройство шрифтов
👉 Как защитить ваше приложение
👉 Создание гибких и расширяемых архитектур
👉 Разбор в зоопарке Android систем: Things, Auto, Automotive, Wear, TV и классический вариант для телефонов
👉 Как продвинуть ваше приложение в Google Play и какие пути есть чтобы понравиться поддержке этого сервиса
Mobius 2025 Autumn. Конференция по мобильной разработке
Mobius 2025 Autumn | Конференция по мобильной разработке
Mobius 2025 Autumn. Единственная в России профильная IT-конференция для разработчиков мобильных приложений. Android, iOS, Flutter, Kotlin Multiplatform, кроссплатформенная разработка — в десятках докладов, воркшопов и дискуссий.
#Architecture #MVI #PureKotlin
MVIDroid - MVIDroid is a framework written 100% in Kotlin that brings MVI pattern to Android
Хорошая архитектура приложения - это залог успеха вашего приложения. Она позволит вам расширять функционал, покрывать тестами код и другие полезные вещи.
Сам я никогда не был фанатом
MVIDroid - MVIDroid is a framework written 100% in Kotlin that brings MVI pattern to Android
Хорошая архитектура приложения - это залог успеха вашего приложения. Она позволит вам расширять функционал, покрывать тестами код и другие полезные вещи.
Сам я никогда не был фанатом
MVI
, но архитектура довольная интересная. MVIDroid
- это хороший пример реализации это архитектуры на чистом Kotlin без лишнего обвеса и оптимизированная под Android.#Architecture #MVI #PureKotlin
Debugging with MVIDroid
Помимо всего библиотека имеет обширные возможности по отладке: логирование, подмена
Также библиотека имеет функцию
👉 Переключение между состояниями вперед или назад
👉 Просмотр всех событий
👉 Просмотр информации о любом событии
👉 Возможность вызова любого события снова
👉 Поставить breakpoint для любого события
👉 Возможность сериализации/десериализации для передачи событий между устройства
👉 Remote debug
Debugging with MVIDroid
Помимо всего библиотека имеет обширные возможности по отладке: логирование, подмена
MviStore
через Factory
. Также библиотека имеет функцию
Time Travel
- сохранение всех событий, благодаря чему вы может делать различные интересные вещи:👉 Переключение между состояниями вперед или назад
👉 Просмотр всех событий
👉 Просмотр информации о любом событии
👉 Возможность вызова любого события снова
👉 Поставить breakpoint для любого события
👉 Возможность сериализации/десериализации для передачи событий между устройства
👉 Remote debug
#Firebase #FirebaseAppDistribution #Fastlane
Firebase App Distribution, Fastlane, Docker, Bitbucket Pipelines, Telegram, and all that jazz
На днях был представлен публично Firebase App Distribution, который упрощает доставку сборок вашего приложения тестерам.
В статье рассматривается как настроить новый способ доставки сборок на вашем CI с помощью Docker и Fastlane
Firebase App Distribution, Fastlane, Docker, Bitbucket Pipelines, Telegram, and all that jazz
На днях был представлен публично Firebase App Distribution, который упрощает доставку сборок вашего приложения тестерам.
В статье рассматривается как настроить новый способ доставки сборок на вашем CI с помощью Docker и Fastlane
Medium
Firebase App Distribution, Fastlane, Docker, Bitbucket Pipelines, Telegram, and all that jazz
Long-awaited Firebase App Distribution is here🔥
#Gradle #AndroidGradlePugin
Трансформация кода в Android
Писать boilerplate никто не любит. Сначала это упростили написанием библиотек, потом была рефлексия, затем Annotation Processor и наконец генерация кода с помощью Gradle плагина. Например, с помощью этого работает Android Data Binding.
В статье рассматривается как с помощь Transfrom API написать Gradle плагин, который сохраняет указанные данные в состояние
Трансформация кода в Android
Писать boilerplate никто не любит. Сначала это упростили написанием библиотек, потом была рефлексия, затем Annotation Processor и наконец генерация кода с помощью Gradle плагина. Например, с помощью этого работает Android Data Binding.
В статье рассматривается как с помощь Transfrom API написать Gradle плагин, который сохраняет указанные данные в состояние
Activity
и какие эффекты это несет на время сборкиХабр
Трансформация кода в Android
Вторая часть Вместо вступления Всё началось с того, что мне захотелось изучить тонкости настройки Gradle, понять его возможности в Android разработке (да и вообще). Начал с жизненного цикла и...
#Architecture #CleanArchitecture
Multiple ways of defining Clean Architecture layers
Хорошая архитектура - это ключевой элемент для построения приложения которое может делиться на модули, расширяться, упрощать поддержку, обеспечивать тестирование и др.
Чтобы достичь этого мы используем такие подходы как Clean Architecture (CA), S.O.L.I.D., Dependency Injection
В статье рассматриваются различные подходы какие используются для реализации CA:
1️⃣ CA слов в одно модуле
2️⃣ Один CA слой - один модуль
3️⃣ CA слои в feature модуле
4️⃣ CA слои в отдельных модулях для каждой feature
Также проводится сравнение решений
Multiple ways of defining Clean Architecture layers
Хорошая архитектура - это ключевой элемент для построения приложения которое может делиться на модули, расширяться, упрощать поддержку, обеспечивать тестирование и др.
Чтобы достичь этого мы используем такие подходы как Clean Architecture (CA), S.O.L.I.D., Dependency Injection
В статье рассматриваются различные подходы какие используются для реализации CA:
1️⃣ CA слов в одно модуле
2️⃣ Один CA слой - один модуль
3️⃣ CA слои в feature модуле
4️⃣ CA слои в отдельных модулях для каждой feature
Также проводится сравнение решений
Medium
Multiple ways of defining Clean Architecture layers
Good architecture is a key to build the modular, scalable, maintainable and testable application. Uncle Bob Clean Architecture (CA) is a…
#DependencyInjection #Modularization
Setting Up Android Modules With Kodein
Руководство как осуществлять модуляризацию при использовании Kodein
Setting Up Android Modules With Kodein
Руководство как осуществлять модуляризацию при использовании Kodein
Medium
Setting Up Android Modules With Kodein
Comparison with Koin and Dagger 2
#Kotlin #Optimization
Kotlin: cleaning Java bytecode before release
Многие говорят о том, что Kotlin генерирует много дополнительного Java байткода и результат не оптимальный. Это незначительно влияет на производительность и объем кода. Это не мешает Java сторонникам на этом факте говорить, что их язык лучше.
В статье разбирается как можно избавиться от дополнительно генерированного Java байткода Kotlin компилятором и не платить цену за удобные фичи языка от JetBrains.
Kotlin: cleaning Java bytecode before release
Многие говорят о том, что Kotlin генерирует много дополнительного Java байткода и результат не оптимальный. Это незначительно влияет на производительность и объем кода. Это не мешает Java сторонникам на этом факте говорить, что их язык лучше.
В статье разбирается как можно избавиться от дополнительно генерированного Java байткода Kotlin компилятором и не платить цену за удобные фичи языка от JetBrains.
Medium
Kotlin: cleaning Java bytecode before release
What’s is price of Kotlin null safety and how to remove additional bytecode
#Kotlin #Coroutines
Structured Concurrency Anniversary
Библиотека kotlinx.coroutines имела другой вид до того как в версии 0.26 была внесена новая концептуальная идея -
В статье Роман Елизаров рассказывает о текущем состояние
Например рекомендуется использовать Job только с
Structured Concurrency Anniversary
Библиотека kotlinx.coroutines имела другой вид до того как в версии 0.26 была внесена новая концептуальная идея -
Structured Concurrency
. Эта концепция хорошо подошла для Android с ее сложным жизненным циклом и поэтому была быстра адаптирована и популяризирована. Даже сами разработчики AndroidX и Google рекомендуют использовать Kotlin Coroutines.В статье Роман Елизаров рассказывает о текущем состояние
Structured Concurrency
, какие архитектурные решения хотелось бы изменить и что будет делать.Например рекомендуется использовать Job только с
coroutineContext
в рамках CoroutineScope
. Этому правилу следуют новоиспеченные Flow
, которые запрещают использовать Job и приведут к крэшу приложения.Medium
Structured Concurrency Anniversary
Structured Concurrency for Kotlin Coroutines was announced a year ago. Let’s celebrate this anniversary and see how it turned out to be.
#Animation #Transition #SharedElement
Hidden mistakes with Shared Element Transitions
Анимации - это важный компонент хорошего UI/UX приложения. Они позволяют пользователю понимать что происходит в приложение, выглядеть элементам естественными и оставлять приятные ощущения. Одна из таких анимаций - Shared Element Transition (SET), которая позволяет анимировать переходы между экранами.
Все ли так просто? С какими проблемами столкнулся автор и как их решал? В статье вы найдете подробный рассказ:
👉 Как правильно присваивать идентификаторы
👉 Особенности работы с
👉 Особенности использования загрузчиков картинок с
👉 Правильный момент для вызова
👉 Особенности
Автор потратил около 4 дней чтобы понять эти ошибки, а вы можете получить опыт за 10 минут!
Hidden mistakes with Shared Element Transitions
Анимации - это важный компонент хорошего UI/UX приложения. Они позволяют пользователю понимать что происходит в приложение, выглядеть элементам естественными и оставлять приятные ощущения. Одна из таких анимаций - Shared Element Transition (SET), которая позволяет анимировать переходы между экранами.
Все ли так просто? С какими проблемами столкнулся автор и как их решал? В статье вы найдете подробный рассказ:
👉 Как правильно присваивать идентификаторы
View
для SET
👉 Особенности работы с
SET
с вложенными Fragment👉 Особенности использования загрузчиков картинок с
SET
👉 Правильный момент для вызова
postPostponeTransition()
/startPostponedEnterTransition()
👉 Особенности
RecyclerView
и SET
Автор потратил около 4 дней чтобы понять эти ошибки, а вы можете получить опыт за 10 минут!
Medium
Hidden mistakes with Shared Element Transitions
There is a good practice to make your application beautiful and live, and nowadays there are a lot of tools and ways to achieve this. One…
#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