Обновить
49.47

Kotlin *

Статически типизированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Kotlin Symbol Processing. От теории до практики

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров15K

Я расскажу в этой статье о Kotlin Symbol Processing, также известном как KSP.

Сначала обсудим теоретические основы работы KSP, после, конечно же, перейдём к практике. На примере небольшой задачи, подобной той, что мы решаем с помощью KSP в нашей компании, покажу, как анализировать код с помощью KSP, генерировать файлы, соблюдать контракты, описанные разработчиками KSP. 

Читать далее

RecyclerView для начинающего Android-разработчика

Время на прочтение13 мин
Количество просмотров54K

Здравствуй, дорогой читатель. Каждый Android-разработчик сталкивался с задачей, в которой необходимо создать какой-то список, для отображения данных. Данная статья поможет новичку разобраться с таким очень важным и интересным компонентом, как RecyclerView.

В статье будет рассказано о том, почему необходимо использовать именно RecyclerView, описаны его основные компоненты и также будет разобран базовый, не очень сложный пример.

Статья предназначена для новичков, которые хотят разобраться со списками в Android.

Все материалы и исходный код можно найти здесь.

ListView или RecyclerView?

Для реализации какого-то прокручиваемого списка у Android разработчика существуют два пути - ListView и RecyclerView.

Первый виджет интуитивно понятен и довольно прост. Но, к сожалению, имеет много недостатков, например, ListView позволяет создать только вертикальный список.

В свою же очередь RecyclerView "из коробки" предоставляет гораздо больше инструментов для кастомизации и оптимизации списка, чем ListView. Если кратко характеризовать RecyclerView, то можно сказать, что это список на стероидах.

RecyclerView работает следующим образом: на экране устройства отображаются видимые элементы списка; при прокрутке списка верхний элемент уходит за пределы экрана и очищается, а после помещается вниз экрана и заполняется новыми данными.

Читать далее.

Маленький dsl

Время на прочтение4 мин
Количество просмотров2.3K

Пересел недавно с джавы на котлин и начал осваивать новые сахарные возможности. На проекте у нас во многих местах используются дсл. Я люблю подобные штуки и решил освоить, как и из чего это состоит.

Читать далее

Разработка игр на Kotlin Native. Часть 1

Время на прочтение9 мин
Количество просмотров14K

Возможность компиляции Kotlin в нативный код, который может использовать С-библиотеки позволяет разрабатывать мультимедийные приложения и игры на основе библиотек SDL, GTK/OpenGL, GDX и специализированных библиотек для Kotlin (например, KorGE). В этой статье мы последовательно создадим кроссплатформенную реализацию Pacman (как для мобильных платформ, так и для компьютеров на Windows / Linux / MacOS).

Читать далее

Android vs iOS: кто быстрее покорит Эверест?

Время на прочтение2 мин
Количество просмотров16K

Привет всем мобильным разработчикам! Мы одинаково любим Android и iOS. Но у каждого свои предпочтения. Предлагаем определить фаворита в дружеском поединке. Для этого перенесёмся в Гималаи и покорим Эверест. Выберите команду и постарайтесь дать как можно больше правильных ответов, чтобы добраться до вершины первыми. На весь тест 10 минут.

Взобраться на Эверест

Добавляем поддержку Flatpak в Compose Desktop

Время на прочтение7 мин
Количество просмотров1.8K

Те, кто делали мультиплатформенное приложение с помощью Compose Multiplatform, наверное уже сталкивались с тем, в как публиковать приложение. Для Linux на текущий момент доступны следующие форматы: Deb - "нативные" пакеты для Debian-подобных дистрибутивов; Rpm - такие же пакеты для Fedora, RHEL; AppImage - portable приложения(одним файлом). Недостаток первых двух - заточенность только под одну платформу(Debian и Fedora соответственно), второго - отсутствие пакетного менеджера в абсолютном большинстве дистрибутивов. Негодуя с этого, я решил внедрить compose-приложение в Flatpak - пакетный менеджер для sandboxed приложений. Sandboxed apps - приложения, которые по умолчанию не имеют доступа к файлам пользователя и другим настройкам. Flatpak дает уверенность, что та или иная функция/бинарник присутствуют в системе и могут быть использованы. Также с помощью Portals, которые встроены в Flatpak, приложение может безопасно и независимо осуществлять некоторые операции вроде доступа к камере, показа уведомлений и другого. Как вы могли видеть ранее, поддержки Flatpak в Compose Multiplatform нет.

