Перейти к содержимому
Технологии IT обновлён 26.12.2021

Библиотека мобильного разработчика

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

Публикации канала

⚙️ Android меняет правила записи контактов для приложений под следующую версию ОС Google объявил об изменениях доступа к контактам. Для приложений, нацеленных на следующую версию Android в 2027 году, WRITE_CONTACTS перестанет давать право напрямую менять адресную книгу. Для сохранения контакта по действию пользователя предлагается системный редактор. Приложение передаёт ему готовые поля, пользователь проверяет и сохраняет запись: val intent = Intent( Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI ).apply { putExtra(ContactsContract.Intents.Insert.NAME, "Анна") putExtra(ContactsContract.Intents.Insert.PHONE, "+79991234567") } context.startActivity(intent) Отдельный доступ MANAGE_CONTACTS предназначен для приложений, которым массовая работа с контактами нужна по основной функции: например, для фоновой синхронизации CRM. Он появится в Android 17 QPR2. Найдите в проекте WRITE_CONTACTS и прямые записи через ContactsContract. Для действий «сохранить номер» или «добавить контакт» подготовьте переход на системные intents. 🐸 Библиотека мобильного разработчика

Открыть в Telegram

Mobile вызывает. Ответите? 📱 VK JT Mobile Meetup на связи сразу в двух городах: 📍 В Москве — 31 октября 📍 В Санкт-Петербурге — 14 ноября В Москве вас ждут два параллельных трека — iOS и Android, а в Петербурге — один общий мобайл-трек. На проводе будут инженеры ВКонтакте, Дзена, MAX, VK Tech и других команд VK. В программе — реальные кейсы мобильной разработки: 120 FPS, импакт-анализ, снапшот-тесты, ИИ, архитектура и другие задачи продакшена. После докладов можно обсудить кейсы с другими разработчиками, поучаствовать в интерактивах и пообщаться на афтепати. Митапы рассчитаны на iOS- и Android-разработчиков и пройдут только офлайн. Принимайте вызов в своём городе! → Регистрация

Открыть в Telegram

🖥 AsyncSequence позволяет обновлять экран по мере загрузки данных Экран собирает данные из нескольких источников. Если ждать общий результат, пользователь всё это время видит загрузку. В разборе загрузки через AsyncSequence показан подход для экрана с 40–50 запросами к HealthKit. Запросы объединяют в этапы. После каждого этапа последовательность возвращает накопленные данные, и интерфейс может обновиться. Внутри этапа независимые операции можно запускать через async let. Порядок этапов задаётся явно: первыми загружаются данные, которые нужны пользователю сразу. Приём пригодится для дашбордов и экранов со множеством блоков. Разделите загрузку на несколько частей и покажите первый полезный результат до завершения остальных запросов. В статье есть реализация последовательности и обработка отмены. 🐸 Библиотека мобильного разработчика

Открыть в Telegram

📱 Android CLI даёт доступ к удалённым физическим устройствам через Device Streaming Ошибка проявляется только на определённом телефоне, которого нет под рукой. Эмулятор помогает проверить многое, но не воспроизводит все особенности реального устройства. Android CLI получил доступ к Android Device Streaming. Теперь работать с удалённым физическим устройством можно через командные инструменты, включая сценарии с агентом разработки. Это дополняет возможности CLI для сборки, тестирования и управления Android-проектами. Для проверки поведения на устройстве больше не обязательно начинать с ручной работы в интерфейсе IDE. Удалённое устройство не равно локальному эмулятору Доступ зависит от сервиса Device Streaming, подключения и доступных устройств. Стоит заранее проверить условия использования и квоты, особенно если планируете регулярные прогоны. И проверка на одном телефоне не заменяет матрицу устройств. Версия ОС, архитектура, объём памяти и особенности производителя могут влиять на поведение приложения по-разному. Полезный сценарий — воспроизвести конкретный дефект на нужном устройстве, собрать данные и затем закрепить исправление тестом. 🔗 Что добавили в Android CLI #Android 🐸 Библиотека мобильного разработчика Android Developers Device Streaming and Android skills - available in Android CLI | Android Developers' Blog As Android developers, you have many choices when it comes to the agents, LLMs, tools, and command-line interfaces (CLI) you use for app development. Our…

Открыть в Telegram

