Какую версию 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#Jetpack #Activity #ViewModel
Activity 1.1.0
Важным изменением в новой версии Activity стала изменение используемой по умолчанию фабрики для создания
Теперь вы можете получить SavedStateHandle в конструкторе ViewModel, например
Activity 1.1.0
Важным изменением в новой версии Activity стала изменение используемой по умолчанию фабрики для создания
ViewModel
. Раньше использовалась AndroidViewModelFactory на смену которой пришла SavedStateViewModelFactory. Теперь вы можете получить SavedStateHandle в конструкторе ViewModel, например
class MyActivity : Activity() {
val vm: MyViewModel by viewModels()
}
class MyViewModel(
savedState: SavedStateHandle
) : ViewModel()
#Fragment #ViewModel #Jetpack
Fragment 1.2.0
👉 FragmentContainerView - новая
👉 Изменение используемой по умолчанию фабрики для создания
👉
👉 Новые проверки Android Lint: теперь проверяется правильность использования
👉
👉
Fragment 1.2.0
👉 FragmentContainerView - новая
ViewGroup
, предназначенная специально для размещения в ней Fragment
. Она исправляет проблемы с анимациями при выполнение транзакций. Забудь о FrameLayout
или <fragment>
, теперь только FragmentContainerView
.👉 Изменение используемой по умолчанию фабрики для создания
ViewModel
по аналогии с Activity 1.1.0👉
Fragment.onDestroyView()
теперь вызывается только после окончания анимации/transition👉 Новые проверки Android Lint: теперь проверяется правильность использования
getViewLifecycleOwner()
👉
Fragment.getFragmentManager()
переименовано в Fragment.getParentFragmentManager()
👉
FragmentManager
теперь поддерживает операции (add/replace и др.) с Fragment
по их классу, в дополнение к заранее созданному объекту. Это улучшает поддержку возможности по интеграции DI в конструктор Fragment
.#ArchitectureComponent #ViewModel #Lifecycle #Coroutines
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
👉 LifecycleCoroutineScope - специальный
👉 suspend функции, связанные с
Но помимо этого
👉 Теперь вместо
👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
Lifecycle 2.2.0
Много новых интеграций с Kotlin Coroutines:
👉 Конвертация
Flow
<-> LiveData
👉 liveData { } - генератор значений с помощью Coroutine, которые доставляются через
LiveData
👉 LifecycleCoroutineScope - специальный
CoroutineScope
, связанный с Lifecycle
. Он позволяет запускать Coroutine, когда Lifecycle
достигнет определенного состояния с помощью launchWhenCreated, launchWhenResumed и launchWhenStarted👉 suspend функции, связанные с
LifecycleOwner
и Lifecycle
, которые позволяют дождаться заданного состояния Lifecycle: whenCreated, whenStarted, whenResumed, whenStateAtLeast (только для Lifecycle
)Но помимо этого
👉 Теперь вместо
ViewModelProviders.of()
надо создавать ViewModelProvider
через конструктор👉 Gradle Incremental Annotation Processor: Теперь вместо аннотирования методов, который должны вызываться на методы жизненного цикла, с помощью
@OnLifecycleEvent
используйте DefautLifecycleObserver.#Jetpack #ArhitectureComponents #WorkManager
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
WorkManager 2.3.0
Появилась возможность задавать системе, что выполняемая операция важна, и что процесс должен оставаться живым как можно дольше во время выполнения. Работает механизм поверх Foreground Service. Используйте setForegroundAsync
Также появилась возможность отображать прогресс выполнения задачи с помощью setProgressAsync
#Jetpack #Navigation
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Navigation 2.2.0
👉 Возможность получения элемента из back stack по id элемента из графа. Используйте getBackStackEntry
👉 Параметры в Deep Link теперь могут быть в любом порядке
👉 Появилась поддержка опциональных параметров в Deep Link
👉 Улучшение работы анимаций
Стоит ли делать обзоры обновлений Jetpack в формате t.iss.one/android_broadcast/1397 ?
Final Results
63%
Да, несколько постов тредом
26%
Да, все в одном посте
7%
Нет, выноси на отдельный ресурс и пости ссылку
3%
Не стоит делать вообще такого
2%
Другое
#Gradle #Performance #Modularization
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
O(1) Android build time at Tiki
Разработчики подходят с разных сторон в попытке оптимизировать Gradle сборку и сделать работу быстрее. В Tiki сделал довольно интересно решение - подключение только одного feature модуля с которым сейчас работает разработчик, что позволил сократить время разработки.
Как это реализовать и каким образом должны подключаться модули вы можете найти в статье.
Tiki Engineering
O(1) Android build time at Tiki - Tiki Engineering
The problem Build time has always been a big issue for Android developers. In order […]
#Internship #Moscow
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Весенняя стажировка (2020) для мобильных разработчиков в Redmadrobot
Компания Redmadrobot запуска стажировку для Android и iOS разработчиков. Стажировка призвана не научить вас написать первое приложение под ваш смартфон, а погрузиться глубже на основе базиса знаний.
Что обещают:
👉 Самые актуальные навыки для разработчика в 2020 году
👉 Материалы из проектов Redmadrobot
👉 Две рабочие группы: iOS и Android
👉 Очные вечерние занятия на Swift/Kotlin три раза в неделю с 18:30 до 20:30
👉 Интересные и реально сложные домашние задания (мы предупредили!)
👉 Знакомство с проектными бизнес-процессами и внутренней кухней компании
До конца дойдут только самые упорные и прокаченные на новый уровень разработчики, а лучшие получат еще и предложение от Redmadrobot. Самое главное - это возможность получить знания от профессионалов своего дела.
Хабр
Весенняя стажировка для мобильных разработчиков в Redmadrobot
Привет, Хабр, мы запускаем шестую, на этот раз весеннюю, стажировку для мобильных разработчиков в московском офисе Redmadrobot. Всех, кто пройдёт строгий желез...