Обновить
128K+

Android *

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

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

Самый запутанный краш в моей жизни

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

Я работаю над приложением Альфа Мобайл для физических лиц. Однажды с утра пораньше мне прилетел тикет, в котором была описана проблема с лагающим UI. Этот баг воспроизводился только на 21 api. Собственно как делали наши предки я решил для начала попытаться воспроизвести этот баг. Запускаю я билд и вижу вот такое:

Читать далее

Я купил смартфон за 500 рублей, а он оказался с подвохом. Делаем из него домашний сервер

Время на прочтение7 мин
Охват и читатели46K
К сожалению, не все покупки с пересылкой в другой город на онлайн-барахолках удачные. Иногда продавцы умалчивают серьёзные дефекты ништяков, а на почте всё проверить невозможно: ведь очередь тоже ждать не будет! Так и случилось в рамках сегодняшней статьи, когда я заказал Samsung Galaxy J3 и S4 за 1.000 рублей, а у них обоих оказались очень серьёзные косяки, о которых продавец конечно же умолчал! У J3 был сколот дисплей (на фотографии не было видно), он стоял на пароле (об этом было оговорено заранее) и у него варварски, вместе с пятачками был выдран один из сим-лотков! Но он отнюдь не бесполезен и из него можно сделать вполне себе полноценный сервер. Как? Читайте в статье!

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

Ускоряем разработку за счет пакета Mason на Flutter

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

Привет, меня зовут Александр, и я Flutter-разработчик в агентстве InstaDev. В процессе работы постепенно пришло осознание того, как много времени приходится тратить на написание шаблонного кода. Вооружившись желанием оптимизировать процесс, обнаружил решение: актуальный и развиваемый пакет Mason. Что он умеет, как с ним подружиться, и каков был путь от hello world до гибкого и настраиваемого генератора – рассказываю в этой статье.

Читать далее

Создаем простую игру с Jetpack Compose для часов на Google WearOS

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

Библиотека Jetpack Compose значительно изменила подход к разработке нативных приложений и позволила декларативно описывать в коде интерфейсы, которые зависят от состояния и автоматически отслеживают его изменение. Но долгое время ее применимость ограничивалась платформой Android для телефонов и планшетов, а затем (благодаря разработкам JetBrains) стало возможным использовать реактивный стиль разработки для создания десктопных и веб-приложений. Но все еще нельзя было создавать приложения для умных часов, работающих над вариантом платформы Android - WearOS. В июле 2022 года команда разработки Android предложила первую стабильную версию Compose for WearOS, а в начале декабря вышло обновление библиотеки версии 1.1 с новыми возможностями по настройке пользовательского интерфейса и дополнительными компонентами. В этой статье мы сделаем несложную игру для WearOS с использованием Compose.

Читать далее

Vivaldi 5.6 для Android — Тонкая работа

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

Ваять крупные формы - дело нехитрое: берёшь кувалду, долото, и отсекаешь всё лишнее большими кусками. Другое дело - миниатюры. Тут надо очень аккуратно и точно вносить изменения, чтобы готовая работа засверкала новыми гранями. Собственно, речь у нас сегодня пойдёт о новой мобильной версии браузера Vivaldi, получившей отличный набор новых опций кастомизации.

Читать далее

Одно из лучших физкультурных упражнений для программиста. Почему трудно делать и workaround на смартфоне и смарт часах

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

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

Серия моих предыдущих статей о здоровье и его компьютерном анализе и просто о ЗОЖ и фитнесе-физкультуре:

Бег в 2023 г. С пятки или с носка? Измеряем ударные нагрузки. Android и акселерометр
https://habr.com/ru/post/714698/

Как быстро бег уничтожает колени. Опрос любителей и мнение профессионалов
https://habr.com/ru/post/709182/

Сделайте это и бегать будет легче, чем ходить. Упражнение для тренировки летящего бега, получите удовольствие от бега
https://habr.com/ru/post/705954/
65 тыс. прочтений.

Читать далее

Яндекс выпускает Yatagan — опенсорс-фреймворк для внедрения зависимостей, позволяющий ускорить сборку

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


Меня зовут Фёдор Игнаткевич, я делаю приложение Яндекс и мобильный Яндекс Браузер для Android. Примерно год назад я предложил команде идею фреймворка для внедрения зависимостей, который более чем вдвое ускорил сборку обоих проектов и который мы сегодня выложили на Гитхаб — чтобы разработчики других приложений тоже могли улучшить скорость сборки. Я с нуля реализовал фреймворк, а затем мы вместе с командой интегрировали его в проекты и сейчас активно используем.

