Как стать автором
Поиск
Написать публикацию
Обновить
130.78

Разработка мобильных приложений *

Android, iOS, Windows Phone и прочие

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

Обзор монитора Samsung 27″ ViewFinity S9

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

Немного поразмыслив, решил отказаться от идеи обозревать только российскую технику. Потому что есть много разных гаджетов и устройств, которые хотелось бы потрогать. Продолжаю тестировать мониторы от компании Samsung. Если в прошлый раз это был Samsung Smart Monitor M8 32", то в этот раз можно сказать, что его следующая версия — Samsung 27″ ViewFinity S9 S90PC 5K.

И хоть у обоих мониторов разное название, внешне и по ряду параметров они очень похожи, поэтому без сравнения не обойдётся. Однако надо отметить, Samsung 27″ ViewFinity S9 S90PC 5K — отдельная линейка, и всё, что я сказал, просто сравнение похожих мониторов.

Начнём — это обзор монитора Samsung 27″ ViewFinity S9 S90PC 5K. Приятного чтения!

Читать далее

Фронтенд и бэкенд больше не будут общаться как прежде: создаём конструктор сценариев на базе Backend Driven UI

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

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

Иногда нащупать границу между «масштабом» и «целесообразностью» получается почти что случайно. Однажды мы в Сравни подступились к переделке чата в нашем мобильном приложении, и на старте расценивали задачу как «ещё один рядовой продуктовый кейс». Но планы по модификации фичи быстро переросли в создание универсального инструмента: конструктора сценариев на базе Backend Driven UI.

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

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

Читать далее

Советы для публикации в RuStore: альфа-тестирование, AAB и автоматизация с помощью API

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

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

Меня зовут Валентина Князева, я менеджер продукта в RuStore. В этой статье поделюсь тремя ключевыми инструментами, которые помогут сделать публикацию в нашем сторе надёжной, предсказуемой и удобной:

- альфа-тестирование с реальными пользователями;

- использование формата .aab вместо привычного .apk;

- автоматизация публикации через RuStore API.

Читать далее

Для чего я написал собственный аудиопроигрыватель

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

Как и у многих, у меня накопилось слишком много подписок: некоторые у Apple (iCloud, Apple Music), другие потерялись на разных платформах (например, на Netflix — я и забыл, что всё ещё плачу за него). На самом деле, я регулярно пользовался Apple Music (а ранее Spotify), но потоковая музыка оказалась больше удобством, чем необходимостью. При наличии тщательно подобранной локальной библиотеки я ничего особо не потерял.

Поначалу я думал, что просто продолжу использовать iCloud Music Library для синхронизации музыки между устройствами, но после отмены подписки на Apple Music синхронизация перестала работать. Оказалось, за эту функцию нужно платить. Строго говоря, её можно вернуть при помощи iTunes Match (24,99 $ в год). Match просто хранит AAC-копии с битрейтом 256 кбит/с; ваши исходные файлы остаются на месте, если вы не захотите удалить их. На современных Mac всё это делается в приложении Music. При отсутствии подписок синхронизация с облаком отключается и остаётся лишь синхронизация по кабелю/Wi-Fi.

Раздосадованный ограниченностью возможностей, я решил взяться за разработку. Если уж я купил вычислительное устройство (в данном случае iPhone), то что мешает мне просто создать необходимое мне при помощи кода? В этой статье я расскажу о своих разочарованиях по пути к реализации базовой функциональности музыкального плеера: загрузки аудиофайлов, их упорядочивания и воспроизведения. Но больше всего мне хотелось напомнить себе, что это просто компьютер, и у меня должна быть возможность заставить его выполнять нужные мне задачи.
Читать дальше →

Rafinad: сахар для UI-тестирования iOS-приложений

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

Мы в hh очень любим UI-тесты, ими покрывается практически вся функциональность наших приложений, и даже backend-разработчики прогоняют тесты мобильных платформ перед развертыванием своих фич. Однако наши механизмы UI-тестирования разрабатывались более 8 лет назад и с тех пор почти не изменились.

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

Поэтому мы пересмотрели наши подходы к UI-тестированию и теперь готовы поделиться наработками с сообществом в виде open-source проекта — Rafinad. В этой статье расскажем, что он умеет и как им пользоваться.

Читать далее

Развеиваем мифы о Stability в Compose: оптимизации Strong Skipping

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

