Все потоки
Поиск
Написать публикацию
Обновить
323.18

Android *

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

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

Тёмный лес разработки для нестандартных устройств: как войти и не заблудиться

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

Если разработку под устройства можно сравнить с тёмным лесом, то как в нём не заплутать?

Привет, путник! Меня зовут Денис Малых, я работаю в Яндексе и руковожу разработкой общих компонент для платформы, на которой работают наши устройства. А ещё — я член программного комитета конференции AppsConf, где мы обсуждаем разработку под мобильные ОС. В этой статье поделюсь опытом разработки под нестандартные устройства: чем она принципиально отличается от привычной мобильной разработки, и что нужно уметь, чтобы разрабатывать «умные вещи».

Читать далее

ServerSocket для IPC в Android и примеры межпроцессного взаимодействия

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

Всем привет! Меня зовут Евгений Шувагин, я уже шесть лет занимаюсь Android-разработкой, а последние два года работаю в команде Биометрических продуктов. Идея для статьи возникла из желания разобраться, как организовать общение между браузером и Android-приложением для передачи данных. В поисках удобного решения я обратил внимание на ServerSocket — простой и гибкий способ локального взаимодействия без лишних сложностей.

Читать далее

Шпаргалка: Kotlin suspend функции

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.4K

Suspend-функции — это специальные функции в Kotlin, предназначенные для работы с корутинами. Они позволяют приостанавливать выполнение кода без блокировки потока, что делает их идеальными для асинхронных операций (например, сетевых запросов, работы с базой данных или долгих вычислений). Ключевое слово suspend указывает компилятору, что функция может быть «приостановлена» и позже возобновлена, не занимая поток исполнения.

Мы можем вызвать suspend функцию только из корутины или из другой suspend функции и это гарантирует нам, что мы будем иметь доступ к Continuation и соответственно сможем написать правильную suspend функцию, которая сможет передать результат своей работы через объект Continuation.

Пока звучит путанно, но на примерах всё встанет на свои места.

Пример объявления:

Читать далее

Мобильная разработка за неделю #578 (3 — 9 марта)

Время на прочтение4 мин
Количество просмотров1.6K
В этом выпуске окончательная и бесповоротная очистка Xcode от ненужных файлов, плагин для кастомных дизайн-систем и мобильная архитектура, новый (почти нативный) кроссплатформенный фреймворк, одинаковые приложения от студентов, жизнь и смерть триалов в Южной Корее и многое другое. Заходите!

Читать дальше →

Kelp — IDE-плагин для кастомных дизайн-систем на Jetpack Compose

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров3.9K

Kelp — мощный плагин для Android Studio, разработанный для улучшения поддержки кастомных дизайн-систем на Jetpack Compose в Android Studio.

Основные фичи:
🔧 Настраиваемые иконки для компонентных функций
🎨 Иконки дизайн-системы
🌈 Предпросмотр цветов
📱 Интеграция демоприложения (автоматическое скачивание и установка APK-файла и deeplinking на страницу компонента)
🖼️ Рендеринг изображений в KDoc
⌨️ Шаблоны кода (Live Templates)

И 🐘 Gradle Plugin, скачивающий демоприложение и проверяющий наличие IDE-плагина.

Читать далее

Декомпозиция задач: как разработчику съесть слона?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4K

Ответьте себе на вопрос, бывает ли такое, что в процессе выполнения задачи на разработку вы понимаете, что не укладываетесь в срок, сталкиваетесь с чем-то, что не учли заранее, какие-то доработки занимают больше времени и усилий, чем вы планировали? Из-за нарастающей сложности задач в процессе их выполнения вы заводите дополнительные технические задачи на исправление, оставляете по коду множество TODO и комментариев в надежде позже вернуться к задаче и сделать ее качественнее? 

Читать далее

Студенты постоянно создают одинаковые приложения. Я исправил это недоразумение

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров18K

Мне надоело, что приложения копируют друг друга и тонут в бесполезной функциональности. Я потратил 15 месяцев, чтобы создать идеальную платформу для студенческих расписаний, на основе которой любой студент сможет построить интеграцию со своим учебным заведением за пару вечеров. Приложение интегрируется с календарём, имеет наибольшее количество полезных настроек и уникальных фичей среди конкурентов и не имеет какой-либо навязчивой рекламы.

Почему это приложение обязано победить?

Как мы ускорили работу с базой данных в Android-приложении

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров3.2K

Всем привет, меня зовут Кирилл и я Android-разработчик в Scanny. В этой статье я поделюсь опытом оптимизации работы с SQLite + Room в нашем Android-приложении, который помог нам значительно сократить время выполнения запросов. Расскажу как очевидные ошибки иногда остаются незамеченными. Давайте разбираться вместе!

Читать далее

Delight SQL Viewer: отладка SQLDelight-базы прямо в приложении

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1K

Привет! Хочу поделиться инструментом, который значительно упростит жизнь тем, кто использует SQLDelight для работы с базами данных в Kotlin Multiplatform-проектах. Этот инструмент называется Delight SQL Viewer.

Читать далее

Мобильная разработка за неделю #577 (24 февраля — 2 марта)

