AppFiles - Mobile Development
2.18K subscribers
3.29K photos
48 videos
14 files
4.31K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Sill - любое окно с Mac на iPhone или iPad

Приложение Sill позволяет отображать окно с вашего Mac (или весь рабочий стол целиком) на экране iPhone или iPad. Вы можете управлять им с помощью сенсорного ввода, трекпада, клавиатуры или стилуса Apple Pencil. Sill для Mac захватывает изображение окна, кодирует его в видеоформат HEVC и передает в приложение Sill на вашем устройстве. Все ваши действия — касания, клики, прокрутка или нажатия клавиш — передаются обратно на Mac. Устройства могут подключаться друг к другу через общую сеть, по USB-кабелю, посредством прямого беспроводного соединения (Direct Wireless Connection) — если общая сеть отсутствует, — либо через вашу собственную VPN-сеть (например, Tailscale) для удаленного доступа. При этом не требуется создание учетной записи, а данные не проходят через сторонние серверы.

Sill на GitHub: https://github.com/Saffsanity/sill
Платформа: iOS
⭐️: 4.2K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Android Studio Rabbit 2: больше ИИ (агентов)

Google выпустил Android Studio Rabbit 2 в стабильном канале, и главное изменение — Android Studio теперь фактически превращается в универсальную оболочку для разных кодинг агентов, а не только для Gemini.

Статья: https://apptractor.ru/info/articles/android-studio-rabbit-2-bolshe-ii-agentov.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
KassiOS: слой в стиле Kaspresso поверх XCUITest, проверенный на сломанном банке

Я пришёл в нативное iOS-тестирование из Appium, и простой логин на XCUITest раз за разом обрастал waitForExistence, ретраями и самописными хелперами. Так появился KassiOS — слой в стиле Kaspresso поверх XCUITest: тап с общим бюджетом ожидания, который не повторяется после отправки, перечитывание поля после ввода, понятные сообщения о падениях, параметризованные тесты.

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

Статья: https://habr.com/ru/articles/1100796/
Платформа: iOS/тестирование

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Доставляем 584 Мб модель Gemma через Google Play

Это новая библиотека Google, пока находящаяся в beta, которая позволяет приложениям загружать ИИ-модели во время установки, сразу после неё или по запросу. Она построена поверх Play Asset Delivery, где ресурсы загружаются только тогда, когда действительно нужны. Например, приложение с обоями может поставлять маленькие превью, а полноразмерные изображения скачивать только тогда, когда пользователь открывает нужную категорию или хочет установить конкретные обои.

Статья: https://apptractor.ru/info/articles/dostavlyaem-584-mb-model-gemma-cherez-google-play.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
671258351-002719e9-7886-4bf6-b982-a2e65f1c7589.webm
3.4 MB
CmpDevicePreview - предварительный просмотр Compose Multiplatform в веб

CmpDevicePreview позволяет отображать ваше приложение внутри рамки, имитирующей устройство. В состав библиотеки входит панель управления, с помощью которой можно менять тип устройства, ориентацию экрана, включать темную тему, настраивать размер текста и элементов интерфейса, направление верстки, а также выбирать язык и состояние клавиатуры. Панель можно адаптировать под свои нужды: менять расположение элементов или добавлять собственные настройки. Библиотека работает на Android, iOS, macOS (Apple Silicon), десктопных платформах (JVM), а также в средах JS и Wasm, что позволяет, например, разместить веб-демоверсию вашего приложения в сети.

CmpDevicePreview на GitHub: https://github.com/Apadmi-Engineering/CMPDevicePreview
Платформа: Android/кроссплатформа
⭐️: 38

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
📺 Видео и подкасты за неделю

