Обновить

Мобильная разработка

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

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

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

В новом дайджесте «стеклянный мир» iOS 26 и Flow-контейнеры в Compose, Android Glance Widget и жизненный цикл UIViewController 2025, лучшие практики агентного программирования, как замедлить программу и почему это может быть полезно, приложения, вышедшие в июле, и заработавшие больше $50,000, и многое другое. Заходите!

Читать далее

ARC в Swift

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

Привет, Хабр! Это вторая статья из цикла моих заметок. В прошлый раз мы затронули тему ARC и а также такие понятия, как weak и unowned ссылки. Сегодня разберёмся, что такое ARC на самом деле, посмотрим, как он работает на уровне SIL, и заглянем немного в историю управления памятью в iOS.

Читать далее

Мой путь новичка в разработке: FreeSpace — мобильное приложение для любителей космоса

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

Меня зовут Маша, я выпускница «IT Школы Samsung». Хочу рассказать о своём проекте — мобильном приложении FreeSpace, которое объединяет новости о космосе, интерактивную карту и сообщество энтузиастов. Это не просто рассказ о коде, но и история моего пути в Android-разработке.

Читать далее

Как сделать GitLab CI/CD вашим лучшим другом для сборки и доставки Flutter приложений. Часть 2

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

Flutter & GitLab CI/CD. Сборка и подписание мобильных приложений

Привет! Меня зовут Данил Абдрафиков, я мобильный разработчик в компании TAGES. Эта статья является продолжением первой части руководства по настройке GitLab CI/CD для Flutter приложений, в котором мы подробно разобрали настройку физической машины и подготовили GitLab Runner для работы. Теперь, когда инфраструктура готова, перейдем к самому интересному – автоматизации сборки и подписания мобильных приложений.

Готовы превратить сборку мобильных приложений из рутинной задачи в полностью автоматизированный процесс? Тогда начинаем!

Читать далее

Жизненный цикл UIViewController в 2025 году: что изменилось и что устарело

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

В 2022 году я написал статью «Жизненный цикл UIViewController», где подробно разобрал порядок вызова методов и основные сценарии работы с ними.

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

Читать далее

Android. Glance Widget. Часть 2. Конфигурация данных для виджета

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

Рассмотрим, как добавить конфигурационную activity для виджета, как сохранять, доставать и применять настройки.

Читать далее

Как мы добились оценки приложения в 5 звезд за 2 часа

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

Всем салют, на связи мобильный Flutter разработчик из Comrades Dev.

У нас в приложении была вечная проблема - люди пользуются, всё окей, но отзывов почти нет. В сторе висела небольшая цифра в 30 оценок и рейтинг 4.9. Вроде неплохо, но не то, чтобы "вау". Также отзывы которые мы собирали в соц сетях, а также при опросе знакомых кто им пользуется, были только положительные. Решили попробовать маленький эксперимент, чтобы повысить количество оценок и он неожиданно выстрелил.

Читать далее

«Стеклянный мир» iOS 26. Адаптируем приложение под новые гайдлайны

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

Уже скоро релиз iOS 26 и обновления SDK приложений. Apple снова вносит корректировки, а разработчики и дизайнеры снова подстраиваются. У текущих приложений будет переходный период, но вопрос с обновлением интерфейсов рано или поздно настанет и придется адаптировать под новый SDK и стиль Liquid Glass, чтобы продукт выглядел современно.  

Дизайнер интерфейсов CleverPumpkin Фёдор Миронов поделится наблюдениями о новых гайдлайнах и расскажет, какие изменения принесёт Liquid Glass. А ещё покажет несколько примеров обновления интерфейсов тестового приложения и нашего финтех-проекта Moneon.

Читать далее

Запуск бинарных файлов из data/data на Android 10+ (Обход SELinux)

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

Всем привет! Как многие знают, с Android 10 (Target sdk 29) google ввели новую политику безопасности. Новая политика SELinux звучит просто: "Нельзя исполнять файлы из той директории, в которую можно записывать". Всё это очень хорошо, но многие проекты сломались (В том числе и мой). Termux из google play УМЕЕТ запускать бинарные файлы на target sdk 29+. Я решил поделится как выполнить бинарный файл из data/data/com.ваш.пакет/files на новых версиях sdk БЕЗ полного клонирования Termux и БЕЗ С/C++ части. Сам метод запуска будет именно на java. Репозиторий termux, откуда был взят способ: https://github.com/termux-play-store/termux-apps

В чём суть, любой бинарный файла который вы запускаете имеет свой контекст. Если вы запускаете через нативную директорию (data/app/и так далее) перед этим положив бинарные файлы в jniLins - контекст у такого бинарного файла будет правильным и SELinux даст разрешение на запуск (Granted), но в случае с data/data другой случай, оттуда SELinux УЖЕ ОТКАЖЕТСЯ запускать бинарный файл (Denied). Разрешил SELinux запуск или отклонил можно смотреть в logcat. Однако, в системе существует системная утилита которая может запустить бинарник, а самое главное - SELinux РАЗРЕШИТ ей запустится, так как она системная. Её имя - linker или linker64 (Зависит от разрядности, 32 бита или 64)