За последнее время Jetpack Compose и его кроссплатформенный собрат Compose Multiplatform прошел большой путь от ранних альфа релизов и скептического отношения комьюнити до статуса главного UI-фреймфорка под Android и production-ready состояния на iOS.

Тем не менее одна из важных тем, касающихся runtime-производительности фреймворка, все еще остается полной темных пятен, и это тема stability. Как ни странно, ведь на эту тему сделано множество статей и докладов. Проблема заключается в том, что стремительное развитие фреймворка очень быстро делает эти статьи, доклады и даже документацию устаревшими, а новые посты на эту тему вторят старым, дальше распространяя ложную информацию о том, как работает рекомпозиция, пропускаемость (skippability) и перезапускаемость (restartability).

Использование LLM для получения актуальной информации не очень поможет. Простой пример - спросим у ChatGPT, будет ли перезапущена Composable функция, если она имеет нестабильные аргументы, и получим неправильный ответ:

Читать далее

Большое обновление DivKit: визуальный редактор, поддержка форм, аниматоры

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

Почти три года назад мы выложили в опенсорс DivKit — наш BDUI‑фреймворк для отрисовки интерфейса приложения из ответа сервера. С его помощью вы можете описать элементы, состояния и анимации на бэкенде. Приложение получит это JSON‑описание и отобразит его.

Мы не перестаём развивать DivKit и за последние месяцы добавили несколько важных функций. О них расскажем в статье.

Читать далее

Видим невидимое: контроль качества Android-библиотек через объектив AppTracer Lite SDK

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

Привет! Меня зовут Даниил Климчук, я работаю в команде, занимающейся SDK для авторизации через сервисы экосистемы VK. В него входит несколько компонентов, а именно авторизация по протоколу OAuth 2.1, кнопка One Tap для авторизации в один клик, шторка с описанием сценария авторизации и поддержка авторизации через Mail и OK.

Мы усиленно работаем над качеством нашего SDK, и одним из важных аспектов стал контроль работы SDK на устройствах пользователей. Было решено собирать краши и перформанс-метрики. Для этого отлично подходит новый инструмент AppTracer Lite SDK, разработанный в VK. Сейчас он доступен только внутри VK, но если вас заинтересовало решение и вы хотите внедрить его к себе, напишите в телеграм-чат: t.me/tracer_feedback — обсудим такую возможность. 

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

Читать далее

Мечтают ли андроиды о Robolectric? Разбираем фреймворк по косточкам

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

Я уверен, вы слышали про Robolectric, но использовали ли хоть раз для UI‑тестирования или screenshot-тестирования? Да, у библиотеки неоднозначная репутация в Android-комьюнити. Возможно, вы будете в восторге, когда её устройство перестанет быть для вас загадкой.

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

Я копнул глубже, упорядочил все свои знания о библиотеке и изложил их под катом.

Читать далее

Как я создал приложение для сравнения цен на маркетплейсах и получил несколько тысяч пользователей бесплатно

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

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

В этой статье расскажу, как так получилось.

Читать далее

Как мы в YouGile сделали голосовые круче, чем Telegram. Их полюбят даже хейтеры

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

Привет! Я Саша, продакт системы управления проектами YouGile. Хочу рассказать, как мы сделали голосовые сообщения в нашем внутреннем мессенджере удобными даже для тех, кто их ненавидит. Причем быстро, дешево и с помощью доступных всем инструментов — если захотите, сможете повторить (наверное).

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

Читать далее

Идеальный процесс взаимодействия аналитика и мобильного разработчика

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

Данную статью написали Александр Чекунков, Android-разработчик, и Антон Ушаков, аналитик. Мы работаем в СБЕРе и ежедневно взаимодействуем, чтобы превращать бизнес-требования в понятные, логичные и реализуемые решения. В своей работе мы ежедневно сталкиваемся с процессами формирования требований, их обсуждения, реализации и доставки фичи до промышленных стендов. От того, насколько правильно выстроена наша работа, напрямую зависит скорость и качество разработки продукта.

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

Читать далее

Массовые увольнения в российском IT: что на самом деле происходит в компаниях — взгляд CEO

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

Минцифры кричит о нехватке миллиона IT-специалистов, министр труда и социальной защиты заявляет о «всего» ста тысячах. Параллельно рынок труда захлестнула волна сокращений. А тут ещё и слухи об AGI — суперумном ИИ, который захватит все рабочие места. Парадокс? Нет, скорее болезненная трансформация от иллюзий к реальности. 