• (iOS En) Boost your app’s speed and efficiency - Meet with Apple
• (iOS En) Bring Touch to your Mac app
• (iOS En) Bring Live Activities to Mac
• (iOS En) Design for Touch on Mac
• (iOS En) Apple's Birthday Card Fireworks Animation Using SwiftUI
• (iOS En) iPhone Duo Changes SwiftUI Layouts: Here’s How to Adapt Your App
• (iOS En) Compact Morphing Photo Picker using SwiftUI
• (And En) Trace me if you can: Automated instrumentation and field profiling
• (And En) Building audio-first experiences for intelligent eyewear with Gemini Nano 4
• (And En) Agentic engineering with Claude Code and Android CLI
• (And En) Optimize media playback and maximize reach with Jetpack Media3 APIs
• (And En) App security in the agentic era
• (And En) Elevating camera experiences across devices with CameraX and on-device intelligence
• (And En) The car is your canvas: Unlocking Android development for the road
• (And En) Declarative, agent-ready Android builds with Lightbuild
• (And En) Graphics features in Jetpack Compose that can elevate your app
• (And En) Migrating two decades of the Google Play app to Jetpack Compose
• (And En) Mastering on-device intelligence with ML Kit and LiteRT in Google Play services
• (And En) Extend your app to Gemini and Search with the Connected Apps Platform
• (And En) Scale your app for every screen with Compose
• (And En) Build optimized Android Apps with Firebase AI Logic and Gemini Nano 4
• (And En) Why You MUST Stick to Mutation Testing (Never Have Bad AI-Written Tests Anymore)
• (And En) Inside Kotlin's Language Design
• (And En) Can Kotlin Handle Low-Latency Audio?
• (AXR En) XR is for everyone: Designing accessible spatial experiences
• (AXR En) Build world anchored experiences for wired XR glasses
• (AXR En) Architecting Spatial Content on Android XR with Unity
• (AXR En) Elevate immersive experiences with 3D Engines in Jetpack Compose for XR
• (Crs Ru) Мониторим здоровье Gradle-сборки KMP проекта
• (Dev Ru) CI/CD не работает, и я знаю почему: карта точек отказа мобильного конвейера
• (Dev Ru) Это не я, это мой агент
• (Dev Ru) Вайбкодинг и будущее программистов — ИИ агенты, Кроссплатформа, Вход в IT
• (Dev En) Beginner's Guide to Integrating On-Device AI Agents In Your Mobile App (Android + iOS)

Прошлогодние видео:

• (And Ru) ART Memory Management
• (And Ru) Kotlin и контекстно-ориентированное мышление
• (And Ru) VK Звонки в лесу: звоним в плохих сетях
• (Dev Ru) Как вас взламывают через Open Source — DevSecOps и безопасная разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Начинаем работать с Lightbuild

Google начал переписывать ещё одну фундаментальную часть Android-разработки под ИИ-агентов. Появился Lightbuild — экспериментальная система сборки Android-проектов, где конфигурация описывается обычным YAML, а сборка управляется простым CLI. Новый проект можно создать прямо из Android Studio Canary или командой, а дальше агенту достаточно примерно такого набора:

lightbuild build app
lightbuild test app-core
android run --apks=app/build/app-debug.apk

Статья: https://developer.android.com/tools/agents/lightbuild/setup
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
OnboardingKit - онбординг на всех платформах Apple

OnboardingKit — это SDK для Swift и SwiftUI, позволяющий создавать гибкие процессы онбординга на всех платформах Apple.

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

Автор архивирует open-source OnboardingKit и переводит проект на закрытую модель с коммерческой лицензией. Это первый из нескольких его проектов, которые пойдут тем же путём. Главные причины две. Во-первых, стало меньше обратной связи от сообщества: меньше issues, pull requests и обсуждений, из-за чего поддержка 20+ open-source проектов всё чаще ощущается как работа в пустоту. Во-вторых, автору не нравится, что годы документации, тестов и архитектурных решений автоматически становятся материалом для обучения ИИ, который затем помогает другим воспроизводить похожие продукты без его участия. Новая схема такая: проекты будут публиковаться через его компанию Kankoda, с бесплатным и недорогим платным тарифом. Платная лицензия будет открывать дополнительные возможности, а лицензирование будет работать через собственный LicenseKit. Старые open-source версии никуда не исчезнут: они останутся публичными архивами под MIT-лицензией. Их можно продолжать использовать или форкнуть, но обновлений больше не будет.

OnboardingKit на GitHub: https://github.com/kankoda/onboardingkit
Платформа: iOS
⭐️: 1

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я без опыта разработки написал первые автотесты на Kotlin за месяц