Запустив линкер и передав ему наш бинарный файл из data/data - SELinux разрешит ему выполнится и сразу разрешит исполнение нашего бинарного файла. Тут сразу возникает вопрос, а если бинарный файл попробует подключить so библиотеку? Ей будет отказано? Здесь тоже есть решение, существует termux-exec. Это бинарный файл, который перехватывает попытку подключения чего либо и выполняет трюк с линкером. (linker или linker64 определяет автоматически). Вы можете собрать его из исходников (https://github.com/termux-play-store/termux-exec), но лично я полностью скопировал среду (Где этот уже собранный файл идёт в usr/lib) termux, так как мне нужно было запускать OpenJDK 17 под termux.

Читать далее

Проверил график изменения цен и увидел совсем не то, что показывал маркетплейс

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

Вы заглядываете в историю изменения цены на вайлдберриз? Кстати, раньше она и на Яндекс Маркете была, но они её убрали.. 

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

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

Получается, они показывают нам какую-то фантомную цену за последние 90 дней?.. Нашёл пример товара с графиком (он ещё и не для всех товаров показывается), и что мы видим:

Читать далее

Android. Glance Widgets. Начало

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

Android. Glance widgets.

По разным причинам мы начинаем изучать что-то новое. Будь то углубленный курс по твоей специализации. Или это что-то стороннее, получить навык, который давно хотел освоить. И вот мы сталкиваемся с новым и попадаем в цикл понятно/ничего непонятно.

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

Читать далее

Flutter дайджест — Лето 2025 (июль + август)

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

Привет, друзья! ☀️ Лето подходит к концу, а значит самое время подвести итоги и вспомнить, что интересного произошло во Flutter-мире за два месяца.

Впереди осень 🍂 — и мы готовим ещё больше новостей, релизов и туториалов. Ну а пока наслаждайтесь нашим летним дайджестом.

А ещё — поздравляем студентов и школьников с Днём знаний! 🎓 Пусть учёба будет лёгкой, а знания по Flutter и Dart только умножаются. Канал FlutterPulse будет развиваться и расти вместе с вами 🚀

Читать далее

Пользователь как сервер или «Request-Based» архитектура на примере Open Source Блокнота

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

Привет, меня зовут Саша и я Android-разработчик :)

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

Часто источниками данных являются: человек, сервер и устройство (User, Server, Platform).

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

Подобно тому как вызовы функций вкладываются друг в друга:

Читать далее

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

Упрощаем NFC: обзор нового SDK для Android разработки

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

Работа с NFC в Android всегда была непростой задачей. Нативный API требует от разработчика понимания низкоуровневых протоколов и механизмов обработки данных. Новый TAO NFC SDK (Android) призван решить эту проблему, предоставляя высокоуровневую абстракцию, которая значительно упрощает взаимодействие с NFC-метками.

Читать далее

Compose Multiplatform простое приложение c MVI

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

Статья об использовании мультиплатформенного Android и iOS решения на Compose с минимальным количеством сторонних beta библиотек. Настройке проекта для iOS и Android, а также тестировании с помощью локального сервера Netty

Из сторонних бета-библиотек используется buildkonfig = "0.17.1"

Room - База данных

Ktor - Network. Также задействован embeddedServer для эмуляции сервера

Koin - Dependency Injection

Coroutine Flow

Compose Navigation

Clean Architecture

Читать далее

Мобильная разработка за неделю #600 (25 — 31 августа)

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

В этом “юбилейном” выпуске память в Swift и ужесточение проверки разработчиков для сторонней установки приложений от Google, очередная смерть Flutter и инструмент для поиска и анализа ошибок, все != nil в коде, pixel-perfect тестирования дизайн-системы в Android, Польша как главный рынок приложений Европы и многое другое. Заходите!

Читать далее

Память в Swift

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

Привет, Хабр! Меня зовут Егор, и это моя первая статья на этой платформе. Я занимаюсь iOS-разработкой, и за время работы я прочитал множество статей и документаций. Для того чтобы не теряться в этом потоке информации, я стал делать для себя короткие шпаргалки — они помогали закрепить изученное и готовиться к собеседованиям. В этой статье я решил собрать часть таких заметок в один материал, посвящённый работе с памятью в Swift. Надеюсь, он поможет кому-то освежить знания или узнать что-то новое.

Читать далее

Станция обслуживания дрона: управление и архитектура взаимодействия

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

Станция обслуживания дрона — это комплексный автоматизированный модуль, выполняющий функции замены аккумуляторов и обработки грузов (загрузка/выгрузка) в полностью автономном режиме. Управление ею реализовано с помощью микроконтроллера Arduino Uno, связанного с модулем ESP8266, который подключается к удалённому серверу по WebSocket и обменивается командами в формате JSON.

Читать далее

Tracer — инструмент для поиска и анализа ошибок: новые фичи в 2025

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

С первого релиза в августе 2023 года Tracer успел стать востребованным решением. Уже к концу 2024 года в нём было зарегистрировано свыше 1 500 организаций и 5 000 пользователей и ежедневно обрабатывалось более 2,5 млрд запросов. В 2025 году количество зарегистрированных организаций превысило 1 800, а число пользователей достигло отметки в 8 000. Но это не предел, ведь работа над прокачкой инструмента не останавливается.

Читать далее

Выход iOS 26. Почему нативная разработка — это преимущество и необходимость

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

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

Читать далее