Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью

Взгляд на скорость выполнения кода с применением NDK.
Вычисление фрактала Мандельброта с помощью Kotlin и С++ и тест на реальных устройствах

Пишем под самую популярную мобильную ОС

Взгляд на скорость выполнения кода с применением NDK.
Вычисление фрактала Мандельброта с помощью Kotlin и С++ и тест на реальных устройствах
Современные технологии – это истинное благо для любого бизнеса. Но точно так же они могут стать самым настоящим проклятьем. Только представьте. Вы захотели создать собственное мобильное приложение. Идея уже есть, спонсоры найдены, и, казалось бы, выпускай себе приложение и покоряй им мир стандартными «Efficiency, Resilience and Innovation • Trust • Human-Centered approach • Passion • Excellence». Но в действительности все оказывается куда сложнее. Вы приходите к специалистам и не понимаете, кого слушать. Одни наперебой убеждают вас, что приложение стоит сделать на технологии React Native, а другие упорно доказывают, что нет лучшего решения, чем разработка на Swift/Kotlin. Звучит знакомо? Тогда эта статья точно вам поможет.


Привет, меня зовут Владимир и у меня есть кое-что что надо обсудить, но сначала позвольте мне быстро рассказать как все это началось.
Я познакомился с понятием “архитектурные паттерны” и MVC в частности еще в 2012, и с тех пор заболел идеей архитектур программного обеспечения. Я восхищался людьми, которые пишут архитектурные фреймворки. Я тратил дни и недели читая их исходники и просматривая видео на YouTube. Но чем больше я в это погружался, тем больше я чувствовал себя в состоянии, которое я называю “начинающий иллюзионист”: пока смотришь на фокусы - это магия, но когда начинаешь их делать, то они становятся банальными.
За годы я попробовал разные существующие паттерны и фреймворки, на разных языках и в разных проектах. Какие-то реализации я писал с нуля, с какими-то знакомился в чужих проектах, но почти каждый раз упирался в их несовершенство. И каждый раз это было очень болезненно. И вот я думал, что в следующий раз все сделаю правильно, но опять что-то шло не так. Тогда я решил разобраться в этом вопросе и сделал своей миссией поиск того самого подхода, который имеют ввиду, когда говорят “нормально делай - нормально будет”.
Нашел ли я его? Возможно. По крайней мере мне есть что показать, но об этом в другой раз.
В своих скитаниях я нашел кое-что не менее интересное: причину почему MVx всегда получается плохо. И вот об этом и пойдет речь сегодня.

Цикл статей с вопросами по Kotlin, которые могут задать на собеседованиях.
Вопросы и ответы для собеседования по Kotlin. Часть 1
Вопросы и ответы для собеседования по Kotlin. Часть 2
Вопросы и ответы для собеседования по Kotlin. Часть 3 — вы находитесь здесь
Вопросы и ответы для собеседования по Kotlin. Часть 4

Долгое время виджеты были отличительной чертой Android, пока на айфонах царили стройные ряды одинаковых иконок. Но в 2020-м они масштабно пришли и на iOS. Обычно мобильные разработчики знают одну из этих платформ, но у Анны Жарковой (@anioutka) есть опыт работы с обеими — и она выступила у нас с докладом о виджетах на обеих.
Сейчас мы готовим конференцию Mobius 2023 Spring, где также освещаются обе платформы, а Анна выступит с новым докладом. И в ожидании этого решили сделать для Хабра текстовую версию доклада о виджетах (видеозапись также прилагаем). Далее — текст от лица спикера.

Кое-что на ближайшей конференции Mobius будет необычно. Два дня она будет проходить в Москве (с возможностью онлайн-участия), а ещё два дня в интернете — такого масштабного сочетания офлайна с онлайном на Mobius ещё не было.
А кое-что остаётся привычным: это по-прежнему конференция по мобильной разработке, где в докладах не вода и общие темы, а техническая конкретика. За четыре дня докладов будет много, сейчас они уже известны — и мы представляем Хабру все их описания. Для удобства снабдили здесь описания значками ? (Android), ? (iOS), ♾️ (не привязанные к платформе), ?(Flutter). И поделили на тематические блоки (но порой это деление условное, один доклад может хорошо подходить в две категории сразу).

Нередко управление «мобильным» CI/CD ложится на плечи разработчиков, хотя это и не относится к их основным обязанностям напрямую. Тогда возникают проблемы, связанные со снижением производительности и неэффективным расходованием времени.
Чтобы оптимизировать управление «мобильными» CI/CD, важно иметь в команде человека, который разбирается и в мобильной разработке, и в CI/CD. Идеальная ситуация, когда это бывший разработчик мобильных приложений, который перешёл на должность инженера. Но, конечно, такой человек есть не везде. В статье дальше делимся правилами и рекомендациями, которые помогут избежать трудностей при настройке Jenkins для Android-проектов.

Тестирование приложений Jetpack Compose обычно основано на использовании библиотеки Compose UI Test и создании юнит-тестов поверх библиотек мокирования или DI. Однако этот подход требует наличия эмулятора и не всегда применим для использования в конвейере CI/CD, где обычно используется Robolectric вместо настоящего Android Runtime. При этом нередко в тестах используется скриншотное тестирование (например, через использование captureToImage в Compose UI Test) и сравнение рендеров с образцом, что изначально недоступно в Robolectric из-за особенностей рендеринга. В этой статье мы рассмотрим использование библиотеки Roborazzi, которая решает эту проблему, совместно с новым подходом к архитектуре Jetpack Compose приложений, которая была предложена Slack в библиотеке Circuit.


