Обновить
128K+

Android *

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

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

COROUTINES-23: code review fixes

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

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

Читать далее

Мобильная разработка за неделю #490 (22 — 28 мая)

Время на прочтение4 мин
Охват и читатели2.6K
В новой подборке однонаправленные архитектуры и ошибки при публикации, не писание сетевого слоя и паттерны проектирования, лучшие практики, проектирование интерфейсов, состояние Fuchsia, лучшие пейволы и многое другое!

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

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

Как сделать обмен информацией простым как никогда с помощью мобильного приложения

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

Добрый день, Хабр. В этой статье я хочу рассказать о нашем мобильном приложении Person to Person (P2P) Social с помощью которого мы надеемся максимально упростить обмен информацией между людьми. Под информацией мы будем понимать все, что является результатом социального взаимодействия между людьми, будь ли это новые знания, приобретенные навыки или товарно-денежные взаимотношения. Я опишу основные идеи и, частично, «интерфейсную» реализацию. Критика и предложения по улучшению всячески приветствуются. Итак, поехали.

Читать далее

12 ошибок при публикации приложения в RuStore — и как их избежать

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

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

Читать далее

Что будет, если у программиста появится хобби кулинария. Часть 2

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

Всем привет, продолжаю свою историю увлечения кулинарией и мобильной разработкой в MIT App Inventor (буду называть "аппинвентор" далее в статье) под это дело. Будет подробно расписана эволюция моего приложения и запредельные, не побоюсь этого слова, возможности аппинвентора, который некоторые считают "инструментом для детей". Кстати, сразу, пока не забыл - дети, если у вас есть интерес к программированию вообще и мобильной разработке под андроид в частности, то я очень рекомендую вам ознакомиться с аппинвентором. А фуллстак-разработчикам и UI/UX дизайнерам возможно будет интересны мои мысли, на основе которых происходила эволюция интерфейса приложения, потому что путь к итоговому результату был очень неблизкий и я бы дорого дал, чтобы сразу придумать то, что получилось в итоге, пропустив промежуточные шаги и сэкономив два года, но я не верю, что это реально в принципе. Зато теперь у меня есть вся эволюция в картинках, так что есть о чем на Хабре рассказать и показать, короче, будет "комикс" ))).

Читать далее

Как подключить Lombok к Android Studio в 2023 году

Время на прочтение2 мин
Охват и читатели3.2K

Для тех, кто еще не перешел на Kotlin, или работает с легаси, код которого в ближайшее время не будет переведен на него, использование Lombok сильно уменьшает количество шаблонного кода. Но этот плагин не совместим с последними версиями Android Studio.

Разбираемся как подключить Lombok...

Как не писать сетевой слой в Android-приложениях с помощью автоматической генерации OpenAPI

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

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

Читать далее

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели14K
image

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
Читать дальше →

Как ускорить написание кода: AI, генерация кода, плагины

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

Разработчики пишут много кода, очень много. И я задумался как сделать так, чтобы писать код быстрее. Надо научится быстрее его набирать и/или делегировать его написание другим. Хороший выход, но какое будет качество кода? Автор решил разобраться, какие есть инструменты для ускорения написания кода и что умеют AI технологии

Подробности

Интеграция рекламы в Android-приложение: Yandex Mobile Ads Vs. Google AdMob

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

Привет, Хабр! Меня зовут Александр, я Android-разработчик в IT-компании SimbirSoft. В конце 2022 года на одном из проектов мы с командой столкнулись с трудностями в работе мобильной рекламы — тогда у нас была подключена сеть AdMob от Google. Приходилось искать много обходных путей для продолжения монетизации приложения. Поэтому решили мигрировать на платформу, с которой не будет проблем из-за санкций. Коллеги-аналитики взялись изучить доступные платформы. 

Я поделюсь результатами этой работы и совместными выводами. Но главным образом разберу процесс интеграции Google AdMob и Yandex SDK, их плюсы и минусы, шаги интеграции, и расскажу, почему мы выбрали Yandex SDK. 

Сегодня использовать зарубежные решения не столько сложно, сколько бессмысленно, если пользователи находятся в России. Многие провайдеры уходят из страны и отказываются выплачивать доход от рекламы, бизнес теряет деньги. Статья будет полезна Android-разработчикам, которые столкнулись с выбором SDK.

Читать далее

Мобильная разработка в апреле: дайджест новостей от RuStore

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

Российский магазин приложений RuStore продолжает серию дайджестов о рынке мобильной разработки — мы собираем самые интересные и важные новости, которые вы могли пропустить.

Читать далее

Мобильная разработка за неделю #489 (15 — 21 мая)

Время на прочтение4 мин
Охват и читатели2.7K
В нашем новом дайджесте безопасная локализация и многомодульные приложения, перформанс 2ГИС и дизайн система Tinder, паттерны проектирования, все видео осеннего Mobius, эффективные интерфейсы, доходы приложений и многое другое.

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

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

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

Как создать анимированные шейдеры в Jetpack Compose

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.6K
Jetpack Compose — молодой, но бурно развивающийся фреймворк для разработки под Android, который обладает множеством не всегда очевидных фичей. Сегодня я хотел бы описать одну из таких встроенных возможностей: речь идет об использовании OpenGL-шейдеров. Они позволяют делать красивые анимированные интерфейсы, как на картинке ниже.
image
Читать дальше →

Как Литрес сделал из меня Flutter разработчика

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

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

Для кого я это пишу? Для тех, кто подумывает стать мобильным разработчиком, кто почитает про мои неудачи и сможет избежать «хождения по граблям».

С чего всё начиналось

Я большой любитель послушать аудиокниги, в особенности российскую фантастику, фентези, ужасы, постапокалипсис. Пока двигаешься на работу, идёшь в магазин, разбавляешь серость окружения погружением в виртуальные реальности. Но не все книги одинаково интересны, я как правило слушаю пару глав, понимаю, что мне не нравится и отправляюсь на поиск другой аудиокниги. С таким подходом покупать, каждый раз продукт, который не используется нерационально (и очень накладно — в день по парке аудиокниг). В итоге я пришёл к тому, что стал зависать в соответствующем разделе рутрекера, скачивать, закидывать на телефон, слушать в приложении. Естественно, такой алгоритм неудобен, отправился на поиски приложения, которые бы автоматизировало этот процесс, но такого приложения не было. И тут пришла мысль «я со школьных лет увлекаюсь программированием, неужели не смогу разобраться и сделать приложение?».

Ошибка: Идея не обдумана. Загорелся и стал сразу делать.

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

Читать далее

Возможность использования программного эмулятора Android в компьютерно-техническом исследовании

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

В 2022 году во всем мире насчитывалось более 5,32 миллиардов граждан, использующих мобильные телефоны, при этом в 2000 году этот показатель был равен всего лишь 1 миллиарду. Мы являемся свидетелями повальной миграции пользователей с персональных компьютеров на мобильные телефоны.

Трафик мобильной передачи данных в России к 2022 достиг 43 эксабайт, что почти в 6 раз больше, чем в 2017 году (7.3 эксабайта). Смартфоны сегодня такие, как iPhone, Samsung Galaxy и другие, представляют собой карманные компьютеры с высокой эффективностью, огромным объемом памяти и увеличенным функционалом.

Читать далее

Авторизация OAuth 2.0 в Google Api для Android без специальных библиотек

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели20K

Изучение протокола Oauth 2.0 с изобретением "велосипеда".
Получение access_token в одной Activity посредством простых запросов.

Читать далее

Матрица Судьбы (компетенций) Android-программиста

Время на прочтение7 мин
Охват и читатели5.8K

«Вы заметили, какое сейчас время? Новая эра, новая эпоха. Век открытых, доступных знаний – было бы желание, как говорится. Все больше и больше людей как будто просыпаются, выходят из длительного сна, состояния стагнация»1 - цитата из книги.

Вопрос грейдов всегда волнует тех, кто занимается разработкой ПО. Как понять самому, а главное доказать руководству, что ты находишься на новом уровне со всеми вытекающими последствиями? Многие из нас интроверты, и идти доказывать что-то кому-то – мало кто хочет. Как убрать фактор “хороших отношений” с руководством у коллег? Да и вообще хочется объективности и прозрачности критериев. Именно этим мы руководствовались в “Рексофт”, когда задумывали такой инструмент как “Матрица компетенций” (МК). Именно про него я хочу вам немного рассказать. Разберёмся в том, что это такое и с чем его едят. Чтобы не быть голословным, посмотрим на реальный пример матрицы, которая активно используется в компании. Возьмем матрицу компетенций Android-программиста, которую я (Олег Иванов, руководитель группы мобильной разработки компании «Рексофт») когда-то составил и стараюсь поддерживать в актуальном виде.

Читать далее

Реализация прогресс бара при отправке или загрузке файлов

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

Появился вопрос о том, как можно отследить статус отправки или загрузки файлов с сервера? Эта статья поможет найти решение, а также подобрать подходящий для вас вариант.

Читать далее

В каких случаях использовать функцию derivedStateOf из Jetpack Compose

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

derivedStateOf { ... }

derivedStateOf - это функция, которая из исходных объектов State формирует производный State. Основной смысл применения функции derivedStateOf - понизить частоту изменения исходного State, тем самым избавиться от ненужных рекомпозиций.

Лямбда-выражение, которое передается в derivedStateOf, выполняется каждый раз, когда изменяется любой из входных объектов State, и результат используется для обновления значения производного State. Важно понимать, что лямбда-выражение будет вызываться повторно только если изменится свойство value объекта State и чтение этого свойства происходит в этой лямбде. Изменение захваченных переменных другого типа не приведет к повторному вызову лямбда-выражения.

У объекта State может читаться свойство value в одной или нескольких compose-функциях. Через объект MutableState можно менять свойство value в callback'ах compose-функций или где-то еще за пределами compose, например во ViewModel'и. Если свойство изменилось, то в процессе построения следующего кадра произойдет рекомпозиция (повторный вызов) тех compose-функций, где это свойство читается. Таким образом частота изменения объекта MutableState определяет частоту рекомпозиций, но не чаще чем системный Frame rate, это примерно 60Hz, то есть 60 раз в секунду. Когда изменится State, Compose обновит UI при построении следующего кадра.

Когда частота изменения State слишком высокая, или другими словами есть некоторая последовательность изменений value State'а, при которой не нужно обновлять UI пускай даже значения разные, а следовательно не нужно совершать рекомпозицию, в этих случаях нужно использовать derivedStateOf. derivedStateOf определяет производный объект State от одного или нескольких других объектов State. Производный State должен обобщать исходные объекты State, то есть исходное множество значений State должно делиться на подмножества, и каждое такое подмножество будет соответствовать значению из производного множества. Изменения исходного State не всегда будут приводить к изменению производного State, таким образом понижается частота рекомпозиций.

Читать далее