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

Android *

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

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

Крутить или не крутить?

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

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

Недавно я узнал о сообществе людей, предлагающих легкий способ войти в IT-индустрию. Самым сложным этапом на этом пути считается процесс интервью. Пройдя его, вы получите заветный оффер и работу мечты. Для новичка, который только начинает свой путь, это может показаться идеальным решением.

Читать далее

Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях

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

Всем привет!

Я — Дарья Касьяненко, эксперт Центра непрерывного образования факультета компьютерных наук НИУ ВШЭ.

Сейчас мир Android‑разработки активно меняется, но многие из используемых технологий остаются актуальными, и их стоит знать каждому начинающему разработчику. Мой коллега Даниел Цуркан, эксперт и преподаватель курса «Android‑разработчик на Kotlin» Центра непрерывного образования ФКН, подробно расскажет о компонентах View и ViewGroup, которые лежат в основе построения пользовательских интерфейсов Android‑приложений.

Эта статья станет полезной как для тех, кто только начинает свой путь в Android‑разработке, так и для junior‑разработчиков, которые хотят углубиться в детали создания интерфейсов на базе View и ViewGroup. В статье разберем ключевые особенности, с которыми сталкиваются разработчики при создании пользовательских интерфейсов с использованием View, рассмотрим актуальность этого подхода для разработки визуальной части Android‑приложений, а в качестве наглядного примера — создадим экран авторизации пользователя.

Читать далее

Решение проблемы race condition в Kotlin корутинах

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

Синхронизация корутин в Android имеет огромное значение для обеспечения безопасности и эффективности многопоточности. Коррутины упрощают управление асинхронными задачами, но без должной синхронизации могут возникнуть проблемы, такие как race condition, что приведет к неправильному поведению приложения.

Читать далее

Самые весёлые TODO из Android-фреймворка

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

Привет, меня зовут Абакар и я работаю главным техлидом Android в Альфа-Банке. Сегодня я расскажу про самые забавные тудухи из AOSP на которые мне приходилось натыкаться во время изучения исходников.

Читать далее

Создадим команду Wild Politics вместе

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

Здравствуйте, Хабровчане!

Мой предыдущий пост "Как потратить шесть лет и быть невидимкой в Play Market" собрал пусть и не рекордные, но всё-таки 13 тысяч просмотров, благодаря чему в мой пет-проект заглянуло много новых лиц. Я благодарен вам за внимание к игре, отзывы и критику.

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

Обучение. По отзывам многих людей, оно обрывается слишком резко, не даёт понимания, чем можно заняться в игре, банально не затягивает. Планирую переработать его так, чтобы игрок в процессе обучения сразу мог прикоснуться к функционалу управления страной, пусть это и будет страна-"заглушка" (никакой реальной политики!), а в конце, проведя по всем аспектам игры, показать итоговое "окно возможностей", где резюмировать всё то, чем уже можно заняться в игре.

Доступность в Play Market. Вероятнее всего, игру не видно в поиске, в первую очередь из-за того, что она находится на стадии пре-регистрации. Также, ранее слабой была ASO-оптимизация страницы игры (буквально мало "ключевых слов" в тексте описания). Полагаю, ситуация изменится с выходом игры в публичный доступ. Но уже сейчас она собрала более 200 заявок на предварительное скачивание.

Прежде чем публиковать игру для "миллиардов пользователей Google Play", я планирую завершить перевод игры на анг

Читать далее

Восстанавливаем удалённые сообщения в Telegram

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

Телеграм довольно ответственно относится к конфиденциальности пользователей. В частности, можно удалить любое сообщение в переписке, как у себя, так и у собеседника. И сообщение действительно удалится, у обоих и навсегда. Но есть пара «но».

Читать далее

Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных

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

Откройте eXpress, и отправьте в чат простое "Привет". Обратите внимание на то, сколько времени прошло между тем, как вы нажали на кнопку "отправить", и тем, как сообщение появилось в чате. Для человеческого глаза отображение отправленного сообщения в чате происходит мгновенно. Это современный стандарт - действия в чате должны происходить максимально быстро. В идеальном случае никаких задержек быть не должно.

Отправка сообщения, тем не менее - это сложная операция, которая требует проделать большой объем работы. Самая существенная её часть - это работа с локальной базой данных. eXpress спроектирован как offline-first, и много данных хранит локально. У одного пользователя могут быть тысячи активных чатов, и десятки/сотни тысяч сообщений, и работа со всеми ними должна оставаться быстрой.

Меня зовут Воронская Дарья, я работаю в Android Core команде eXpress и занимаюсь оптимизацией работы приложения. Я расскажу про подходы, которые мы использовали, чтобы довести скорость отправки и рендера сообщения до того самого идеального результата. 

В этой статье речь пойдет только о работе с локальной базой данных. Оптимизация БД - лишь часть большой работы, мы расскажем про наши решения по оптимизации presentation слоя в других статьях.

Наш стек: Kotlin, Room, Coroutines, WebSocket, OkHttp.

Читать далее

Как потратить шесть лет и быть невидимкой в Play Market

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

Всем привет!

Этот пост в большей степени — рассказ о пути одной идеи к реализации.
И немного — о трудностях, с которыми я сталкиваюсь прямо сейчас, когда вроде бы всё готово — но никто о твоей игре не знает.

Если вкратце: шесть лет трачу вечера на то, чтобы написать собственную игру.
Игра доступна на своём сайте, но в Play Market её не видно.

Читать далее

Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts

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

До этого года я спокойно пользовался терминалом для установки android приложений на тестовые устройства: каждый раз вручную копировал название файла, выбирал нужную команду из истории терминала, стирал старое название и вставлял новое. Это меня очень раздражало, но я не искал решений.

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

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