Читать далее

Как можно хранить стабы для MockWebServer в Android-тестах

Время на прочтение11 мин
Количество просмотров6.8K

Привет, меня зовут Николай. Моя должность в Delivery Club — QA Automation Engineer в мобильной платформенной команде. Эта статья будет о том, как мы подменяем и храним ответы бэкенда при UI-автоматизации тестирования курьерского Android-приложения.

Читать далее

Как сделать удобное взаимодействие с Kotlin из Swift: решение с помощью плагина MOKO KSwift

Время на прочтение8 мин
Количество просмотров1.9K

Привет! На связи Алексей Михайлов, технический директор компании IceRock Development. В прошлой статье я рассказывал о том, какие проблемы есть в работе с Kotlin со стороны Swift, и рассматривал способы их решения. В этой статье подробно остановлюсь на третьем решении, которое мы используем на практике. Это Gradle-плагины, а именно плагин, который мы разработали сами.

Читать далее

Custom View — разбиваем функционал

Время на прочтение4 мин
Количество просмотров5.1K

В этой статье пойдет речь о вынесении UI в отдельный блок, компоновкой стандартных элементов.

Я расскажу о проблемах с которыми встретился сам, для искушенных пользователей, прилагаю ссылку на более подробный ресурс.

Основной пример будет рассмотрен на простой задаче когда нам необходим Switch в котором будет и текст и описание.

Читать далее

Все библиотеки имеют фатальные недостатки, или Как мы изобретали Retrofit-подобный велосипед для JSON-RPC протокола

Время на прочтение23 мин
Количество просмотров4.7K

Привет, Хабр! Меня зовут Юра Кучанов, работаю Android разработчиком в Garage Eight и сегодня хочу рассказать о том, как мы делали Retrofit-подобную библиотеку для JSON-RPC протокола. Началось всё с того, что нам потребовалось для общения сервера и Android приложения использовать протокол JSON-RPC. Что значит “потребовалось”? Если кратко – бэкендеры предложили, а сильных аргументов против, в сущности, не нашлось =) Возможно, тут сработала, например, вот эта статья с хабра про выбор между REST и JSON-RPC. В итоге я пошёл искать библиотеки в сети и… И обнаружил, что готовые решения не подходят (так как там, конечно же, есть хотя бы один фатальный недостаток). В итоге сделал свою библиотеку в стиле Retrofit. Ниже расскажу, почему не подошли готовые решения, как реализовал своё через рефлексию и как копался в исходниках Retrofit и OkHttp для реализации нужного нам функционала.

Читать далее

Spring. Экспертное мнение о плюсах и минусах самого популярного Java-фреймворка

Время на прочтение7 мин
Количество просмотров22K

Spring является самым популярным инструментом при разработке промышленных приложений на Java — от больших монолитных приложений до микросервисов. Сразу стоит отметить, что под термином Spring мы понимаем не столько Spring Framework, сколько экосистему и Spring Boot. Всё, что позволяет нам «легко и непринужденно» использовать самые распространенные библиотеки из мира Java, зачастую даже не разбираясь в их настройках (всё настроено уже за нас).

Мы попросили Ильназа Гильязова, Java-разработчика с большим опытом, разобрать ключевые плюсы, минусы, проблемы и риски использования Spring, а также возможные альтернативы.

Читать далее

Как сделать удобное взаимодействие с Kotlin из Swift: обзор проблем и решений

Время на прочтение14 мин
Количество просмотров3.9K

В июне 2022 года наш технический директор Алексей Михайлов выступал на конференции мобильных разработчиков Mobius — рассказывал о том, какие есть проблемы в работе с Kotlin со стороны Swift, и рассматривал способы их решения. Эта статья — первая часть транскрипта этого выступления.

Читать далее

Kotlin Extensions для Android проекта

Время на прочтение5 мин
Количество просмотров4.6K