Время на прочтение4 мин
Количество просмотров1.1K
В новом дайджесте укрощение анимаций и оживление смартфона, эффективный бэкграунд, уродливый код и глупые вещи, потери денег от плохого дизайна, индекс цифрового рынка за 4 квартал, Gemini Code Assist для всех и многое другое. Заходите!

Читать дальше →

Эффективный бэкграунд: организация стабильной фоновой работы в связке двух мобильных медтех приложений

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров1K

Всем привет! Меня зовут Антон, я — ведущий мобильный разработчик в компании DD Planet. В статье я поделюсь опытом нашей команды по организации стабильной фоновой работы в мобильном медтех-приложении, предназначенном для взаимодействия с медицинским оборудованием.

Читать далее

Чем полезен Server Driven UI

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.1K

Привет! Меня зовут Олег Иванов, я руководитель мобильной разработки в Московском кредитном банке. Сегодня поговорим о Server Driven UI вот по такому плану:

что это вообще за технология

из чего она состоит

рассмотрим наши подходы к ее реализации

Начнем с терминологии:

SDUI (Server Driven UI) — это пользовательский интерфейс, управляемый сервером.

Что такое пользовательский интерфейс? Среда, с помощью которой пользователь взаимодействует с программным обеспечением через приложения. Обычно он состоит из множества экранных форм, которые и ведут пользователя по флоу до какого-то определенного результата.

Читать далее

Как оживает смартфон: Android на старте

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

Наши с вами телефоны включались бессчетное количество раз. Возможно, вы прямо сейчас запустили смартфон, чтобы прочитать эту статью. Ну а для тех, кто занимается разработкой, процесс включения устройств — обычная часть работы, которая повторяется десятки раз в день.

Что же на самом деле происходит в момент загрузки? Какие этапы преодолевает система от простого нажатия кнопки включения до появления интерфейса? И как устройство готовится к полноценной работе?

Вместе с Android-разработчиком Артёмом разберёмся, что скрывается под капотом Android и проследим процесс его запуска. Не пропустим ни шагу!

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

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

Мобильная разработка за неделю #576 (17 — 23 февраля)

Время на прочтение4 мин
Количество просмотров1.5K
В этом выпуске учет времени с помощью библиотеки Charts и анализ Android-фич на доступность и внедрение accessibility, что такое перерисовка и как с ней бороться, реализация кастомной прокрутки и бесплатный сервис Build Distribution, «Uber с пушками» от Никиты Бира, LLM на реальных задачах фриланса и многое другое. Заходите!

Читать дальше →

Неожиданное использование «Частного пространства» (Private space) в Android 15

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

Используем "Частное пространство" (Private space) в Android 15, как второй профиль для приложений, которые слишком много просят

Читать далее

R8: Шакалья работа (уменьшение apk через правки R8)

Уровень сложностиСложный
Время на прочтение3 мин
Количество просмотров1.4K

По умолчанию для минификации имени класса в R8 используются цифры и английский алфавит. Но что будет если вместо трех символьных строк, которые будет занимать три байта, использовать один двухбайтовый символ?

Читать далее

Очумелые ручки: как я превратил старый смартфон в игровую консоль с возможностью звонить

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

Осторожно: эта статья точно будет хабратортной, ведь в ней мы смоделируем, спроектируем и запрограммируем своё видение N-Gage 2! Я очень старался сделать статью интересной даже для тех читателей, кто не разбирается в теме 3D-печати и программирования микроконтроллеров :-)

Я очень люблю ретро-игры и игровые консоли. Иногда я люблю позалипать в какую-нибудь классику с NES, Sega Mega Drive или, например, PSP. Однако особое место в моём сердечке занимает игровой телефон Nokia N-Gage, который, к сожалению, не получил продолжения, как и его более современный собрат — Sony Ericsson Xperia Play. Недавно я пересматривал свою коллекцию девайсов и обнаружил на полочке Galaxy S4 Mini. И тут я подумал: а что если...

Читать далее

Шпаргалка: как выглядит Kotlin Coroutine без макияжа

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2K

При создании и запуске корутины компилятор создаст специальный класс

1.      Continuation

Continuation (продолжение) — это объект, который представляет собой состояние выполнения корутины и позволяет возобновить её выполнение после приостановки.

Continuation — это механизм, который позволяет Kotlin Coroutines приостанавливать и возобновлять выполнение. Он является ключевым элементом реализации suspend-функций и асинхронного программирования в Kotlin.

Когда корутина приостанавливается (например, при вызове suspend-функции), её состояние сохраняется в объекте Continuation. Этот объект содержит информацию о том, где именно корутина была приостановлена, и как её можно продолжить после завершения асинхронной операции.

В Kotlin Continuation — это интерфейс, который выглядит следующим образом:

Читать далее

Kotlin Coroutines под капотом: CoroutineContext и CoroutineScope

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

Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!

Читать далее

Анализ Android-фич на доступность и внедрение accessibility в процесс разработки

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

Всем привет! Меня зовут Марина. Я Android-разработчик в VK. В этой статье я расскажу о нашей совместной работе с дизайнерами: как мы встали на сторону людей с ограниченными возможностями, которые потребляют наш контент с помощью скринридера, проанализировали фичи нашей команды и попытались сделать функциональность доступной.

Читать далее

Вклад авторов