Сегодня я часто встречаю тестировщиков, которые работают исключительно вручную и пока не представляют, как писать автотесты. Раньше я был таким же. Но времена меняются — нейросети проникают во все сферы, и подход «я только мануальщик» постепенно устаревает. Если ты QA и до сих пор не приступил к автоматизации, самое время задуматься об этом, пока за тебя не задумались другие. Особенно актуально это для тех, кто работает в Сбере: у тебя под рукой те же самые инструменты, которыми пользуюсь я. Банк их одобряет и активно развивает, чтобы ускорить и улучшить качество работы. Надеюсь, мой опыт вдохновит кого-то попробовать сделать то же самое.

Статья: https://habr.com/ru/companies/domclick/articles/1092854/
Платформа: Android/тестирование

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Orrery - календарь для Compose Multiplatform

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

Календари на месяц, неделю и год; одиночный, диапазонный и множественный выбор с помощью перетаскивания; диалоговые окна выбора даты, диапазона, даты и времени, а также месяца в стиле Material 3; расписания на день и неделю с повесткой дня; тепловые карты; и дополнительные модули для китайского лунного, хиджрийского, персидского языков и государственных праздников. Ячейки дня представляют собой настраиваемые слоты, оформленные в соответствии с вашей темой Material 3, а даты имеют тип kotlinx-datetime.
 
Orrery на GitHub: https://github.com/koza4e4ok/Orrery
Платформа
: Android/кроссплатформа
⭐️: 11

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
А вы устали от того, что приходится постоянно заново учиться разработке под Android?

Я занимаюсь разработкой Android-приложений с 2012 года и иногда задумываюсь, сколько раз за это время мне фактически приходилось начинать всё заново в этой экосистеме. Каждые 3–4 года кажется, что происходит какое-то серьёзное изменение. Переход с Eclipse на Android Studio, с Java на Kotlin, с XML на Compose, разные архитектурные подходы, устаревающие библиотеки и Google, который постоянно меняет свои рекомендации.

Не поймите меня неправильно: многие из этих изменений действительно сделали Android-разработку лучше. Но после того, как ты потратил годы на освоение чего-то, довольно неприятно наблюдать, как это постепенно устаревает.

Меня раздражает не необходимость изучать новое. На самом деле мне это даже нравится. Проблема в постоянном ощущении, что нужно успевать следить вообще за всем просто для того, чтобы оставаться востребованным.

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

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

Интересно, чувствует ли кто-нибудь ещё из тех, кто занимается Android-разработкой более десяти лет, то же самое.

Кто-нибудь здесь переходил из Android-разработки в архитектуру, backend, инженерное руководство или вообще в какую-то другую область? Скучаете по работе Android-разработчиком на полный день или рады, что сменили направление?

Статья: https://apptractor.ru/info/articles/a-vy-ustali-ot-togo-chto-prihoditsya-postoyanno-zanovo-uchitsya-razrabotke-pod-android.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
AnyDecisionModel - получение типизированных решений от языковых моделей

AnyDecisionModel — это Swift-пакет для типизированных решений: вероятностей «да/нет», выбора одного варианта из нескольких и оценок по порядковой шкале. API следует паттерну model-and-session из Foundation Models от Apple и AnyLanguageModel.
import AnyDecisionModel

enum Department: String, Choosable {
case billing, technical, sales
}

let ticket = "I was charged twice for my order, and now the app logs me out when I try to ask for a refund."

let model = MLXDecisionModel(modelID: "mlx-community/Qwen3-4B-Instruct-2507-4bit")
let session = DecisionSession(model: model, state: .text(ticket))

let urgent = try await session.probability(of: "Does this convey urgency?")
let team = try await session.choice("Which team?", from: Department.self)
let anger = try await session.score(
"How frustrated?",
levels: ["Calm", "Frustrated", "Very angry"]
)

Доступно шесть бэкендов:

• MLX запускает небольшую языковую модель на Apple silicon и получает каждое решение из вероятностей следующего токена за один forward pass.
• MLX decision heads запускает модель с обученной decision head, например Clef от Cloudflare.
• Core AI делает то же самое, что и MLX, но с Core AI-моделью на macOS 27 и iOS 27.
• llama.cpp работает аналогично MLX, но использует GGUF-модель через llama.cpp.
• Jev обращается к Jev от TypeSafe через System One API или к любому серверу, реализующему тот же API.
• Ollama обращается к System One-модели через Ollama, локально или через облако Ollama.