🖥 Swift 6.4 позволяет постепенно переносить проверки между XCTest и Swift Testing В проекте сотни тестов на XCTest, а новые хочется писать через Swift Testing. Переписывать весь набор за один подход необязательно. Swift 6.4 добавляет совместимость проверок: XCTAssert можно использовать в тестах Swift Testing, а #expect — внутри XCTest. Это помогает переносить тесты небольшими частями, сохраняя знакомые проверки там, где их пока нет смысла менять. Смешивание проверок не превращает фреймворки в один У XCTest и Swift Testing остаются собственные способы объявления тестов, настройки запуска и организации жизненного цикла. Совместимость утверждений не означает, что любую инфраструктуру одного фреймворка можно без изменений перенести в другой. Практический путь — выбрать небольшой модуль, перенести несколько тестов и проверить результат локально и в CI. Отдельно убедитесь, что падения корректно отображаются в отчётах. Эта возможность относится к Swift 6.4. Перед использованием проверьте версию инструментов, которой тесты действительно собираются на машине разработчика и в CI. 🔗 Изменения тестирования в Swift 6.4 #iOS 🐸 Библиотека мобильного разработчика Swift.org Swift 6.4 Released Swift 6.4 is now available. Swift aims to be a great choice across the stack, from apps and servers to systems code, embedded devices, and the browser. This release deepens that support, and makes everyday code easier to write. Highlights include:

Открыть в Telegram

📌 Один курс — хорошее вложение в себя. Два по той же цене — ещё лучше. В Proglib Academy действует акция: покупаешь один курс, а второй получаешь в подарок. Например, можно совместить два направления по работе с ИИ: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. 📍 Разница в цене — почти 50 тысяч рублей. Можно освоить больше, не выходя за рамки запланированного бюджета. А если тебе интереснее Python, алгоритмы, backend или DevOps — выбирай другую пару курсов из каталога. Акция действует до 31 октября включительно ⏳ ⏮️ Пора прокачать свой стек

Открыть в Telegram

⚙️ Kotlin Toolchain 0.13 упрощает создание KMP-проекта и подготовку iOS-окружения Для первого KMP-приложения мало написать общий код. Нужны SDK, корректно настроенный Xcode, симулятор и сборка для каждой платформы. Kotlin Toolchain предлагает единый вход через CLI и декларативную конфигурацию. В версии 0.13 появилась интерактивная команда создания проекта: kotlin new Она предлагает выбрать тип приложения и целевые платформы. Команда kotlin init тоже остаётся: она создаёт файлы непосредственно в текущем каталоге. Для iOS улучшили диагностику принятия лицензии Xcode и первоначальной настройки. Нужные среды симулятора могут загружаться автоматически; если симулятора нет, инструмент создаёт его. На Android недостающие компоненты SDK теперь подготавливаются и при импорте проекта в IDE, а не только после запуска сборки из терминала. Рекомендация относится прежде всего к новым проектам Toolchain сохраняет статус Alpha. Рекомендация JetBrains для большинства новых KMP-проектов не означает, что существующий Gradle-проект нужно немедленно переносить. Для текущего приложения сначала проверьте поддержку зависимостей и привычного процесса сборки. 🔗 Что изменилось в Kotlin Toolchain 0.13 🐸 Библиотека мобильного разработчика The JetBrains Blog Start Your Next KMP App With Kotlin Toolchain 0.13 - The JetBrains Blog We now recommend the Kotlin Toolchain for most new KMP projects. Version 0.13 adds kotlin new, SwiftPM support, smoother iOS setup, and faster rebuilds.

Открыть в Telegram

⚙️ Android Studio переносит анализ утечек LeakCanary с устройства на компьютер Поиск утечки требует не только снять дамп кучи, но и разобрать связи между объектами. Если анализировать всё на тестовом телефоне, диагностика сама конкурирует с приложением за ресурсы. В обзоре Android Studio Quail описана интеграция LeakCanary с профилировщиком: анализатор Shark работает на компьютере разработчика, а не на устройстве. Так можно исследовать, почему объект остаётся достижимым, не перекладывая основную работу анализа на телефон. Команда сообщает о пятикратном ускорении трассировки утечек в своих измерениях. Что эта цифра не означает Она не описывает ускорение приложения и не гарантирует такой же результат для любого дампа. Сбор данных с устройства по-прежнему нужен, а время анализа зависит от объёма и структуры кучи. Найденный путь удержания — отправная точка для проверки. Например, Activity может удерживаться слушателем, который забыли снять, но сам факт долгой жизни объекта ещё нужно сопоставить с ожидаемым жизненным циклом. После исправления повторите сценарий: объект должен освобождаться там, где это предполагает архитектура приложения. 🔗 Интеграция LeakCanary в обзоре Android Studio #Android 🐸 Библиотека мобильного разработчика Android Developers Blog Leverage Android skills and Gemma 4 in Android Studio Quail 4 News and insights on the Android platform, developer tools, and events.

Открыть в Telegram

🖥 Swift 6.4 помогает LLDB находить именно тот модуль, с которым собрали приложение На точке останова простая переменная выводится сразу. А обращение к вычисляемому свойству заставляет отладчик задуматься: (lldb) p myObj (lldb) p myObj.myComputedProperty Это могут быть разные пути. Для просмотра обычного значения LLDB иногда достаточно отладочной информации и метаданных. Для вычисления выражения он использует встроенный компилятор Swift, которому нужны модули приложения. Раньше поиск модуля по имени мог быть неоднозначным. А при холодном кеше неявный импорт запускал дорогую подготовку модуля и его зависимостей. Изменения, начатые в Swift 6.3 и завершённые в 6.4, позволяют точнее отслеживать явно собранные модули через отладочную информацию. LLDB получает сведения о нужных зависимостях вместо поиска только по имени. Для большинства проектов SwiftPM и Xcode улучшение работает без изменений настройки. Собственные системы сборки на Bazel, Buck или CMake могут потребовать адаптации. Это не обещание мгновенного выполнения любого выражения в отладчике. Вызов вычисляемого свойства всё ещё может выполнять код приложения. 🔗 Как LLDB использует модули Swift #iOS 🐸 Библиотека мобильного разработчика Swift.org Module Tracking in Swift Debug Info When your Swift program hits a breakpoint and stops so you can inspect it, the debugger’s expression evaluator has to find the exact Swift module your code was built from. Until now, that lookup wasn’t always precise. The upcoming Swift 6.4 release will include…

Открыть в Telegram

😎 Выбираешь один курс, второй получаешь бесплатно. Баг? Нет, акция! До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один. Например, можно совместить: 💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью. 💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений. Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽ 🔥 Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога. Акция действует до 31 октября включительно ⏳ ⏬ Собрать свой учебный билд

Открыть в Telegram

⚙️ Раздельная компиляция KMP выявляет обращения общего кода к платформенным объявлениям IDE подсвечивает ошибку, а проект собирается. В KMP такое возможно, если общий код обращается к платформенному объявлению из зависимости. Например, библиотека содержит класс только для JVM: // lib/jvmMain class PlatformStorage // app/commonMain fun createStorage() = PlatformStorage() IDE считает такой вызов недоступным из commonMain. Но при прежней схеме сборки общий код мог компилироваться против платформенного артефакта зависимости — и вызов проходил. В Kotlin 2.5.0-Beta1 появился экспериментальный режим раздельной компиляции: kotlin.kmp.separateCompilation=true Общие наборы исходников в нём проверяются по общим объявлениям зависимостей. Компилятор становится строже и согласуется с анализом IDE. Исправление — перенести контракт в общий код, при необходимости связав его с платформенной реализацией через expect/actual. Если код действительно относится только к JVM, ему место в jvmMain. Режим выключен по умолчанию и имеет известные ограничения. После включения старый проект может перестать собираться: скрытая платформенная зависимость станет явной ошибкой. 🔗 Почему IDE и компилятор расходились #АрхитектурныйКод 🐸 Библиотека мобильного разработчика The JetBrains Blog A More Reliable Compilation Scheme for Kotlin Multiplatform Modules - The JetBrains Blog The current compilation approach to Kotlin Multiplatform projects works, but sometimes can lead to unexpected or hard-to-predict behavior. For example: The IDE analysis disagrees with the compiler

Открыть в Telegram

📱 StateFlow не знает, виден ли экран Сбор StateFlow из обычного launch сам по себе не останавливается, когда UI перестаёт быть виден. Обновление скрытого представления может закончиться ошибкой. Для Android UI документация предлагает repeatOnLifecycle(STARTED). Блок запускается при переходе в STARTED или выше, отменяется при остановке и создаётся заново, когда экран возвращается. API есть в lifecycle-runtime-ktx 2.4.0+. При этом отменяется UI-collection, а не обязательно источник данных. Работа upstream зависит от того, как он создан и какой режим sharing выбран. Не делайте вывод «сбор на экране остановлен, значит запросы и фоновые задачи тоже остановились». StateFlow и жизненный цикл Android #АрхитектурныйКод #JuniorKit #Android

Открыть в Telegram

📱 Compose: effect живёт, а callback уже изменился Экран ждёт завершения таймера в LaunchedEffect. При рекомпозиции ему передали новый callback. Перезапускать ожидание не нужно, но вызвать старую функцию тоже нельзя. Для этого есть rememberUpdatedState: effect получает ссылку на State с актуальным значением. После рекомпозиции он продолжает прежнюю работу, а в конце обращается к обновлённому callback. Если же изменение параметра должно перезапустить операцию, включите его в ключи effect. Постоянный ключ Unit или true имеет смысл только когда операция действительно должна жить до выхода этого вызова из композиции. Это не универсальный способ убрать перезапуски. Пример LandingScreen в документации Compose #АрхитектурныйКод #MiddlePath #Android

Открыть в Telegram

Forwarded From 👀 Как вы смотрите видео? Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране? Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить. 🕰️ Опрос займёт около 3 минут. В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео. 🔗 Поделиться опытом 🐸 Библиотека программиста

Открыть в Telegram

Forwarded From От чатбота к агентам: опыт Митчелла Хашимото Для работы с кодом Хашимото перешёл от отдельного чата к агенту, который читает файлы проекта и запускает программы. После этого начал повторять собственную работу: сначала решал задачу сам, затем давал её агенту без готового решения. Так он выяснял, какие задачи можно поручать ИИ. Дальше добавлял инструкции в AGENTS.md, файл с правилами проекта, и способы проверить изменения, включая запуск тестов. В истории освоения ИИ в разработке Хашимото связывает выбор задач с настройкой рабочего окружения. Отдельные чаты при этом остались в его повседневной работе. #ии #инструменты

Открыть в Telegram

Forwarded From Где вы чаще всего работаете с ИИ-инструментом? Anonymous Poll 33% - В отдельном окне чата или веб-версии 21% - Прямо в редакторе кода 26% - В терминале 2% - Через корпоративные сервисы или платформы 18% - По-разному, зависит от того, что нужно сделать

Открыть в Telegram

🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы, а сами работают с данными, инструментами и выполняют цепочки действий. На курсе «Разработка ИИ-агентов» разбираем всё, что нужно для этого уровня: ⬇️ RAG и работа с данными ⬇️ MCP и инструменты ⬇️ структурированный вывод ⬇️ контроль качества и стоимости ⬇️ мультиагентные системы ⬇️ AgentOps Курс полностью в записи — проходите материалы в своём темпе, без привязки к расписанию. ⏰ 4 октября цена вырастет на 10 000 ₽. Если давно хотели разобраться в AI-агентах — сейчас ещё можно зайти по текущей цене. 🔗 ⁠Посмотреть курс

Открыть в Telegram

🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать его в разработку так, чтобы он действительно экономил время. На курсе «ИИ для разработчиков» собираете AI-workflow на своём проекте: от задачи и планирования до тестов, ревью и PR 🤩 Разберёте AI-агентов, MCP, контекст проекта, безопасность и контроль расходов на модели. 📍 Только сегодня, 30 сентября — скидка 10 000 ₽ Промокод: LastcallAI 🤩 ⁠Присоединиться к курсу

Открыть в Telegram

😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как тратить меньше на AI-агентов — без потери качества кода. 🔘 Поговорим о том: — когда дорогая модель действительно нужна, а когда хватит дешёвой; — сколько стоит один прогон и куда уходят токены; — какие задачи можно отдавать субагентам; — как настроить маршрутизацию моделей; — что проверять в AI-коде перед merge. ✏️ Покажем всё на конкретных цифрах и вживую: сравним расходы до и после. ⬇️ 17 сентября, 19:00 МСК ⬇️ 1,5 часа · бесплатно ⬇️ Арсений Харланов и Олег Лайок 💬 Пишите в комментариях, где упираетесь в лимиты и на что уходят деньги. Самые залайканные вопросы разберём на вебинаре. 🔗 Зарегистрироваться на вебинар⁠

Открыть в Telegram

CombineOperatorsCheatSheet.pdf 1.6 MB 🖥 Наглядная шпаргалка по операторам Combine Внутри: описанием распространенных операторов Combine и схемами для каждого из них, иллюстрирующими, как значения проходят через конвейер. На схемах показаны наиболее часто используемые операторы. 🐸 Библиотека мобильного разработчика

Открыть в Telegram

Комментарии

0

Комментарии пишут вошедшие — так видно, кто автор.

Войти

Комментариев пока нет

Будьте первым, кто расскажет о канале другим.

Пожаловаться на канал

Расскажите, что не так: модератор проверит канал и примет решение. Подпись не нужна, но почту можно оставить — тогда ответим.

Причина Что не так (необязательно) Почта для ответа (необязательно)
Открыть в Telegram