Наверное, каждый Android-разработчик на этапе обучения или в процессе выполнения задач в коммерческом проекте задумывался о создании своей CustomView без использования сторонних библиотек, с собственной отрисовкой, анимацией, а также хорошей оптимизацией, чтобы CustomView адаптировалась под переданные ей размеры, правильно отображалась в независимости от экрана пользователя.
Самый верный и действенный способ постичь Дзен в реализации CustomView является работа над диаграммами и графиками. Чем сложнее будет задуманная диаграмма, тем больше этапов будет пройдено в её реализации: начиная от собственного расчета размеров, заканчивая многоступенчатой анимацией при отрисовке. Каждый из вас способен сделать что-то своё, но порог входа для этого, я соглашусь, достаточно высокий. Поэтому необходим некоторый пример, который поможет разобраться в этом темном лихолесье неизвестности.
Что ж, в этой статье мы пройдем все этапы реализации своей CustomView, с подробным описанием шагов, чтобы каждый смог повторить такое в своих проектах. Мы будем реализовывать кольцевую диаграмму для отображения какой-либо статистики, добавим много возможностей кастомизации диаграммы под любые виды задач, а также приправим это дело красивой анимацией отрисовки и сохранением состояния. Все будет написано на языке программирования Kotlin.
В этой статье я хочу показать как создавать виджеты с состоянием для Android приложения с помощью Glance Compose, обновлять каждый экземпляр отдельно от остальных, настраивать их с помощью конфигурационной активити и закреплять экземпляры из приложения. Пример того, что должно получиться вы можете видеть на видео.

В предыдущей статье я упоминал кейс приложения «Бланк». Этот материал — логическое и более глубокое продолжение.
В официальном приложении «Бланк» на Android мы работали над пользовательским интерфейсом чата поддержки. Конечная цель — сделать удобный и отзывчивый UI. Задача – интегрировать Chatwoot с приложением с помощью Jetpack Compose.
Стек технологий: Android Studio, Kotlin, Jetpack Compose, Chatwoot.

Работа со списками в Android проектах — это база. Большинство проектов использует RecyclerView из-за его гибкой настройки и переиспользования ViewHolder'ов. Но даже так существуют библиотеки, которые улучшают работу с RecyclerView.Adapter и RecyclerView.ViewHolder с более удобной компоновкой большого числа элементов списка.
Писать свою библиотеку это увлекательно и познавательно. Ты одновременно решаешь свои задачи и глубже познаёшь инструменты, которыми пользуешься.

Ultron — самый простой фреймворк для разработки UI тестов Android.
В данной статье я познакомлю вас с малоизвестным фреймворком, который позволит вам облегчить android ui тестирование.

В этой статье мы возьмём интервью у сооснователя проекта Coffee&Code, Владислава Мокрова. Coffee&Code — уникальный проект, объединяющий русскоговорящих мобильных разработчиков по всей России и за её пределами. Владислав расскажет нам о своём проекте, поделится подробностями с прошлых встреч, организованными Coffee&Code, и планами на будущее. Приятного чтения!

Всем привет! Меня зовут Вадим Джибалов, и я Android-разработчик в AGIMA. Свою первую статью на Хабре я посвящаю простой, но важной теме — брейкпоинты. Пишу я её для джуниоров, которые только знакомятся с отладкой. Мы уделяем много внимания развитию наших стажеров и росту специалистов. А когда только начинаешь программировать, найти даже элементарные вещи бывает нелегко. Мы готовы помочь.

Привет!
Меня зовут Стефан Серхир. Я мобильный разработчик в KTS. Пишу под Android, iOS и КММ (Kotlin Multiplatform Mobile) и веду курсы в школе Metaclass.
Недавно мы провели вебинар, в котором разобрали Model-View-Intent (MVI) в KMM на практике и посмотрели, как это выглядит в коде iOS и Android. Это статья написана по мотивам этого вебинара. Подход MVI в KMM полезен, потому что:
— Удобно шарить бизнес-логику между всеми платформами
— Можно выделять отдельный функционал в фича-модули
— Сам MVI позволяет легко разделять экран на различные состояния и менять их в зависимости от действий пользователя
— MVI очень легко ложится на Jetpack Compose (Android) и SwiftUi (iOS)
В статье я расскажу, что такое MVI и KMM вообще, опишу преимущества и недостатки MVI и разберу на практике подход MVI в KMM.

Время летит быстро и технологии не стоят на месте, а пользователи идут ещё на полкорпуса впереди технологий, постоянно запрашивая всё новые функции для Vivaldi. В результате браузер постепенно превращается в мощный инструмент для работы в сети, обладающий массой функций. Пример тому - Vivaldi 6.0 для Android.
На связи Саша Хрущев, технический директор IT-компании WINFOX. Недавно мы сделали кроссплатформенное приложение для прикладных инженеров крупной компании на самом современном фреймворке от Google. Почитайте, чем хорош Flutter, какие возможности разработки он открывает и почему заказчикам выгодно использовать этот фреймворк.