AnyDecisionModel на GitHub: https://github.com/mattt/AnyDecisionModel
Платформа: iOS
⭐️: 48

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
CallShield - блокировщик спама для Android

CallShield блокирует спам-звонки и помечает спам-сообщения с помощью on-device движка, включающего более 30 уровней обнаружения. В их число входят: алгоритм машинного обучения на основе градиентного бустинга, анализ признаков массовых рассылок и смены номеров, проверка идентификационных данных оператора связи, фильтрация уведомлений RCS и определение вызывающего абонента в режиме реального времени. Приложение использует базу данных из 51 407 номеров, дополненную лентой актуальных (популярных) спам-номеров, которая обновляется каждые 30 минут. Регистрация учетных записей не требуется, отслеживание пользователей не ведется.

CallShield на GitHub: https://github.com/SysAdminDoc/CallShield
Платформа
: Android
⭐️: 67

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Macintosh Skeletal Filled - шрифт helllllllllloooo

Знаменитый рукописный шрифт с экрана приветствия Apple («hello») теперь доступен в виде шрифта, которым можно печатать.

В macOS 27 и iOS 27 присутствует шрифт под названием Macintosh Skeletal — именно он используется для персонального приветствия, которое появляется при настройке нового Mac или iPhone. В исходном виде он состоит только из центральных линий каждого штриха. Система отрисовки Apple преобразует эти линии в объемные «трубки» и автоматически соединяет буквы между собой. В рамках данного проекта этот процесс воссоздан: созданы обычные шрифты с заливкой, в которых соединения между буквами в точности повторяют логику отрисовки Apple.

Macintosh Skeletal Filled на GitHub: https://github.com/npwitk/Macintosh-Skeletal-Filled
Платформа: разработка
⭐️: 719

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
📺 Видео и подкасты за неделю

• (iOS En) Apple Intelligence Group Lab + Apple Intelligence Group Lab
• (iOS En) Spotlight Onboarding Animation Using SwiftUI
• (iOS En) SwiftUI Swipe Actions Beyond List: ScrollView & Grids in OS 27
• (iOS En) App Icon Picker Using SwiftUI
• (And En) Agentic coding: a roundtable with industry leaders
• (And En) The state of post quantum cryptography on Android
• (And En) Converting an Android app to Multiplatform with Antigravity
• (And En) The Android developer career path
• (And En) Koin & the Kotlin Compiler
• (And En) A rocky journey to targetSDK 36
• (And En) Google Play PolicyBytes - October 2026 policy updates
• (And En) Insights into agent code generation from Android Bench
• (And En) Lessons from WhatsApp's Wear OS journey
• (And En) Building a Formula E co-driver on Android with ML Kit and Gemini Nano
• (And En) Building type-safe deep links with Jetpack Navigation3
• (And En) Evolving Tiles to Wear Widgets using Jetpack Glance and Remote Compose
• (And En) Let agents generate native Compose UI in your Android apps with A2UI
• (And En) Delivering Seamless Sign In and Digital Credentials on Android
• (And En) Enabling seamless cross-device interactions
• (And En) Actionable strategies for reducing your app's Bitmap memory footprint
• (And En) Outperform yourself in Compose
• (Crs En) The state of navigation in Kotlin Multiplatform
• (Dev Ru) System Design для SRE: как зарабатывать больше и не ронять прод
• (Dev Ru) Локальный AI для программирования - DeepSeek, Qwen, ИИ агенты
• (Dev En) Crash Course: Create Non-Slop App Designs With AI

Прошлогодние видео:

• (Crs Ru) Swift на Android — ход отчаяния Apple или стратегический манёвр?
• (Crs Ru) Как адаптировать свой KMP код под Аврору
• (Crs Ru) Наша навигация и её эволюция
• (Crs Ru) Выбираем DI для Kotlin Multiplatform
• (Dev Ru) ИИ в кармане: как встроить ИИ в мобильное приложение
• (Dev Ru) ИИ в серьёзной разработке: революция в IT или переоценённый хайп?
• (Dev Ru) Как с нуля создать ферму мобильных устройств
• (Dev Ru) Когнитивная нагрузка в интерфейсах и как с ней бороться

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM