Обновить
203.16

Android *

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

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

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

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

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

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

Читать далее

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

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

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

1.      Continuation

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Как мы сокращали размер JSONʼа в SDUI

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

Привет, хабрачитатели! Server-Driven UI (SDUI) — это подход, при котором сервер управляет отображением интерфейса на клиенте. Важное преимущество SDUI — возможность внедрять изменения без выпуска новых версий приложений. Но это же преимущество есть его недостаток, ведь передача всех данных по сети зависит от качества соединения и увеличивает объём данных. 

Качество связи мы не можем контролировать, а вот уменьшить количество передаваемой информации посредством сокращения JSON, — вполне.

Читать далее

Мобильная разработка за неделю #575 (10 — 16 февраля)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.4K
В новом дайджесте дизайн-система в iOS за 5 минут и параллелизм в SQLite для Android, детские ошибки при сборке и дорожная карта перехода на KMP, ошибка во встроенных покупках ценой в Final Fantasy Crystal Chronicles, техосмотра автомобилей с помощью ИИ и многое другое. Подключайтесь!

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

Тестовые джуна (Android)

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

В 2022 г. осенью я решил, что я хочу поменять профессию и стать Android‑разработчиком. К тому моменту я имел более 6 лет опыта работы в области охраны труда, в основном, на производственных предприятиях.

Мой друг в тоже время начал учиться на курсах Яндекс Практикума, также на Android‑разработчика и объяснил как устроено обучение. Я начал обучение в Практикума в конце октября 2022 г. и закончил его в декабре 2023 г.

Это было непростое время. Я приезжал на работу каждый день к 7:00 и тратил 2 часа на обучение, после начинался мой рабочий день. После работы я приезжал домой, ужинал и остаток времени до сна я посвящал обучению.

В декабре 2023 г. я решил, что я готов начинать искать полноценную работу Android‑разработчиком. Я откликался только на те вакансии, в которых было написано, что не требуется опыт. Если кратко: 19 откликов (сюда не входят отклики на стажировки крупных компаний), 5 тестовых заданий, 3 оффера. Из 3 офферов: от одного я отказался из‑за условий (черная небольшая з/п, я — единственный андроид‑разработчик и т. п.).

Первый адекватный оффер я принял и перед выходом на него я получил второй оффер. В итоге на месте по первому офферу я проработал 2,5 дня (с 01 апреля по 03 апреля 2024 г.) и по собственному желанию ушёл в компанию приславшую второй оффер.

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

Читать далее

Тайны рейтингов: как добиться стабильно высокого рейтинга Android-приложения?

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

По данным исследований (Data.ai, Sensor Tower, Statista), Android-приложения имеют на 10-30 % более низкие оценки, чем iOS-аналоги. Например, приложение может получить 4,5 на iOS и 3,5-4,0 на Android.

Меня зовут Анастасия Симонова, я Android-разработчик в команде Домклик. Поделюсь нюансами разработки под Android и предложу некоторые решения для избежания проблем в будущем. Готовы? Приступим!

Читать далее

SAST приложений под Android: делаем код безопаснее

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

Безопасность мобильных приложений — один из ключевых аспектов разработки, который нельзя оставлять без внимания. Уязвимости в коде могут привести к утечке данных, компрометации системы и другим серьёзным последствиям. Чтобы обнаружить и устранить риски ещё на этапе написания кода, разработчики используют SAST (Static Application Security Testing) — метод статического анализа безопасности.

В этой статье мы разберём, как работает SAST, какие инструменты помогут автоматизировать проверку кода Android-приложений и как их интегрировать в процесс разработки.

Читать далее

Управление зависимостями: как работать с Koin scopes в Jetpack Compose Navigation

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

Привет, Хабр! Меня зовут Артем и я автор и ведущий YouTube и Telegram каналов Android Insights.

В этой статье я рассмотрю, как использовать Koin scopes в связке с Jetpack Compose Navigation, чтобы эффективно управлять зависимостями на разных уровнях навигационного графа.

Читать далее

Склеиваем Flutter и Live Activities: Часть 1 – Android

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

Привет хабр!

Меня зовут Липатов Богдан, я Middle Flutter-разработчик, автор блога и статей на своем сайте, где мои материалы и инсайты публикуются в первую очередь.

Замечали ли вы удобные уведомления, которые показывают всю важную информацию прямо на экране блокировки? Например, через сколько приедет такси, где сейчас курьер с заказом или сколько времени осталось до завершения задачи. Да? Я тоже! В этой статье я покажу и расскажу как создать такое же при помощи наших рук и Flutter.

Читать далее

Автоматизация сборки и релиза Android-приложений через GitHub Actions

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

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

Читать далее

Развитие Android глазами разработчика

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

Меня зовут Андрей Данилов, под Android начал разрабатывать в далеком 2012 году. Успел поработать примерно везде — в крошечном стартапе, маленькой продуктовой компании, аутсорсах и крупных компаниях, таких как Авито, Ситимобил, Яндекс. Успел выступить примерно на десятке митапов и конференций. Сейчас член Программного комитета конференции Apps conf X. В данный момент руковожу парой команд в Т-Банке.

Довольно много времени прошло с 2007 года, когда Android стал доступен для разработчиков. С тех пор прошло почти 18 лет, за это время изменилось примерно все — железо стало мощнее, интернет быстрее, IDE умнее, а проекты сложнее. Предлагаю оглянуться назад и посмотреть что же именно изменилось с тех пор для разработчиков.

Читать далее

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

Детские ошибки при сборке Gradle-приложений

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

Привет! Я Никита, сейчас разрабатываю мобильный банк под Android, много работаю с Gradle, и мне это нравится.

Сборка приложений для меня уже рутина — на пет-проектах и на работе. Но однажды я задумался, а можно ли ускорить сборку? Если да, то как и насколько: на доли секунд или это будет ощутимо? Как именно ускорять, ведь есть куча версий Gradle, плагины, бинарный интерфейс и всё такое?

А потом я просто взял и попробовал все известные мне варианты, замерил скорость сборок и сделал выводы. Заглядывайте под кат, расскажу, что именно сработало и надо ли вам подкручивать параметры своей сборки или срочно обновлять Gradle.

Читать далее

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.5K
В этой подборке рисуем карты с помощью Swift Charts и графики сна с помощью Compose, разбираемся с Swift Concurrency и плагинами Android Studio, бесплатными инструменты для создания иконок, трендами мобильных приложений и многим другим. Подключайтесь!

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

Что мы делали в 2024-м? Видео — бесплатно и без регистрации

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


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

Будет много видео 😁

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

Современные подходы к управлению UI: low-сode & Backend-Driven UI

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

Привет, меня зовут Михаил Шевченко. В Авито я проектирую и разрабатываю backend low-code платформы Bricks. В этой статье рассказываю о том, почему в Авито было принято решение развивать собственные low-code-решения и Backend-Driven UI, объясняю их устройство и делюсь достигнутыми результатами.

Читать далее

Безопасное обновления состояния в ViewModel

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

Это краткая заметка о подходе, который я выработал для себя, чтобы обновлять состояние экрана при использовании MVI-like паттерна в ViewModel.

Сразу оговорюсь, что классический "полноценный" MVI подразумевает использование редьюсеров, которые решают часть проблем, описанных в этой заметке, но сугубо на мой вкус, этот подход заставляет писать много бойлерплейтного кода.

Читать далее

Плагины: автоматизация разработки в продуктах JetBrains (на примере Android Studio)

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

Замечали, что при написании кода, очень часто приходится выполнять одни и те же действия, например, создавать одни и те же файлы, проводить одну и ту же настройку для разных проектов и тд? Это натолкнуло меня на мысль: «Можно ли упростить процесс за счёт автоматизации?».

Изначально была идея создать десктопное приложение для упрощения настройки и выполнения рутинных задач, однако возникло ограничение — Android Studio не предоставляет открытого API. Это очень усложнило бы работу, т.к. пришлось бы вручную прописывать работу с файлами, использование горячих клавиш и тд, поэтому следующим вопросом было: «Как автоматизировать разработку непосредственно внутри самого Android Studio?» Ответ пришел сам собой — использовать плагины.

Читать далее

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.2K
В новом дайджесте рассказываем о том, как Android управляет памятью, и смотрим под капот потокам, объясняем нюансы разработки PWA для Банка и программируем открытиями, исследуем удаление приложений в 2024 году, смешиваем цвета, ищем путь к стабильности и многое другое. Подключайтесь!

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