Мобильная разработка
IT и технологии
Актуальное по мобильной разработке — Android, iOS, кроссплатформа
Загружаем канал…
Сайт использует cookie для работы и аналитики. Мы используем файлы cookie для работы сайта и аналитики посещаемости. Подробнее в ПодробнееПолитике обработки данных и Правилах.
IT и технологии
Актуальное по мобильной разработке — Android, iOS, кроссплатформа
Отладка iOS-приложений на практике: 3 реальных бага Понимание того, как именно отлаживать приложение, а также знание инструментов, которые есть в вашем распоряжении — это навык, который экономит массу времени и помогает быстрее переходить к следующей задаче. В этой статье разобраны несколько примеров реальных ошибок, которые можно встретить в приложениях, и показан пошаговый процесс отладки в каждом случае. #ios @mobi_dev (теперь и в Max)
Локализация через Enum: избавляемся от рантайм-парсинга В статье на Tproger разобрали три подхода к локализации: классическое наследование требует дублировать поля вручную, стандартные ARB/JSON парсятся в рантайме и съедают память, а табличные генераторы требуют ручного запуска после каждой строки. Выход — Enum в одном файле без внешних ресурсов. Это убирает рантайм-парсинг и ручное дублирование. Если ваши сервисы сопрягаются с клиентами, где локализация до сих пор требует JSON или генераторов, стоит переложить её на compile-time решение.
Что скрывает приложение Белого дома? Трекинг, обход пейволлов и JS с GitHub Pages Декомпиляция официального Android-приложения правительства США показала, что даже государственный софт может быть напичкан сомнительными практиками. Но разбор интересен не скандалом, а набором антипаттернов, которые разработчики (и их заказчики) допускают слишком часто. Ключевые находки, полезные для любого мобильного разработчика: — Инжектор в WebView скрывает cookie-баннеры, GDPR-диалоги и пейволлы на сторонних сайтах. Встроенный браузер приложения подменяет поведение страниц — это и нарушение регуляций, и пример того, как не стоит вмешиваться в чужой контент. — GPS-трекинг через OneSignal. Код для сбора координат (с интервалом 4,5 минуты в фоне) полностью присутствует в сборке, формально отключён флаго…
Читать целикомСам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера Ну не только же нам приложения делать, правда? Давайте реанимируем ваш старый гаджет на Android и превратим его в игровую приставку. Для этого нам понадобятся: — старый планшет или смартфон на android; — Raspberry Pi Pico; — 8 кнопок; — прямые руки; — и, наконец, немного кода. Подробная инструкция в статье: https://habr.com/ru/companies/timeweb/articles/736438/ #android #diy @mobi_dev (теперь и в Max)
Победителями премии Тпрогер 🐀становятся... Здесь играет барабанная дробь и интригующая музыка... Вам нужно только выждать драматическую паузу перед объявлением победителей — в каждой номинации он один, и определяется большинством голосов. Готовы? В номинации «Продукт года» золотая мышь достается компании: 🐀NetVision за платформу интеллектуального мониторинга СИМ. В номинации «Облачный продукт года» побеждает компания: 🐀Гравитон с паком виртуализации «Гелиус» Звание «IT-ивент года» вручается компании: 🐀Островок! за О!Хакатон И в категории «Дизайн года» первое место занимает компания: 🐀AcademiaDev за интерактивную инсталляцию. Каждый ваш лайк, голос влияли на исход премии. Давайте поддержим всех — ставьте 🏆участникам, которые хоть и не заняли призового места, но точно остались в …
Читать целикомПять функций Android Studio для работы с изменениями в коде Android Studio умеет отложить локальные правки без коммита, упаковать их в патч и разобрать конфликт слияния в редакторе из трёх секций. Это пригодится Android-разработчику при переключении между задачами и ревью кода. Практическое руководство по встроенным функциям контроля версий разбирает ещё историю файла, выделенного фрагмента и отдельных строк: так можно найти коммит и автора изменения перед исправлением бага. Несколько списков изменений разделяют незавершённые правки на группы, чтобы не смешивать их в одном коммите. Отложенные правки хранит сама IDE, а не Git. Если установка Android Studio повредится, изменения можно потерять. В материале показаны действия в меню и снимки интерфейса.
SwiftUI List против UICollectionView: как измерить тяжёлую ленту в iOS 26.1 Автор собрал две версии одной ленты: с GIF-анимациями, изображениями высокого разрешения, градиентами, ячейками разного размера и жестами. Общую модель данных и обработку GIF он по возможности оставил одинаковыми, чтобы сравнение SwiftUI и UIKit не свелось к разнице в реализации. В разборе профилирования List и UICollectionView показаны замеры задержек кадров, памяти, загрузки процессора и нагрева на iPhone 17 с iOS 26.1. Например, SwiftUI-версия за 24 секунды получила 78 задержек кадров и два зависания примерно по две секунды. Это не универсальный приговор фреймворку, а воспроизводимый стенд с открытым проектом. Его можно взять за основу, чтобы прогнать собственный экран через Instruments и сравнить реализации …
Читать целикомКак закрепить границы Clean Architecture в Swift Packages Папки Domain, Data и Presentation сами по себе не мешают экрану обратиться к базе или стороннему SDK. В разборе SwiftUI-приложения Popcorn каждую архитектурную границу превращают в отдельный Swift Package с явным списком зависимостей. Контексты отвечают за предметные области вроде фильмов и поиска, а feature-модули содержат экраны и модели представления. Внутри контекста домен не зависит ни от чего, прикладной слой хранит сценарии, инфраструктура работает с источниками данных, а композиционный модуль связывает части. SDK TMDb остаётся в адаптере, поэтому остальной код о нём не знает. Такие границы проверяет компилятор: запрещённый импорт ломает сборку, а добавление зависимости в Package.swift видно на ревью. Сценарии можно тестир…
Читать целикомКак нативные контролы SwiftUI меняются в iOS 26 без правок интерфейса Один бинарник, собранный в Xcode 26.6 с SDK iOS 26.5 и минимальной версией iOS 17, запустили на iOS 17.5 и 26.3. Визуальное сравнение интерфейсов показывает изменения, которые SwiftUI применяет автоматически: добавлять glassEffect() не требуется. Кнопки становятся капсульными, ползунки с шагом получают деления, панель вкладок приподнимается над контентом. У переключателей, сегментированного выбора, панелей инструментов и модальных экранов тоже меняются формы и фон. После обновления SDK стоит пересобрать приложение и проверить основные экраны на старой и новой iOS. Сворачивание панели вкладок и собственные стеклянные эффекты уже требуют дополнительных API.
Как собрать стабильную пирамиду тестов для Flutter-приложения Руководство по тестированию Flutter разбирает unit-, widget-, golden- и integration-тесты. Логику предлагают выносить из виджетов, связи интерфейса проверять widget-тестами, а запуск, авторизацию, покупки, плагины и платформенные каналы — на устройстве или эмуляторе. pumpAndSettle() ждёт прекращения новых кадров, поэтому бесконечный индикатор приводит к тайм-ауту. Вместо него автор управляет кадрами через pump(), а асинхронным результатом — через Completer. Для golden-тестов разобраны расхождения снимков в macOS и Linux CI: влияют шрифты и окружение. Их лучше оставить для выбранных компонентов и запускать в зафиксированной среде.
Почему @ObservedObject сбрасывает модель в SwiftUI @ObservedObject следит за изменениями модели, полученной извне, но не хранит созданный внутри представления экземпляр. Когда состояние родителя меняется, SwiftUI может заново создать значение дочернего View. Вместе с ним появится новый CounterViewModel, а счётчик вернётся к нулю. Если дочернее представление само создаёт модель, объявляйте её через @StateObject. SwiftUI сохранит экземпляр, пока считает представление тем же самым. Если модель создаёт родитель, он хранит её через @StateObject и передаёт ребёнку как @ObservedObject. Для нового кода под iOS 17 и новее источник предлагает @Observable с @State, но правило владения остаётся тем же. Пример со сбрасывающимся счётчиком и варианты исправления приведены с кодом.