Как раз про свой опыт разработки я и хочу рассказать. Давайте попробуем разобраться, какие есть факторы замедления сборки, как Yatagan, совместимый с Dagger по API, с ними справляется и какие ещё задачи могут стоять перед DI-фреймворком — например, в части зависимостей под рантайм-условиями. Кстати, нативная поддержка этих зависимостей в Yatagan избавила нас от ручной обработки состояний A/B-экспериментов в DI.

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

Трудности, с которыми мы столкнулись при модуляризации нашего приложения. Часть 2

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

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

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

Первая часть

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

ListView или RecyclerView?

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

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

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

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

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

Мобильная разработка за неделю #469 (5 — 11 декабря)

Время на прочтение4 мин
Охват и читатели2.6K
В нашей новой подборке инженерия переходов в Airbnb, рисование сна и новые цены в App Store, работа Activity и провал первой игры, фичефоны в Африке, какие категории растут в спад и многое другое.

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

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

Делаем кастомный Collapsing Toolbar на Jetpack Compose

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

Реализация нашей дизайн-системы на Jetpack Compose не всегда проходила гладко. Большинство компонентов мы переписали без проблем, но с некоторыми пришлось повозиться. Одним из таких компонентов стал аналог старого доброго CollapsingToolbarLayout из View-мира. В статье разберем тонкости его реализации на Compose: погрузимся в особенности работы кастомного лейаутинга в Compose, систему вложенного скролла и посмотрим в исходники библиотеки androidx.compose.material3.

Материал может быть полезен всем, кто собирается делать сложные кастомные виджеты или просто интересуется внутренними деталями работы Compose-компонентов. 

Читать далее

Android-митап в red_mad_robot 15 декабря

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

Привет всем, для кого Paranoid Android — не только великая песня Radiohead, но и нередкое состояние на работе! 15 декабря в 19:00 мы проведём Android-митап в московском Робохранилище. Онлайн-трансляция тоже будет, ссылку на неё пришлём на почту.

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

Читать далее

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

Как работает Activity. Часть 1

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

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

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

В первой части совсем немного расскажу про Binder, про то, как происходит запуск Activity, как стартует процесс приложения и как на вызов Activity влияют флаги и launch mode. Во второй части будет про то, как вызываются методы жизненного цикла Activity, что происходит при сворачивании приложения, и более подробно расскажу про старт первой Activity.

Читать далее

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

Время на прочтение5 мин
Охват и читатели2.4K
В нашем новом дайджесте много всего интересного — метаморфозы архитектуры и анимации, разработка в Канаде и принципы хорошего UX, простые метрики качества, симулятор города в облаке, лучшие приложения и игры для Android и iOS и многое, многое другое!

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

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

Оптимизируй или сдохни: профилирование и оптимизация Jetpack Compose

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

В Google Play сыпятся жалобы на зависания и заторможенность вашего новенького-свеженького приложения на Compose? Вам пригодятся советы из данной статьи, чтобы это исправить.

Читать далее

Игра в маляра, или Content-based color scheme: как цветовая схема приложения может меняться в зависимости от контента

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

На Google I/O 2021 продемонстрировали фичу, которая позволяет динамически менять цветовую схему приложения в зависимости от его контента. Но ни в документации, ни в официальных примерах не оказалось использования этого подхода или API, которое делало бы это на уровне отдельного экрана или элемента.

Ведущего android-разработчика red_mad_robot Рому Чорыева это не устроило, и он для этой цели решил разработать собственное простое решение, — а теперь рассказывает об этом в статье.

Читать далее

Этот китайский смартфон за 250 рублей имеет аккумулятор, который можно подключить «на горячую». Всё ещё достоин?

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

Как обычно, без технички и колхоза не обойдется. Но на этот раз не только с моей стороны - но и со стороны китайцев. Иначе как можно объяснить решение, что китайцы решили выпустить смартфон с целыми двумя аккумуляторами, один из которых "пристегивается" на лету? Кроме того, мы попытаемся сделать быстрофикс кнопки питания - особенно если она полностью вывалилась: в нашем случае вмешательство потребовалось и хардварное, и софтварное. Интересно? Тогда бегом читать!

Читать далее

Настройка Push Notifications на React Native & Expo Go

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

Настроим Push уведомления при использования EAS.

Факт отсутствия в русскоязычном сегменте интрнета и какого либо примера по настройке пуш уведомлений с использованием лишь инструментов которые предоставляет Expo Go очень расстраивает, поэтому вы сейчас видите сие творение.

Читать далее

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

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

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

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