В конце статьи ссылки на готовые команды 🌚

Читать далее

Мобильная разработка за неделю #560 (14 — 20 октября)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2K
В новом дайджесте бажная корзина в Додо Пицце и сложности Combine, улучшение производительности навигации на Android и кодревью “как не войти в айти в 2024”, самые важные пакеты в экосистеме Flutter, 12 маленьких уроков большого приложения для баскетбола, топ быстрорастущих приложений в России в октябре и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Как настроить правильное расположение элементов в Android-приложении для арабского языка

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

Поддержка языков с направлением текста справа налево (RTL), таких как арабский, — важная часть разработки Android-приложений. C помощью следующих шагов можно легко настроить RTL.

Читать далее

Понимание прогноза глюкозы в AndroidAPS часть 2

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

Попробуем развить мысль на счет прогноза глюкозы в AndroidAPS. Ранее в статье я описывал какие прогнозы существуют и в общих чертах описал как принимаются решения. Сейчас уточним и улучшим понимание прогноза глюкозы. Ведь финально нас интересует не прогноз сам по себе, а сколько инсулина на основе всех вводных данных система примет решение нам подать, чтобы отрегулировать глюкозу в крови. Это важно, так как в системе есть несколько прогнозов, а не один единственный и правильный, как можно было бы предположить. Так что давайте начнем решать эту задачу с конца.

Разбирать будем не базовый AndroidAPS от Милоша, а версию от Метью (MTR93600, ссылка на ГитХаб), я же работаю непосредственно вот в этой (ссылка на ГитХаб) версии, которая является измененный вариантом приложения Метью в части прогноза). Идея состоит в том чтобы вывести для отображения самый релевантный прогноз и ввести отдельные коэффициенты для трех типов нагрузок (легкой, средней и тяжелой), а так же отдельный интерфейс для удобного взаимодействия с нагрузками, вывести приложение в часы. Напишите в комментарии, была бы вам такая доработка актуальна? А пока продолжу по теме...

Дисклеймер

Кстати! Эта статья все еще попытка осмысления алгоритма прогнозирования в программе AndroidAPS и предполагает дискуссию. Не стоит воспринимать ее как финальную истину в отношения прогноза. Я стараюсь приводить код и аргументы, которые вы самостоятельно можете оценить и если у вас есть возможность посмотреть код - то и оспорить представленную логику.

Читать далее

Динамические модули в приложениях на Android: опыт использования Dynamic Feature Delivery

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

Размер приложения часто играет важную роль в восприятии его пользователями и принятии ими решения о скачивании. Исследования показывают, что чем меньше размер APK, тем выше вероятность его установки и тем реже оно оказывается в списке на удаление. Конечно же, это важно для команды Яндекс Go, так как наше приложение непрерывно развивается.

Для внедрения одной из SDK, основанной на Flutter, мы прибегли к механизму Dynamic Feature Delivery (DFD). Но оказалось, что в русскоязычном сегменте информации о DFD крайне мало, поэтому я решил поделиться нашим опытом работы с этим механизмом на Android с Google Play Feature Delivery Library.

Сегодня мы подробно разберём, как интегрировать механизм DFD в современную архитектуру Android‑приложения с использованием корутинов, а также протестируем загрузку и установку динамического модуля, использующего Flutter.

Читать далее

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

Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

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

Привет, Хабр! Меня зовут Кирилл Колодяжный, я пишу код на С++ для систем хранения данных в YADRO. Помимо основной работы, интересуюсь машинным обучением и его возможностями, в том числе на «плюсах». Недавно мне стало интересно разобраться, как развернуть модель компьютерного зрения на мобильном устройстве с операционной системой Android.

 Я изучил доступные инструменты, чтобы понять, какие части приложения можно реализовать на С++, и написать само приложение для телефона. Ни в одном из материалов на подобную тему не описывают реализацию такого приложения от начала до конца, поэтому я собрал свой опыт в серию статей.

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android. 

В первой части цикла мы:

• создадим проект в IDE Android Studio,

• реализуем сессию непрерывного захвата изображений камеры,

• преобразуем изображения в матрицу OpenCV, чтобы сделать дальнейшую работу удобной.

Читать далее

Тесты для функций compose в андроид

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

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

Читать далее

Как приготовить MVI в 2024

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

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

В этой статье я расскажу, почему мне нравится архитектура MVI, её ключевые плюсы и минусы, а также представлю свою библиотеку SimpleMVI, которая делает работу с MVI проще. Если вы хотите узнать, как улучшить управление состоянием приложения, присоединяйтесь к обсуждению!

Читать далее

Обходим ошибку в системных настройках печати на телефонах RealME

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

В своей программе я использовал вызов настроек телефона, что приводило к аварийному завершению.

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

Пробуем разобраться

Мобильная разработка за неделю #559 (7 — 13 октября)

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K
В моей новой подборке странное поведение UserDefaults и признание Google Play монополией, анимации космоса и авто-трекинг производительности, роль продуктового дизайнера, как перехватывают зашифрованный HTTP-трафик, новый рекорд приложений с подпиской и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

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

Попробуйте Tauri

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

Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобильных приложений на JavaScript, но быстрых и легковесных. С опциональными дополнениями на Rust, а через него и на всех других языках.

Читать далее

Как завалить проект и карьеру: 10+ вредных советов разработчику от менеджеров и сеньоров

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров23K
Недавно мы в «Лаборатории Касперского» провели онлайн-митап, где технические менеджеры и разработчики из команды Mobile Dev давали вредные советы про работу и карьеру. В частности, коллеги объясняли, что нужно сделать, чтобы поджечь релиз и затормозить свое развитие, и какие рабочие сигналы игнорировать, чтобы постоянно жить в хаосе.



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

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