Всем привет! Меня зовут Николай Попов. Сегодня я поделюсь с вами опытом использования одной из самых классных фишек языка Kotlin, а именно — функции расширения или Kotlin Extensions. Эти функции позволяют расширять базовый класс без необходимости наследования или использования шаблонов проектирования, таких как декоратор. Использование функций расширения позволяет избавиться от написания однотипного кода, также сделать его простым и лаконичным.

Читать далее

Ближайшие события

Умный BottomNavigationView без боли: настройка нижнего меню навигации с динамической конфигурацией в Android-приложении

Время на прочтение9 мин
Количество просмотров8.3K

Привет, Хабр! Меня зовут Сергей Велеско, я Android-разработчик. Сегодня трудно представить сколько-нибудь серьезное мобильное приложение без нижнего меню навигации. В этой статье я поделюсь опытом, как гибко и приятно организовать настройку BottomNavigationView и научить его загружать свою конфигурацию из удаленного источника.

Читать далее

Как составить базу знаний (Как не умереть в море обучающих материалов )

Время на прочтение4 мин
Количество просмотров15K

О том, как не потеряться в огромной куче информации и как ее структурировать (не скажу что правильно, но хоть какой то шаблон).

Так же много полезных ссылок, как в самой статье, так и в базе знаний (кликабельность).

Оценить "базу знаний"

Неочевидное про Fragment API. Часть 4. Анимации и меню

Время на прочтение6 мин
Количество просмотров7.5K

Всем привет! С вами снова Максим Бредихин, Android-разработчик в Тинькофф. Мы добрались до заключительной части серии про интересные моменты из Fragment API. Занимайте лучшие места, мы начинаем!

Читать далее

Найдите 10 отличий. Тестируем сравнением снимков экрана с образцом

Время на прочтение5 мин
Количество просмотров2.9K

При тестировании мобильных приложений нередко возникает необходимость проверить корректность верстки визуальных элементов и их правильное отображение в различных состояниях приложения. К сожалению, возможностей библиотек тестирования не всегда достаточно для автоматизации проверки визуальных элементов и, в лучшем случае, тестировщик получает возможность проверить размеры элемента, наличие перекрытий с другими элементами и внутренние свойства View, но это не всегда помогает дать однозначный ответ - не была ли сломана верстка в последнем обновлении? Здесь на помощь приходят инструменты для тестирования сравнением с образцом и в этой статье мы рассмотрим подходы к тестированию View и Composable (для Jetpack Compose) с использованием собственных механизмов библиотек и сторонних решений для определения разности между фактическим и эталонным снимков.

Читать далее

Allure TestOps: «Нестандартный» сценарий использования

Время на прочтение9 мин
Количество просмотров7.7K

Привет. Меня зовут Николай, я QA Automation Engineer в мобильной платформенной команде Delivery Club. Эта статья будет о том, как мы интегрировали Allure TestOps (далее Allure TO) в регрессионное тестирование нескольких мобильных приложений и ушли от TestRail. Альтернативу TestRail выбирали мои коллеги, и эту часть мы упомянем вскользь.

Этот материал будет интересен тем, кому предстоит интегрировать мобильные автотесты в Allure TO и хочется узнать про потенциальные проблемы. А также, возможно, тем, кому не полностью подходят стандартные сценарии использования этой TMS. Цель статьи — не дать конкретное решение, а продемонстрировать наш сценарий использования нетипичных возможностей TMS с небольшими вставками кода.

Читать далее

Настраиваем память JVM-приложения в Kubernetes

Время на прочтение6 мин
Количество просмотров27K

Друзья, всем привет! Как известно, в Kubernetes у каждого pod’а есть ограничение на  использование памяти (limits.memory), и, как показывает опыт, далеко не всегда очевидно, как JVM-приложение интерпретирует эту настройку, что порой может приводить к OOMKill.

 

Читать далее

Неочевидное про Fragment API. Часть 3. Навигация

Время на прочтение8 мин
Количество просмотров17K

Всем привет! На связи Максим Бредихин, Android-разработчик в Тинькофф. А это — третья статья об интересных моментах из Fragment API, о которых вы, возможно, не знали.

Наливайте чай, садитесь поудобнее и приятного чтения!

Читать далее