AppFiles - Mobile Development
2.15K subscribers
2.9K photos
39 videos
11 files
3.84K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Codename One — нативные кроссплатформенные приложения на Java или Kotlin

Codename One — это кроссплатформенная среда разработки для Java и Kotlin, ориентированная на мобильные устройства. Она позволяет компилировать байт-код Java в исполняемые файлы нативных ОС (iOS, Android, UWP и т. д.). Это полноценная мобильная платформа, включающая виртуальные машины, симулятор, инструменты проектирования (визуальные темы/конструктор/CSS), интеграцию с IDE, портирование на различные ОС и многое другое. Она обеспечивает полный доступ к базовому нативному коду ОС (например, Objective-C, C#, Dalvik/ART) через переносимую абстракцию, что обеспечивает 100% повторное использование кода.

Codename One — единственная платформа, которая:

• Поддерживает принцип «напиши один раз — запускай где угодно» без специальных требований к оборудованию и обеспечивает 100% повторное использование кода.
• Компилирует Java или Kotlin в нативный код для iOS, UWP (Universal Windows Platform), Android и даже JavaScript (с бесшовной поддержкой PWA и потоков).
• С открытым исходным кодом и бесплатная с возможностью коммерческого использования на корпоративном уровне.
• Проста в использовании благодаря 100% портативному конструктору графического интерфейса с функцией перетаскивания.
• Имеет полный доступ к базовым возможностям нативной ОС, используя собственный язык программирования ОС (например, Objective-C) без ущерба для переносимости.
• Имеет полный контроль над каждым пикселем на экране! Просто переопределите метод paint и рисуйте или используйте стеклянную панель для рисования в любом месте.
• Позволяет использовать нативные виджеты (представления) и смешивать их с компонентами Codename One в одной иерархии (смешивание тяжелых и легких компонентов).
• Поддерживает бесшовную непрерывную интеграцию «из коробки».

Codename One на GitHub: https://github.com/codenameone/CodenameOne
Платформа: кроссплатформа
⭐️: 1.8K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
Detekt Rules Koin - Detekt-расширение с 51 правилом для Koin 4.x

Кирилл из AndroidBroadcast выпустил новые правила для линтера.

Если используете Koin и Detekt, то знаете, что стандартный Detekt ничего не знает о специфике Koin. Можно написать рабочий, но проблемный код — и никаких предупреждений.

Что ловит библиотека:

• Service Locator антипаттерны (5 правил)
• Ошибки в Module DSL (14 правил)
• Проблемы управления скоупами (8 правил)
• Platform-специфичные проблемы (8 правил)
• Архитектурные нарушения (4 правила)
• Koin Annotations (12 правил)

Detekt Rules Koin на GitHub: https://github.com/androidbroadcast/Koin-Detekt
Платформа: Android
⭐️: 1

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

Официальное руководство по разработке приложений для CarPlay.

Ссылка: https://developer.apple.com/download/files/CarPlay-Developer-Guide.pdf
Платформа: iOS

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

(iOS Ru) Как устроена мобильная разработка в Яндекс Картах
(iOS En) New iOS 26 Style OnBoarding Animation Using SwiftUI
(iOS En) Sharing App Data with Uniform Type Identifiers and ShareSheets
(iOS En) Liquid Glass Morphing Tab bar | Expandable Tab Bar | SwiftUI
(And Ru) КодРевью лидера мнений: как можно нарушить сразу все принципы разработки
(And Ru) Ты не владелец своего Android. И вот почему
(And En) What’s so great about R8?
(And En) Top 5 Jetpack Compose Performance Killers
(And En) Kotlin Devs Diversify: Android is 25% Now
(And En) You won't believe how we created an Android Lint rule using AI - with Tor Norbye
(And En) Google’s Recommended App Architecture Explained (Android & iOS)
(Crs Ru) Твое первое приложение на KMP для ОС Аврора
(Dev Ru) 1 из 10 разработчиков ничего не делает на работе. Интервью с исследователем из Стэнфорда.
(Dev Ru) Хэш-таблицы — Open addressing, коллизии, hash

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

(And Ru) Погружаемся в мир технологий Яндекс Переводчика
(And Ru) Мок собеседование Android разработчика в Контур: архитектура и кодинг приложения
(Dev Ru) Публичное собеседование на позицию Head of QA
(Dev Ru) Краш-курс по автоматизации тестирования

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

Современная, легковесная библиотека Swift, предоставляющая pull-to-refresh функции и загрузки дополнительных элементов для UIScrollView и всех его подклассов. Разработана с учетом производительности и возможностей настройки.

Особенности:

• Pull-to-refresh — плавный жест «потянуть вниз» для обновления контента
• Загрузка дополнительных элементов — бесконечная прокрутка с автоматическим определением загрузки дополнительных элементов
• Высокая степень кастомизации — легко реализовать пользовательские анимации и стили
• Оптимизация производительности — минимальное потребление памяти и плавные анимации
• Простая интеграция — простой API с разумными значениями по умолчанию
• Универсальная поддержка — работает с UIScrollView, UITableView, UICollectionView и UITextView

Refreshable на GitHub: https://github.com/hoangtaiki/Refreshable
Платформа: iOS
⭐️: 41

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

В этом посте я хочу рассказать вам о конвейере, который я использую, чтобы, несмотря на использование агентного подхода к разработке, качество моего продукта оставалось на высоком уровне (да, это включает в себя чтение кода и иногда ручную корректировку).

Мы рассмотрим настройку локальной среды, почему важен режим планирования, автоматизированные проверки запросов на слияние с помощью BugBot от Cursor, запуск сборок и тестов CI с помощью Bitrise, а также волшебство почти мгновенной загрузки сборок TestFlight на ваше устройство после слияния.

Статья: https://apptractor.ru/info/articles/nastroyka-konveyera-dostavki-dlya-vashih-agentskih-ios-proektov.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я добавил 10 фич в Android-приложение за один заход: Todo Budget v4.0

Todo Budget — это приложение-комбайн: список задач с приоритетами и подзадачами, учёт доходов/расходов/долгов, помодоро-таймер и заметки с голосовым вводом. Стек: Kotlin + Jetpack Compose + Material 3 + Room + Yandex Ads. Минимальная версия Android 5.0 (API 21), целевая — Android 15 (API 35).

После публикации предыдущей версии я получил обратную связь: пользователи хотели больше аналитики, защиту данных и возможность не потерять контекст работы при сворачивании приложения. Я решил не выпускать фичи по одной, а собрать всё в один большой релиз.

Статья: https://habr.com/ru/articles/1003034/
Платформа: Android

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

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

Статья: https://habr.com/ru/articles/1002142/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
😐1
Code On The Go - среда разработки Android-приложений

Code on the Go — это интегрированная среда разработки, которая позволяет создавать приложения для Android на телефонах Android без необходимости использования традиционного компьютера или доступа в Интернет.

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

Code on the Go на GitHub: https://github.com/appdevforall/CodeOnTheGo
Платформа: Android
⭐️: 93

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Создание тоста в SwiftUI за 5 шагов

В SwiftUI до сих пор нет встроенного компонента для всплывающих уведомлений (toast ). Существуют оповещения (alert) и всплывающие окна (sheet), но они, по своей сути, являются модальными. Тост решает другую проблему: оно предоставляет кратковременную обратную связь, не прерывая рабочий процесс пользователя.

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

Статья: https://apptractor.ru/info/articles/sozdanie-tosta-v-swiftui-za-5-shagov.html
Платформа: iOS

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

Самая большая проблема при внедрении методов агентной инженерии — это смириться с последствиями того факта, что написание кода теперь обходится дёшево.

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

На макроуровне мы тратим много времени на проектирование, оценку и планирование проектов, чтобы гарантировать, что наше дорогостоящее время, затраченное на кодирование, используется максимально эффективно. Идеи функций оцениваются с точки зрения того, какую ценность они могут принести в обмен на это время — функция должна многократно окупить затраты на разработку, чтобы быть стоящей!

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

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

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

Статья: https://apptractor.ru/info/articles/seychas-pisat-kod-deshevo.html
Платформа: разработка

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

Metro — современный фреймворк для внедрения зависимостей в Kotlin, созданный Заком Свирсом. И мы, Android-разработчики из Vinted, официально и полностью перешли на него! Для нашей огромной кодовой базы это был довольно непростой путь.

Статья: https://apptractor.ru/info/articles/ot-dagger-k-metro.html
Платформа: Android

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

App Store Connect CLI - быстрая, легковесная, со скриптами CLI-утилита для работы с App Store Connect API. Автоматизируйте рабочие процессы выпуска iOS, macOS, tvOS и visionOS из терминала, IDE или конвейера CI/CD. Работайте с TestFlight, сборками, отправкой, подписанием, аналитикой, скриншотами, подписками и многим другим. JSON-ориентированный подход, без интерактивных промптов.

App Store Connect CLI на GitHub: https://github.com/rudrankriyam/App-Store-Connect-CLI
Платформа: iOS
⭐️: 2.3K

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

Злоумышленники проводят фальшивые собеседования для разработчиков и отправляют «тестовые задания» в виде репозиториев с вредоносным кодом. Проекты выглядят как обычные приложения (например, на Next.js), но при запуске устанавливают бэкдор и подключаются к серверу управления (C2). Таким образом атакующие получают удалённый доступ к машине жертвы

Вредоносный код активируется через привычные для разработчика механизмы: автоматические задачи VS Code (.vscode/tasks.json), скрытые скрипты в файлах проекта (например, замаскированные под jquery.min.js) и серверный код, выполняющий декодированные команды при старте приложения. В результате на устройстве закрепляется бэкдор, способный выполнять команды и передавать данные злоумышленникам

Основной риск — компрометация рабочей среды: утечка API-ключей, токенов, секретов из .env, исходного кода и доступа к корпоративной инфраструктуре. В качестве защиты рекомендуется запускать тестовые задания в изолированной среде (VM или контейнере), проверять конфигурационные файлы перед запуском и тщательно верифицировать работодателя через официальные каналы.

Статья: https://threatroad.substack.com/p/fake-job-interviews-are-installing 🇬🇧
Платформа: разработка

Поставь 👍 или пошарь пост, если хочешь перевод

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Вы думали, что Flutter обладает производительностью, близкой к нативной? А вот и нет!

Результаты бенчмарка говорят об обратном.

Используя современные инструменты 2025 года, реальные устройства и повторяемую методологию, Flutter не просто не отставал от нативных iOS и Android. По нескольким ключевым показателям он их значительно превзошёл.

И не на погрешность округления.

Статья: https://apptractor.ru/info/articles/vy-dumali-chto-flutter-obladaet-proizvoditelnostyu-blizkoy-k-nativnoy-a-vot-i-net.html
Платформа: кроссплатформа/Flutter

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

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

В этой статье мы рассмотрим, как передавать пользовательские параметры из SwiftUI в Metal, создавать процедурные паттерны, такие как настраиваемая шахматная доска, управлять шейдерами с помощью анимации на основе времени и использовать математические функции для создания плавного, непрерывного движения.

Статья: https://apptractor.ru/info/articles/kastomnye-parametry-i-animatsiya-s-ispolzovaniem-sheyderov-metal.html
Платформа: iOS

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

Самый простой способ добавить подписки в ваше iOS-приложение. Это легковесный iOS SDK, созданный на основе StoreKit 2, который обрабатывает управление подписками, контроль доступа и процессы покупок — так что вы можете сосредоточиться на разработке своего приложения.

Особенности:

• Автоматическое определение — Передавайте идентификаторы продуктов, Payo автоматически определяет типы подписок, периоды и цены из StoreKit
• Синхронные проверки доступа — Payo.hasAccess мгновенно возвращает Bool, await не требуется
• Реактивное состояние SwiftUI — Payo.state — это ObservableObject, который автоматически обновляется при покупках, восстановлении, продлении и истечении срока действия
• Ограничение доступа к представлениям в одну строку — .requiresAccess() добавляет наложение blur + lock к любому представлению SwiftUI или UIView
• Право на участие в вводном предложении — Проверьте, имеют ли пользователи право на бесплатные пробные периоды или скидки на первый период
• Управление и возврат средств — Откройте встроенные в Apple панели управления подписками и возвратами
• Многоуровневая поддержка — Ограничение доступа к функциям за именованными группами для приложений с несколькими уровнями тарифных планов
• Нулевой код конфигурации — Просто добавьте файл Payo.plist, и SDK автоматически настроится при запуске

Payo на GitHub: https://github.com/PayoSDK/payo-ios
Платформа: iOS
⭐️: 3

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

Calf — это библиотека, которая позволяет легко создавать адаптивные пользовательские интерфейсы и получать доступ к API, специфичным для каждой платформы (UI-элементы, выбор файлов, WebView, разрешения, уведомления и т.п.), из ваших приложений Compose Multiplatform.

В настоящее время основное внимание уделяется Android и iOS, но в будущем появятся и другие компоненты для десктопов, позволяющие создавать адаптивные пользовательские интерфейсы и для этих платформ (Windows, macOS, Linux).

Calf на GitHubhttps://github.com/MohamedRejeb/Calf
Платформа: Android/кроссплатформа
⭐️: 1.5K

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

(iOS En) iOS Style Permission Animation Using SwiftUI
(iOS En) Swift Autoclosures - From First Principles to Smarter SwiftUI Validation
(And En) Android Developer fireside chat: Talking about Gemini in Android Studio
(And En) Senior Developer Ranks Jetpack Compose State Management Approaches
(And En) Intro to Kotlin's Flow API
(And En) Automating governance from build to release with Gradle and JFrog
(Crs En) How Major Metros Run on Kotlin Multiplatform
(Crs En) Tap to Exit with Navigation 3 - Kotlin Multiplatform (Android/iOS)
(Dev Ru) От языков программирования к Developer Experience
(Dev Ru) Волновая архитектура на практике
(Dev Ru) OCaml – лучший функциональный язык: OCaml vs Haskell vs TypeScript
(Dev En) Learn Kubernetes in 6 Hours – Full Course with Real-World Project

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

(iOS Ru) Переходим на SwiftUI
(And Ru) Производительность sequence, stream и collection в JVM
(And Ru) Непростые вопросы про Kotlin Coroutines
(And Ru) Наш опыт внедрения Compose в большой проект
(And Ru) Многомодульность: что это такое?
(And Ru) Жизнь инди в Google Play
(Dev Ru) Архитектурный надзор и анализ трейсов в Авито

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

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

Ключевые фичи:

• Простой DSL: настройте все правила в одном блоке конфигурации Gradle.
• Управление внешними библиотеками: используйте каталоги версий Gradle (libs) для обеспечения безопасности на этапе компиляции и автозавершения кода в IDE.
• Отчеты об использовании зависимостей: сгенерируйте подробный HTML-отчет, который четко показывает все нарушения зависимостей, что упрощает их выявление и исправление.
• Интеграция с CI/CD: завершайте сборку с ошибкой при нарушении правила, гарантируя, что проблемные зависимости не попадут в вашу основную ветку.
• Поддержка базовых версий: не хотите исправлять все существующие нарушения сразу? Создайте базовый файл, чтобы игнорировать их и сосредоточиться на предотвращении новых проблем.
• Граф Mermaid для визуализации: проверьте граф зависимостей для каждого модуля вашего проекта.

ProjectGuard на GitHub: https://github.com/rubensousa/ProjectGuard
Платформа: Android
⭐️: 51

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