#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
Какой оптимизатор/обфускатор кода используете вы?
Final Results
30%
R8
49%
ProGuard
9%
Не знаю
12%
Не использую оптимизацию кода
#Multiplatform #Kotlin #CI #CD
Continuous delivery для вашей Kotlin Multiplatform библиотеки
Уже сейчас любому Android разработчику, использующему Kotlin, можно легко заглянуть в будущее языка и узнать как шарить код и с какими проблемами сталкиваются разработчики, которые пишут реальные проекты и выпускаются open source библиотеки.
В статье вы найдёте опыт ребят из Badoo по выстраиванию инфраструктуры CI и CD для сборки и публикации библиотеки Reaktive.
Continuous delivery для вашей Kotlin Multiplatform библиотеки
Kotlin MPP
сейчас одно из самых многообещающих решений для шаринга кода между платформами (мнение лично моё). Да есть Flutter и я жду интересной битвы в будущем.Уже сейчас любому Android разработчику, использующему Kotlin, можно легко заглянуть в будущее языка и узнать как шарить код и с какими проблемами сталкиваются разработчики, которые пишут реальные проекты и выпускаются open source библиотеки.
В статье вы найдёте опыт ребят из Badoo по выстраиванию инфраструктуры CI и CD для сборки и публикации библиотеки Reaktive.
Хабр
Continuous delivery для вашей Kotlin Multiplatform библиотеки
Привет! Меня зовут Юрий Влад, я Android-разработчик в компании Badoo и принимаю участие в создании библиотеки Reaktive — Reactive Extensions на чистом Kotlin. В...
#Emulator #CI #Docker
Continuous testing with new Android emulator tools
Google открывает доступ к своим скриптам для Docker Container-ов c Android эмулятором, чтобы помочь разработчикам упростить тестирование последних изменений.
Помимо этого Google предоставила следующее:
👉 Скрипт для загрузки эмуляторов (AOSP и Google Play Services)
👉 Генератор Docker образов с Android эмулятором
👉 Поддержка работы по ADB с эмулятором в контейнере
👉 Remote streaming: возможность подключения к эмулятору из контейнера через браузер и видеть что происходит, а также взаимодействовать с ним
Пока образ работает только на Linux, но работы по поддержке macOS и Windows ведутся.
Continuous testing with new Android emulator tools
Google открывает доступ к своим скриптам для Docker Container-ов c Android эмулятором, чтобы помочь разработчикам упростить тестирование последних изменений.
Помимо этого Google предоставила следующее:
👉 Скрипт для загрузки эмуляторов (AOSP и Google Play Services)
👉 Генератор Docker образов с Android эмулятором
👉 Поддержка работы по ADB с эмулятором в контейнере
👉 Remote streaming: возможность подключения к эмулятору из контейнера через браузер и видеть что происходит, а также взаимодействовать с ним
Пока образ работает только на Linux, но работы по поддержке macOS и Windows ведутся.
Android Developers Blog
Continuous testing with new Android emulator tools
Posted by Lingfeng Yang, Android Studio team Developers often use the Android Emulator during their day-to-day development to quickly t...
#ChromeOS #LargeScreen
VLC optimizes its Android app for immersive video experiences on larger screens
VLC - самый популярный плеер, доступный на любой из современных платформ: Windows, macOS, Android, iOS. Команда приложения захотела сделать его еще более доступным и адаптировать своё Android приложение для корректно работы на Chrome OS. Что для этого надо было сделать:
👉 Поддержка экранов с большой диагональю
👉 Поддержка управления клавиатурой и мышкой
👉 Поддержка работы в плавающем окне
👉 Поддержка изменения размера окна
👉 VLC - это о видео и звуке, а поэтому надо поддержать нативный код для x86 и x86_64, которые популярны в Chromebook-ах
Будет классно услышать кого-то с опытом адаптации Android приложения для Chrome OS в @android_broadcast_discussions
VLC optimizes its Android app for immersive video experiences on larger screens
VLC - самый популярный плеер, доступный на любой из современных платформ: Windows, macOS, Android, iOS. Команда приложения захотела сделать его еще более доступным и адаптировать своё Android приложение для корректно работы на Chrome OS. Что для этого надо было сделать:
👉 Поддержка экранов с большой диагональю
👉 Поддержка управления клавиатурой и мышкой
👉 Поддержка работы в плавающем окне
👉 Поддержка изменения размера окна
👉 VLC - это о видео и звуке, а поэтому надо поддержать нативный код для x86 и x86_64, которые популярны в Chromebook-ах
Будет классно услышать кого-то с опытом адаптации Android приложения для Chrome OS в @android_broadcast_discussions
Android Developers
VLC optimizes its Android app for immersive video experiences on larger screens | Developer stories | Android Developers
This media is not supported in your browser
VIEW IN TELEGRAM
SurveyKit: Create beautiful surveys on Android
Любите делать опросы? Тогда вам пригодится библиотека SurveyKit
Любите делать опросы? Тогда вам пригодится библиотека SurveyKit
#AndroidX
Количество артефактов в Android огромное, чтобы посмотреть их можно полазить в документации либо зайти на maven.google.com. Сегодня сайт стал удобнее - на нем наконец-то появился поиск 🎉
Количество артефактов в Android огромное, чтобы посмотреть их можно полазить в документации либо зайти на maven.google.com. Сегодня сайт стал удобнее - на нем наконец-то появился поиск 🎉
#ConstraintLayout #AndroidX
Awesomeness of ConstraintLayout Flow
Мы уже давно ждем ConstrainLayout 2.0, а особенно MotionLayout + визуальный редактор анимаций в Android Studio! Но вот уже с Google I/O 2019 они весят в статусе beta 😞.
В статье рассматриваются новые элемент - Flow.
Awesomeness of ConstraintLayout Flow
Мы уже давно ждем ConstrainLayout 2.0, а особенно MotionLayout + визуальный редактор анимаций в Android Studio! Но вот уже с Google I/O 2019 они весят в статусе beta 😞.
В статье рассматриваются новые элемент - Flow.
Flow
позволяет улучшить расположение элементов, нечто подобное на Chain, но уже работает не в первом измерение а одновременно по горизонтали и вертикали.Medium
Awesomeness of ConstraintLayout Flow
Constraint Layout Flow
#Gradle #Bazel #Buck
Сборка Android-приложения. Задачка со звёздочкой
Сборка современного Android приложения - непростая задача . Множество библиотек, многомодульность, использование плагинов, процессоров аннотаций и др. Система сборки Gradle не радует своей скоростью.
Есть ли сборка на Android вне Gradle? В статье вы найдете сравнение стандартной системы сборки с Bazel и Buck
Сборка Android-приложения. Задачка со звёздочкой
Сборка современного Android приложения - непростая задача . Множество библиотек, многомодульность, использование плагинов, процессоров аннотаций и др. Система сборки Gradle не радует своей скоростью.
Есть ли сборка на Android вне Gradle? В статье вы найдете сравнение стандартной системы сборки с Bazel и Buck
Хабр
Сборка Android-приложения. Задачка со звёздочкой
Привет, Хабр! Летом я выступал на Summer Droid Meetup с докладом про сборку Android-приложения. Видеоверсию можно найти здесь: habr.com/ru/company/funcorp/blog...
#Material #UI
Material Components for Android 1.1.0 Beta 1
Google имеет странную особенность в плане Material Design - представлять его намного ранее чем готовы его компоненты для адаптации приложениями и в системе. Так было с первой версий дизайна и со второй. Поэтому сообщество активно начало представлять свои реализации компонентов.
Наконец-то Google подходит к первому значительному обновлению библиотеки Material Design 2.0 для Android:
👉 Поддержка темной темы
👉 Новый пикер для даты
👉 Табы и Bottom Navigation поддерживают Badge
👉 Добавлен Extended FAB
👉 Поддержка новой системой навигации из Android 10
👉 Поддержка Material Theming: Shape, Typography, Color
👉 MaterialAlertDialogBuilder - диалог в Material стиле
👉 Улучшение стабильности
👉 Улучшение accessibility
👉 Улучшение анимаций
Очень хочется чтобы обновление спецификации Material Design шло в ногу с библиотекой Material Component for Android
Material Components for Android 1.1.0 Beta 1
Google имеет странную особенность в плане Material Design - представлять его намного ранее чем готовы его компоненты для адаптации приложениями и в системе. Так было с первой версий дизайна и со второй. Поэтому сообщество активно начало представлять свои реализации компонентов.
Наконец-то Google подходит к первому значительному обновлению библиотеки Material Design 2.0 для Android:
👉 Поддержка темной темы
👉 Новый пикер для даты
👉 Табы и Bottom Navigation поддерживают Badge
👉 Добавлен Extended FAB
👉 Поддержка новой системой навигации из Android 10
👉 Поддержка Material Theming: Shape, Typography, Color
👉 MaterialAlertDialogBuilder - диалог в Material стиле
👉 Улучшение стабильности
👉 Улучшение accessibility
👉 Улучшение анимаций
Очень хочется чтобы обновление спецификации Material Design шло в ногу с библиотекой Material Component for Android
GitHub
Release 1.1.0-beta01 · material-components/material-components-android
Dependency Updates:
Dependency
Previous version
New version
appcompat
1.1.0-rc01
1.1.0
core
1.1.0-rc03
1.1.0
vectordrawable
1.1.0-rc01
1.1.0
viewpager2
1.0.0-beta03
1.0.0-beta04
Lib...
Dependency
Previous version
New version
appcompat
1.1.0-rc01
1.1.0
core
1.1.0-rc03
1.1.0
vectordrawable
1.1.0-rc01
1.1.0
viewpager2
1.0.0-beta03
1.0.0-beta04
Lib...
#Resources
Split layouts into sub-folders in Android Studio
Как много лежит у вас ресурсов в папках каждого типа (layout, drawable и пр)? У меня много XML в layout, и меня это все время огорчает. Возможно Jetpack Compose это исправить, но пока приходится делать хаки.
Split layouts into sub-folders in Android Studio
Как много лежит у вас ресурсов в папках каждого типа (layout, drawable и пр)? У меня много XML в layout, и меня это все время огорчает. Возможно Jetpack Compose это исправить, но пока приходится делать хаки.
Android Broadcast
Совсем недавно ребята из Android Dev Podcast организовали продажу своих фирменных маек. Но вот незадача, раздавать они их будут только на российских конференциях. Я решил устранить это досадную несправедливость - Android Broadcast организовал возможность получить…
Остается последняя возможность заказать футболку
#Kotlin #CodeQuality
Вышел Detekt 1.1.0
Вышла новая версия статического анализатора Kotlin кода
Вышел Detekt 1.1.0
Вышла новая версия статического анализатора Kotlin кода
Detekt
, в которую попали исправление багов, улучшение старых и новые правила.#Security #NDK
Securing API Keys using Android NDK
У Java байткода есть один минус - его легко декомпилировать и вытащить строки, а в строках разработчики обычно хранят различные ключи для доступа к сервисам.
В таких случаях злоумышлении могут воспользоваться этими ключами в своих приложениях, но не всегда. Некоторые сервисы еще производят верификацию по сертификату, которому подписано приложение.
Как вшить ключи в приложение и сделать это надежнее? Используйте нативный код. В статье вы найдете руководство как сохранять ключи в нативном коде и работать с ними из Java/Kotlin.
Securing API Keys using Android NDK
У Java байткода есть один минус - его легко декомпилировать и вытащить строки, а в строках разработчики обычно хранят различные ключи для доступа к сервисам.
В таких случаях злоумышлении могут воспользоваться этими ключами в своих приложениях, но не всегда. Некоторые сервисы еще производят верификацию по сертификату, которому подписано приложение.
Как вшить ключи в приложение и сделать это надежнее? Используйте нативный код. В статье вы найдете руководство как сохранять ключи в нативном коде и работать с ними из Java/Kotlin.
Mindorks
Securing API Keys using Android NDK (Native Development Kit)
In this blog, we will learn how to secure our API Keys that are used in Android applications using the Android NDK (Native Development Kit). We have created a detailed blog of securing the API Keys.