На связи CEO Surf Владимир Макеев. Я в разработке с 2011 года, почти с самых истоков развития мобильных приложений в РФ. Сегодня поделюсь своим взглядом на то, как накопленный кризис управленческих иллюзий повлиял на IT-сферу и почему за последний год уволили так много специалистов. И как на ситуацию влияет развитие ИИ, который может заменить разработчиков.

Читать далее

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

Я нашёл огромную дыру в дейтинг-приложении, а разработчики попытались её скрыть

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

Стартапам нужно ответственнее относиться к безопасности

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

Читать далее

Зацените BUSY Bar — устройство для продуктивности

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

3 года назад я рассказывал как я делаю опенсорсную табличку "Я Занят". С тех пор проект полностью перешел внутрь Flipper Devices и его разрабатывает та же команда, что и Flipper Zero.

BUSY Bar — девайс для концентрации и современный Pomodoro-таймер с блокировкой отвлекающих приложений и уведомлений. Мы обновили дизайн устройства, доработали его функции и произвели первую тестовую партию. В этой статье я расскажу что мы сделали за это время и как изменился проект.

Читать далее

Как одна строка кода могла окирпичить ваш iPhone

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

Это история о том, как я недавно обнаружил в iOS уязвимость, которая стала одной из моих любимых. Почему любимых? Потому что реализовать для неё эксплойт оказалось очень легко. Кроме того, она использовала публичный легаси API, на который до сих пор опираются многие компоненты ОС Apple, и о котором многие разработчики даже не слышали.
Читать дальше →

Как сделать мобильное приложение, если у тебя лапки? Путь от PWA до TWA

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

Привет, Хабр! Меня зовут Влад, и я тот самый человек, который привык использовать костыли в решении задач. По крайней мере, я считаю, что это лучший подход при подготовке MVP. Яркий пример — прототипирование простых скриптов под микроконтроллеры на MicroPy или десктопных приложений на Electron. Но, как оказалось, это не все виды ухищрений в разработке.

Если вы веб-разработчик, но руки «чешутся» написать мобильное приложение, варианты есть. В этой статье я расскажу, как создать собственное прогрессивное веб-приложение (PWA) и доработать его до TWA, чтобы потом протестировать и опубликовать в разных сторах. Никакого rocket science, просто небольшое пособие, которое основывается на моем опыте. Подробности под катом.
Читать дальше →

Compose Multiplatform 1.8.0: поддержка iOS переходит в stable

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

Привет! Меня зовут Максим, я управляющий партнер и руководитель мобильной разработки в KTS.

Мы разрабатываем приложения на KMP еще с 2021 года, а в прошлом году начали экспериментировать с Compose Multiplatform. Вчера JetBrains официально объявили о выходе CMP 1.8.0, c которой поддержка iOS переходит в статус stable. Это важный этап, поскольку теперь CMP можно всерьез рассматривать как основу для кроссплатформенной мобильной разработки.

В этой статье мы познакомимся с обновлением и рассмотрим заявленные фишки, а заодно поговорим о результатах наших опытов с CMP на ‭наших проектах.

Читать далее

Дивный мир мобильной разработки и трудности Open Source

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

Когда я впервые решил создать свой open-source проект, мне казалось, что главное – это хорошая идея и рабочий код. Я взялся за разработку библиотеки для сетевых клиентов и UI-компонентов, вложил в неё два года работы и, наконец, выложил на GitHub. Но вместо успеха меня ждал холодный душ – библиотека получила всего 10 звёздочек.

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

Open-source – это не только код, но и способность донести свою работу до других. И эта история дала мне важный урок: если хочешь, чтобы твой проект заметили, помоги людям его понять. А ещё я понял, как важно участвовать в комьюнити и контрибьютить.

Читать далее

Изоляция с помощью глобальных акторов в Swift Concurrency: варианты на примере @MainActor

Время на прочтение7 мин
Количество просмотров889

Привет, Хабр! Меня зовут Алексей Григорьев, я техлид iOS-разработки продукта Membrana в МТС. Это тариф с приложением для управления приватностью в сети и окружением.

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

Один из самых распространенных и полезных глобальных акторов — это @MainActor, который гарантирует выполнение операций в главном потоке приложения. В этом посте я на его примере покажу все варианты, как можно реализовать изоляцию и что в итоге выведет код: на каком потоке будут выполнены update, internal update и set в property.

Читать далее

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