AppFiles - Mobile Development
Открыть в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Больше2 170
Подписчики
Нет данных24 часа
+47 дней
+630 день
Архив постов
Как сделать тесты на Espresso более читабельными и стабильными
Если вы писали тесты на Espresso — тестовом фреймворке от Google с открытым исходным кодом, — то вы знаете, что они не всегда стабильны и легко читаемы. Меня зовут Ксения Никитина, я являюсь Android-разработчиком в мобильной команде «Лаборатории Касперского». В этой статье я предложу вам способ, как сделать так, чтобы ваши автотесты отвечали всем ключевым качествам: были хорошо читаемы, стабильны, логируемы, давали возможность делать скриншоты, работали с AndroidOS и, наконец, имели продуманную и понятную архитектуру.
Статья: https://habr.com/ru/companies/kaspersky/articles/770108/
Платформа: Android/тестирование
Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS
Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.
Статья: https://habr.com/ru/articles/771948/
Платформа: iOS
Tabman - мощный Page View Controller с интерактивными индикаторными полосами. Несколько вариантов представления, расширяемый, легко настраиваемый.
Tabman на GitHub: https://github.com/uias/Tabman
Платформа: iOS
⭐️: 2.7K
Видео и подкасты за неделю:
•
(iOS Ru) Кнопки красить — это вам не деревья вертеть
• (iOS En) New SwiftUI Photo Picker - Single & Multiple Selection
• (iOS En) SwiftData CRUD Operations
• (iOS En) How to solve nested Observable Objects issue
• (iOS En) Swift Connection 2023 Videos
• (iOS En) Cleaner, Safer Code with Swift KeyPaths
• (iOS En) A Tour of Xcode Cloud
• (iOS En) An Easier Dev Life with Kaleidoscope
• (And Ru) Собеседование с Михаилом Левченко
• (And Ru) Управление сложностью состояния
• (And En) Now in Android: 94 - #TheAndroidShow, Jetpack Glance, Google Play policy updates, and more
• (And En) AndroidX, Gradle and Metalava - Android Developers Backstage
• (And En) When Should You Migrate to Jetpack Compose?
• (And En) 3 Clean Code Hacks I Bet You Didn't Know
• (And En) What's new in Kotlin 1.9.20
• (And En) Making Threads for Android
• (And En) Kotlin & Android Development Course: Build a Quiz Application
• (Crs En) A Complete Guide on “Login with WhatsApp” in Flutter Apps (w/ backend)
• (Dev Ru) Backend Driven… Аналитика!
• (Dev Ru) Podlodka #341: рендеринг текста проклят
Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻💻Skip - это технология для создания двухплатформенных мобильных приложений на языке Swift. Сердцем Skip является интеллектуальный транспилятор языка Swift в Kotlin. Для анализа исходного текста Swift в Skip используется собственная библиотека Apple SwiftSyntax - та же самая, что используется в макросах Swift. Затем она преобразует код в понятный для восприятия Kotlin, сохраняя даже комментарии. Благодаря схожести языков, результат часто не отличается от Kotlin, который вы написали бы вручную (заметным исключением является перенос SwiftUI в Compose. Тот факт, что SwiftUI является объектно-ориентированным, а Compose - функциональным, требует некоторых неуклюжих преобразований исходного кода). Вместе с транспилятором Skip поставляет конвертер проектов Swift Package Manager (SPM) в Android Gradle. Skip объединяет эти инструменты в плагин для сборки Xcode. Этот набор инструментов Skip называется SkipStone. В этом репозитории как раз он и размещен. Здесь также размещены форумы Skip для общих обсуждений, а также для обсуждения конкретных проблем и сообщений об ошибках.
Skip на GItHub: https://github.com/skiptools/skip
Платформа: iOS/кроссплатформа
⭐️: 426
touchHLE - это высокоуровневый эмулятор приложений для iPhone OS. Он работает на современных настольных операционных системах и Android и написан на языке Rust.
Подход touchHLE к высокоуровневой эмуляции (HLE) отличается от низкоуровневой эмуляции (LLE) тем, что он не имитирует непосредственно аппаратное обеспечение iPhone/iPod touch. Вместо того чтобы запускать iPhone OS внутри эмуляции, touchHLE сам занимает место iPhone OS и предоставляет собственные реализации системных фреймворков (Foundation, UIKit, OpenGL ES, OpenAL и др.). Единственный код, который выполняет эмулируемый процессор, - это бинарный файл приложения и несколько библиотек.
Цель проекта - запуск игр, появившихся на заре iOS. В настоящее время работают приложения для iPhone и iPod touch для iPhone OS 2.x. Далее ожидается поддержка iPhone OS 3.0. В долгосрочной перспективе iPhone OS 3.1, приложения для iPad (iPhone OS 3.2), iOS 4.x.
Поддержка приложений, которые не являются играми, не является приоритетной - это сложнее и менее интересно.
touchHLE на GitHub: https://github.com/hikari-no-yume/touchHLE
Платформа: iOS
⭐️: 2K
Байт-код — это просто! Как сделать DI по-настоящему быстрым
Два года назад мы в Яндекс Маркетае начали разрабатывать свой легковесный DI-фреймворк Scout, который предоставляет выразительный Kotlin DSL. Он не генерирует код, а делает всю работу в рантайме.
Недавний переход с compile-time-библиотеки Dagger 2 на нашу привёл к замедлению старта приложения.
В этой статье мы будем подробно рассматривать то, как применение байт-кода помогло сохранить скорость на том же уровне и спасти проект по миграции на Scout.
Статья: https://habr.com/ru/companies/yandex/articles/770800/
Платформа: Android
ComposeNumericRoller демонстрирует динамическую анимацию цифр в Android-приложении с помощью Jetpack Compose. Легко анимируйте меняющиеся цифры, прокручивая их вверх или вниз, чтобы обеспечить красивое взаимодействие с пользователем.
ComposeNumericRoller на GitHub: https://github.com/HadiDortaj/ComposeNumericRoller
Платформа: Android
⭐️: 7
Local AI Stack - этот репозиторий содержит стартовый набор для создания ИИ-приложений, работающих локально. С его помощью любой желающий может бесплатно создать простое ИИ-приложение для работы с вопросами и ответами на основе собственных документов. В наборе используются Ollama для создания модели, LangChain для оркестровки LLM и Next.js для логики приложения.
Local AI Stack на GitHub: https://github.com/ykhli/local-ai-stack
Платформа: разработка/ИИ
⭐️: 220
Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти
В этой статье я постараюсь рассказать, что такое BDUI с точки зрения бэкенд-разработчика, как мы прошли путь от стандартного API с данными для фронтенда до UI JSON-файлов, по которым строятся экраны приложения. Этот пост будет интересен тем, кто планирует перейти на этот подход, но пока не знает, как это сделать максимально плавно и сразу обойти проблемы, с которыми повстречались мы.
Статья: https://habr.com/ru/companies/yandex/articles/768282/
Платформа: разработка
Moya - слой сетевых абстракций поверх Alamofire, который в достаточной степени инкапсулирует непосредственные вызовы сетевой библиотеки. Некоторые замечательные функции Moya:
• Проверка корректности доступа к конечным точкам API во время компиляции.
• Четкое определение использования различных конечных точек с соответствующими перечислениями.
• Тестовые заглушки рассматриваются как рабочие, поэтому Unit-тестирование становится очень простым.
Moya на GitHub: https://github.com/Moya/Moya
Статья: Обработка сетевых вызовов в Swift с помощью Moya
Платформа: iOS
⭐️: 14.8K
FlorisBoard - это бесплатная клавиатура с открытым исходным кодом для устройств на базе Android 7.0+. Она нацелена на то, чтобы быть современной, удобной и настраиваемой, при этом полностью уважать конфиденциальность пользователей. В настоящее время находится в состоянии ранней бета-версии. Внутри AndroidX, Accompanist Compose UI, KotlinX, ICU4C.
FlorisBoard на GitHub: https://github.com/florisboard/florisboard
Платформа: Android
⭐️: 4.6K
Что будет если команда, не видавшая Compose, решила делать новую сложную фичу на нём?
Меня зовут Дмитрий Максимов, я Android разработчик в Dodo Engineering. Больше 2-х лет я пробовал Jetpack Compose в пет-проектах, но хотелось прокачать свои знания по полной и попробовать фреймворк в настоящем проде. В этой статье расскажу, как мы сделали сложный Compose экран с нестандартным скроллом и снаппингом контента.
Статья: https://habr.com/ru/companies/dododev/articles/764540/
Платформа: Android
Регулировка громкости наушников Bluetooth
Недавно я приобрел наушники Tozo T6. Они замечательные, и я их люблю, но при сопряжении, отключении или подключении они воспроизводят звук, который, на мой взгляд, слишком громкий. Я не смог исправить это, например, настроив эквалайзер на уменьшение нескольких децибел по всему диапазону. Я спросил производителя об этом по электронной почте, и они быстро ответили, что ничего не могут сделать, что вполне понятно - это, вероятно, не самая распространенная просьба. Но для меня это было слишком громко, чтобы продолжать пользоваться ими, поэтому я решил попытаться решить проблему самостоятельно.
Статья: https://blog.ornx.net/post/bluetooth-volume-fix/
Как устроены собеседования в SberDevices — Максим Сидоров
Второе интервью с Максимом Сидоровым из SberDevices, в котором он рассказывает про процесс собеседований в компании.
Интервью: https://apptractor.ru/info/interview/kak-ustroeny-sobesedovaniya-v-sberdevices-maksim-sidorov.html
Платформа: Android/собеседования
Aidoku - открытое бесплатное приложение для чтения манги для iOS и iPadOS.
Aidoku на GitHub: https://github.com/Aidoku/Aidoku
Платформа: iOS
⭐️: 1.1K
Обновил подборку онлайн собеседований мобильных разработчиков
Всего 60! записей - для Junior, Middle и Sénior собеседователей.
Все видео: https://apptractor.ru/sobesedovaniya
Видео и подкасты за неделю:
•
(iOS Ru) Автоматизация ревью ресурсных картинок в iOS
• (iOS Ru) ChatGPT в мобильной разработке: как использовать, чтобы получить пользу
• (iOS Ru) Реальное iOS собеседование в Яндекс
• (iOS En) Mastering TipKit in iOS 17
• (iOS En) SwiftUI: Building Notes App + SwiftData + CRUD
• (iOS En) Build a Twitch-Like Live Streaming App With SwiftUI
• (iOS En) Resizable Custom Tab Bar for macOS
• (iOS En) Lock SwiftUI View With Biometric/Custom Number Lock - Local Authentication
• (And Ru) Собеседование в Яндекс: платформа Android
• (And Ru) Kodein в Android. Что за зверь и как его готовить
• (And Ru) Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• (And En) #TheAndroidShow: faster and easier to build excellent apps, across devices!
• (And En) Play PolicyBytes
• (And En) 95% Don't Understand THIS About Coroutines (Main-Safety)
• (And En) Which Compile Options Should You Choose? (Java & Kotlin Version)
• (Crs En) Building a Spotify Music Player with Real-Time Lyrics using Flutter
• (Dev Ru) Avito Platform engineering meetup #2
• (Dev Ru) Ozon Tech Community ML&DS Meetup
• (Tst Ru) Полный курс по QA. Как правильно писать тесты?
• (Tst Ru) Как изменились подходы к автоматизированному тестированию в Тинькофф
• (Tst En) Beginner Guide to Mutation Testing in Kotlin
Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻💻Twine - это многоплатформенное приложение для чтения RSS-лент, созданное с использованием Kotlin и Compose Multiplatform. Оно обладает приятным пользовательским интерфейсом и удобным просмотром потоков, а также поддерживает динамическое тематическое оформление контента на основе Material 3. Внутри Kotlin Multiplatform, корутины, Compose Multiplatform, Ktor, SQLDelight, Decompose и Kotlin-inject.
Twine на GitHub: https://github.com/msasikanth/twine
Платформа: Android/кроссплатформа
⭐️: 593
Готов ли Swift OpenAPI Generator для продуктивного кода?
Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.
На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.
Статья: https://habr.com/ru/companies/ozontech/articles/769624/
Платформа: iOS
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
