10 ошибок, которые Android-разработчики до сих пор допускают при работе с Jetpack Compose
Как человек, который за последние два года проанализировал сотни кодовых баз Jetpack Compose, могу сказать, что одни и те же ошибки повторяются снова и снова, что и побудило меня написать этот пост. Даже опытные Android-разработчики, привыкшие к традиционным View-системам, сталкиваются с ними при переходе на Compose.
Статья: https://apptractor.ru/info/articles/10-oshibok-kotorye-android-razrabotchiki-do-sih-por-dopuskayut-pri-rabote-s-jetpack-compose.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Как человек, который за последние два года проанализировал сотни кодовых баз Jetpack Compose, могу сказать, что одни и те же ошибки повторяются снова и снова, что и побудило меня написать этот пост. Даже опытные Android-разработчики, привыкшие к традиционным View-системам, сталкиваются с ними при переходе на Compose.
Статья: https://apptractor.ru/info/articles/10-oshibok-kotorye-android-razrabotchiki-do-sih-por-dopuskayut-pri-rabote-s-jetpack-compose.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Swift Service - инъекция зависимостей для современного Swift
Swift Service - легковесный фреймворк внедрения зависимостей, созданный для Swift 6 Concurrency — с явными API для Sendable и MainActor, без внешних зависимостей и с изоляцией среды на основе TaskLocal.
Основные особенности:
• Дизайн, ориентированный на параллелизм — параллелизм в Swift является первоклассным элементом. Ограничения Sendable и MainActor являются частью API и обеспечиваются компилятором на каждом этапе вызова — они не скрыты за @unchecked Sendable.
• Нативная поддержка MainActor — выделенные функции registerMain() / @MainService / @MainProvider для типов, изолированных MainActor. Соответствует требованиям Swift 6.2 Approachable Concurrency.
• Нулевые зависимости — полностью построен на основе примитивов стандартной библиотеки Swift (Synchronization.Mutex, @TaskLocal).
• Изоляция среды TaskLocal — переключение среды для каждой задачи для параллельно-безопасного тестирования. Не требуется изменение глобального состояния.
• Гибкие области видимости — сколупы для синглтонов, временных объектов, графов и пользовательских имен для точного управления жизненным циклом.
• Знакомые шаблоны — API регистрации/разрешения, вдохновленный Swinject. Внедрение оберток свойств с модульной поддержкой Assembly.
Swift Service на GitHub: https://github.com/nslogmeng/swift-service
Платформа: iOS
⭐️: 22
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Swift Service - легковесный фреймворк внедрения зависимостей, созданный для Swift 6 Concurrency — с явными API для Sendable и MainActor, без внешних зависимостей и с изоляцией среды на основе TaskLocal.
Основные особенности:
• Дизайн, ориентированный на параллелизм — параллелизм в Swift является первоклассным элементом. Ограничения Sendable и MainActor являются частью API и обеспечиваются компилятором на каждом этапе вызова — они не скрыты за @unchecked Sendable.
• Нативная поддержка MainActor — выделенные функции registerMain() / @MainService / @MainProvider для типов, изолированных MainActor. Соответствует требованиям Swift 6.2 Approachable Concurrency.
• Нулевые зависимости — полностью построен на основе примитивов стандартной библиотеки Swift (Synchronization.Mutex, @TaskLocal).
• Изоляция среды TaskLocal — переключение среды для каждой задачи для параллельно-безопасного тестирования. Не требуется изменение глобального состояния.
• Гибкие области видимости — сколупы для синглтонов, временных объектов, графов и пользовательских имен для точного управления жизненным циклом.
• Знакомые шаблоны — API регистрации/разрешения, вдохновленный Swinject. Внедрение оберток свойств с модульной поддержкой Assembly.
Swift Service на GitHub: https://github.com/nslogmeng/swift-service
Платформа: iOS
⭐️: 22
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS En) Accelerate your machine learning workloads with the M5 and A19 GPUs•
(iOS En) Boost your graphics performance with the M5 and A19 GPUs•
(iOS En) SwiftUI Telegram Resizable Header | Scroll Effects | Animations•
(And En) Explicit Backing Fields are experimental in Kotlin 2.3•
(And En) Kotlin 2.3.20, Android Bench, and more•
(Crs Ru) Flutter — Dart, Impeller и реальные юзкейсы•
(Dev Ru) Путь инди-хакера•
(Dev En) How to build a full-stack app with Supabase and Stripe on Google AI Studio•
(Dev En) 1h Claude Code Crash Course For App Developers (Beginner Level)Прошлогодние видео:
•
(iOS Ru) Исследуем мир фото и видео редакторов•
(iOS Ru) Найди и исправь ошибки в коде — Задачи с собеседования•
(iOS Ru) Запускаем приложения на своем iOS-симуляторе•
(iOS Ru) Осторожно, Combine!•
(iOS Ru) Позаботимся о памяти при использовании value-типов•
(iOS Ru) Swift – больше, чем язык для iOS•
(And Ru) Почему вам стоит включить Gradle Configuration Cache•
(And Ru) Интеграция GeckoView в Dynamic Feature•
(And Ru) Последнее слово в Android-навигации•
(Dev Ru) Kotlin не для Android•
(Dev Ru) Пишем рекомендательную систему музыки на JavaPlease open Telegram to view this post
VIEW IN TELEGRAM
Я купил самый дешёвый MacBook от Apple и попробовал заняться настоящей разработкой
У меня уже есть MacBook Pro M3 Pro. Это просто зверь. Но мне хотелось посмотреть, что получится, если попробовать настоящую разработку на самом дешевом Mac от Apple.
Статья: https://apptractor.ru/info/articles/macbook-neo-dev.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
У меня уже есть MacBook Pro M3 Pro. Это просто зверь. Но мне хотелось посмотреть, что получится, если попробовать настоящую разработку на самом дешевом Mac от Apple.
Статья: https://apptractor.ru/info/articles/macbook-neo-dev.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
💩3❤1
Presently - дневник благодарности
Presently - открытый и бесплатный дневник благодарности с более чем 1 миллионом установок.
Технологический стек:
• MVVM с архитектурными компонентами
• ViewModel
• Room (с FTS и Paging v3)
• Mavericks
• CircleCI
• Отчеты о покрытии кода Jacoco (интегрированы с CI)
• Отчеты о сбоях Firebase Crashlytics
• Dagger + Hilt
• Espresso
• Firebase Test Lab
• WorkManager
• Dropbox Java SDK
Presently на GitHub: https://github.com/alisonthemonster/Presently
Платформа: Android
⭐️: 412
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Presently - открытый и бесплатный дневник благодарности с более чем 1 миллионом установок.
Технологический стек:
• MVVM с архитектурными компонентами
• ViewModel
• Room (с FTS и Paging v3)
• Mavericks
• CircleCI
• Отчеты о покрытии кода Jacoco (интегрированы с CI)
• Отчеты о сбоях Firebase Crashlytics
• Dagger + Hilt
• Espresso
• Firebase Test Lab
• WorkManager
• Dropbox Java SDK
Presently на GitHub: https://github.com/alisonthemonster/Presently
Платформа: Android
⭐️: 412
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
iOS network frameworks и HTTP TCP Server внутри приложения
В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.
В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).
Статья: https://habr.com/ru/articles/991366/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В iOS разработке работа с сетью является одной из ключевых задач. Для этого существует целый арсенал инструментов: от высокоуровневого URLSession до работы с низкоуровневыми BSD сокетами.
В этой статье мы разберем список доступных инструментов, напишем и запустим сервер внутри iOS приложения, используя самый низкоуровневых инструмент (BSD sockets). И закрепим это небольшим проектом, который будет использовать наш сервер. Им будет небольшая админка, с помощью которой можно будет загружать файлы из файловой директории приложения через веб браузер (с других устройств в локальной сети).
Статья: https://habr.com/ru/articles/991366/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом вопросе особенность, с которой я столкнулся впервые за 7 лет.
Именно об этом открытии и пойдет речь в статье — о смеси двух методов сериализации, а так же почему для решения этой задачи важно разбираться в работе разных видов
Поскольку Parcelable не является общим механизмом сериализации (нельзя использовать для сохранения данных на диск или сетевых запросов), он не может полностью заменить Serializable, но остается более эффективным для Android среды. Два решения сериализации остаются в проекте с нами надолго, а это значит нам нужно уметь работать с ними правильно.
Статья: https://habr.com/ru/companies/alfa/articles/1013158/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом вопросе особенность, с которой я столкнулся впервые за 7 лет.
Именно об этом открытии и пойдет речь в статье — о смеси двух методов сериализации, а так же почему для решения этой задачи важно разбираться в работе разных видов
classLoader. Информация из статьи поможет вам постепенно мигрировать на Parcelable в нужных местах, не переписывая сразу все классы на новую технологию.Поскольку Parcelable не является общим механизмом сериализации (нельзя использовать для сохранения данных на диск или сетевых запросов), он не может полностью заменить Serializable, но остается более эффективным для Android среды. Два решения сериализации остаются в проекте с нами надолго, а это значит нам нужно уметь работать с ними правильно.
Статья: https://habr.com/ru/companies/alfa/articles/1013158/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как настроить сериализацию Kotlin Any с поддержкой Parcelable и Serializable в Android
Тема сериализации данных является базой для любого мобильного разработчика, поскольку используется для работы с сетью, файловой системой и коммуникацией между основными компонентами. Но есть в этом...
Почему вашим следующим приложением, вероятно, не будут пользоваться
Раньше мы ходили в конкретные места — на сайты и в приложения. Теперь нам всё чаще нужен не интерфейс, а результат: чтобы задача была просто выполнена. Само приложение по-прежнему существует где-то на сервере, но пользователь может вообще никогда его не открывать.
Это тот же сдвиг, который уже заметен на примере Google и Stack Overflow. Если уловить паттерн, то идею headless-приложений представить намного проще.
Статья: https://apptractor.ru/info/articles/pochemu-vashim-sleduyuschim-prilozheniem-veroyatno-ne-budut-polzovatsya.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Раньше мы ходили в конкретные места — на сайты и в приложения. Теперь нам всё чаще нужен не интерфейс, а результат: чтобы задача была просто выполнена. Само приложение по-прежнему существует где-то на сервере, но пользователь может вообще никогда его не открывать.
Это тот же сдвиг, который уже заметен на примере Google и Stack Overflow. Если уловить паттерн, то идею headless-приложений представить намного проще.
Статья: https://apptractor.ru/info/articles/pochemu-vashim-sleduyuschim-prilozheniem-veroyatno-ne-budut-polzovatsya.html
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Amgi - Anki-карточки
Amgi - открытый offline-first iOS-клиент с карточками для запоминания.
Amgi использует C FFI в качестве обертки над официальным бэкендом ankitects/anki на Rust, обеспечивая нативный интерфейс SwiftUI, работающий на том же проверенном движке, что и Anki Desktop и AnkiDroid. Синхронизируйте свои колоды с любым совместимым сервером синхронизации (включая собственный), занимайтесь с помощью интервального планирования FSRS и поддерживайте идеальную синхронизацию истории повторения на всех ваших устройствах.
Архитектура:
Amgi на GitHub: https://github.com/antigluten/amgi
Платформа: iOS
⭐️: 67
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Amgi - открытый offline-first iOS-клиент с карточками для запоминания.
Amgi использует C FFI в качестве обертки над официальным бэкендом ankitects/anki на Rust, обеспечивая нативный интерфейс SwiftUI, работающий на том же проверенном движке, что и Anki Desktop и AnkiDroid. Синхронизируйте свои колоды с любым совместимым сервером синхронизации (включая собственный), занимайтесь с помощью интервального планирования FSRS и поддерживайте идеальную синхронизацию истории повторения на всех ваших устройствах.
Архитектура:
SwiftUI Views
|
@DependencyClient structs
|
AnkiBackend (Swift wrapper)
|
C FFI (4 functions)
|
Rust static library (ankitects/anki)
Amgi на GitHub: https://github.com/antigluten/amgi
Платформа: iOS
⭐️: 67
Please open Telegram to view this post
VIEW IN TELEGRAM
Monzo повысил производительность на 35% благодаря простому обновлению R8
Полностью включив оптимизацию R8, Monzo добился огромного снижения на 35% показателя «Приложение не отвечает» (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.
Статья: https://apptractor.ru/info/articles/monzo-35.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Полностью включив оптимизацию R8, Monzo добился огромного снижения на 35% показателя «Приложение не отвечает» (ANR). Это простое изменение доказало, что для эффективной оптимизации не всегда требуются сложные инженерные решения.
Статья: https://apptractor.ru/info/articles/monzo-35.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Наконец-то нашел Android Service своей мечты после того, как потерял его 13 лет назад
Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.
Ещё в 2012 году команда Android System UI представила в Android 4.2 новую функцию Daydream, которая позволяет показывать контент пользователю, пока телефон находится в спящем режиме. Вы можете просто отрисовать любой UI или анимацию для пользователя, пока его телефон заряжается. UI-элементы также могут содержать кнопки, так что в целом можно создать полноценный экран для продакшена. К сожалению, эту функцию нельзя включить автоматически. Пользователь должен включить её в настройках дисплея.
Статья: https://habr.com/ru/articles/1016662/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.
Ещё в 2012 году команда Android System UI представила в Android 4.2 новую функцию Daydream, которая позволяет показывать контент пользователю, пока телефон находится в спящем режиме. Вы можете просто отрисовать любой UI или анимацию для пользователя, пока его телефон заряжается. UI-элементы также могут содержать кнопки, так что в целом можно создать полноценный экран для продакшена. К сожалению, эту функцию нельзя включить автоматически. Пользователь должен включить её в настройках дисплея.
Статья: https://habr.com/ru/articles/1016662/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Felicity - функциональный музыкальный плеер для Android
Felicity - многофункциональный премиальный аудиофильский музыкальный плеер для Android с встроенным DSP, визуализатором, 10-полосным эквалайзером с предусилителем и поддержкой Milkdrop.
Felicity на GitHub: https://github.com/Hamza417/Felicity
Платформа: Android
⭐️: 82
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Felicity - многофункциональный премиальный аудиофильский музыкальный плеер для Android с встроенным DSP, визуализатором, 10-полосным эквалайзером с предусилителем и поддержкой Milkdrop.
Felicity на GitHub: https://github.com/Hamza417/Felicity
Платформа: Android
⭐️: 82
Please open Telegram to view this post
VIEW IN TELEGRAM
Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна
Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.
Недавно в нем появилась новая функция: сравнение скриншотов. С ней можно записывать скриншоты приложения, а на последующих прогонах автотестов сравнивать их с новыми скриншотами и отслеживать изменения в интерфейсе. В статье я пошагово покажу, как с ней работать, со скриншотами и примерами кода.
Статья: https://habr.com/ru/companies/kaspersky/articles/1015854/
Платформа: Android/тестирование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Это наш фреймворк для тестирования пользовательских интерфейсов на Android, основанный на Kakao, Espresso и UI Automator.
Недавно в нем появилась новая функция: сравнение скриншотов. С ней можно записывать скриншоты приложения, а на последующих прогонах автотестов сравнивать их с новыми скриншотами и отслеживать изменения в интерфейсе. В статье я пошагово покажу, как с ней работать, со скриншотами и примерами кода.
Статья: https://habr.com/ru/companies/kaspersky/articles/1015854/
Платформа: Android/тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Kaspresso: cравниваем скриншоты и упрощаем проверку дизайна
Хабр, привет! Меня зовут Никита Евдокимов, я работаю старшим разработчиком в «Лаборатории Касперского», а также являюсь мейнтейнером репозитория Kaspresso . Это наш фреймворк для тестирования...
👍1
Как Swift работает с памятью: подробный гайд для разработчиков. Часть 1
В этой статье последовательно разберем, как Swift управляет памятью: от базовых понятий вроде ARC, Copy‑on‑Write, экзистенциальных контейнеров до нетипичных задач с «зомби»-объектами и non-frozen типами. Материал основан на документации Swift, докладах WWDC и практических примерах. Статья рассчитана на middle- iOS‑разработчиков, которые хотят лучше понимать, что происходит с их кодом на уровне памяти и почему одни решения оказываются дороже других.
Эта статья выйдет в двух частях: в первой разберем теорию, а во второй — практические примеры с кодом.
Статья: https://habr.com/ru/companies/avito/articles/1017162/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В этой статье последовательно разберем, как Swift управляет памятью: от базовых понятий вроде ARC, Copy‑on‑Write, экзистенциальных контейнеров до нетипичных задач с «зомби»-объектами и non-frozen типами. Материал основан на документации Swift, докладах WWDC и практических примерах. Статья рассчитана на middle- iOS‑разработчиков, которые хотят лучше понимать, что происходит с их кодом на уровне памяти и почему одни решения оказываются дороже других.
Эта статья выйдет в двух частях: в первой разберем теорию, а во второй — практические примеры с кодом.
Статья: https://habr.com/ru/companies/avito/articles/1017162/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Запретная сторона Swift, которую мы, как правило, вообще не видим
Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.
Но иногда… не знаю.
Может быть, я делаю опечатку в Xcode, которая вытаскивает из Марианской впадины автозаполнения забытых существ. Может быть, я покупаю шимпанзе в даркнете и случайно натыкаюсь на пост в блоге с архаичным синтаксисом.
Сегодня мы откопаем кое-что из того, что Apple хранит в шкафу под лестницей. Мы выясним, есть ли у этих ключевых слов и функций какое-либо реальное применение, и прольем на них немного света.
Статья: https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html
Платформа: iOS/Swift
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я пишу код на Swift ежедневно уже почти 10 лет. Синдром самозванца меня не пугает. Я всё повидал.
Но иногда… не знаю.
Может быть, я делаю опечатку в Xcode, которая вытаскивает из Марианской впадины автозаполнения забытых существ. Может быть, я покупаю шимпанзе в даркнете и случайно натыкаюсь на пост в блоге с архаичным синтаксисом.
Сегодня мы откопаем кое-что из того, что Apple хранит в шкафу под лестницей. Мы выясним, есть ли у этих ключевых слов и функций какое-либо реальное применение, и прольем на них немного света.
Статья: https://apptractor.ru/info/articles/zapretnaya-storona-swift-kotoruyu-my-kak-pravilo-voobsche-ne-vidim.html
Платформа: iOS/Swift
Please open Telegram to view this post
VIEW IN TELEGRAM
AdaEngine - игровой движок на Swift
AdaEngine — это игровой движок, полностью написанный на Swift. Предлагает полный набор функций для 2D-графики, основан на data-oriented парадигме и использует собственную ECS-инфраструктуру, вдохновлен фреймворком RealityKit от Apple.
AdaEngine прост в использовании, и главная цель — обеспечить быстрый старт и быстрый результат.
AdaEngine на GitHub: https://github.com/AdaEngine/AdaEngine
Платформа: iOS
⭐️: 113
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
AdaEngine — это игровой движок, полностью написанный на Swift. Предлагает полный набор функций для 2D-графики, основан на data-oriented парадигме и использует собственную ECS-инфраструктуру, вдохновлен фреймворком RealityKit от Apple.
AdaEngine прост в использовании, и главная цель — обеспечить быстрый старт и быстрый результат.
AdaEngine на GitHub: https://github.com/AdaEngine/AdaEngine
Платформа: iOS
⭐️: 113
Please open Telegram to view this post
VIEW IN TELEGRAM
Как автор книг по Kotlin проверял мой проект: разбор ошибок в Coroutines и архитектуре
Я хочу поделиться историей о том, как обычное желание разобраться в корутинах привело к детальному аудиту проекта Марчином Москалой, по итогам которого архитектурные решения в GeminiAI были отмечены как качественный пример реализации Structured Concurrency.
Статья: https://habr.com/ru/articles/1018040/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я хочу поделиться историей о том, как обычное желание разобраться в корутинах привело к детальному аудиту проекта Марчином Москалой, по итогам которого архитектурные решения в GeminiAI были отмечены как качественный пример реализации Structured Concurrency.
Статья: https://habr.com/ru/articles/1018040/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация производительности во Flutter
Производительность Flutter-приложения напрямую зависит от качества написанного кода: лишние перестроения UI, тяжёлые операции в основном потоке, неправильная работа со списками и изображениями — всё это ведёт к фризам, падению FPS и ухудшению пользовательского опыта.
В данной статье мы собрали наиболее распространённые ошибки, которые снижают производительность Flutter-приложений, и показали, как их избежать на практике.
Статья: https://habr.com/ru/articles/1017468/
Платформа: Flutter
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Производительность Flutter-приложения напрямую зависит от качества написанного кода: лишние перестроения UI, тяжёлые операции в основном потоке, неправильная работа со списками и изображениями — всё это ведёт к фризам, падению FPS и ухудшению пользовательского опыта.
В данной статье мы собрали наиболее распространённые ошибки, которые снижают производительность Flutter-приложений, и показали, как их избежать на практике.
Статья: https://habr.com/ru/articles/1017468/
Платформа: Flutter
Please open Telegram to view this post
VIEW IN TELEGRAM
Наиболее распространенные узкие места в производительности Android-приложений
В течение последних шести месяцев большая часть моей работы была сосредоточена на улучшении производительности и стабильности в большом устаревшем коде. И я пришел к выводу: большинство проблем с производительностью вызваны не аппаратными ограничениями. Они возникают из-за недостатков в логике и архитектуре, которые заставляют систему достигать этих пределов.
И чаще всего дело не в архитектуре, которая просто устарела по мере развития продукта. Дело в архитектуре, которая была исправлена, расширена и перестроена несколькими поколениями разработчиков — каждое из которых добавляло обходные пути, упускало граничные случаи и оставляло после себя скрытые неэффективности, которые накапливаются со временем.
Статья: https://apptractor.ru/info/articles/uzkie-mesta-android.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
В течение последних шести месяцев большая часть моей работы была сосредоточена на улучшении производительности и стабильности в большом устаревшем коде. И я пришел к выводу: большинство проблем с производительностью вызваны не аппаратными ограничениями. Они возникают из-за недостатков в логике и архитектуре, которые заставляют систему достигать этих пределов.
И чаще всего дело не в архитектуре, которая просто устарела по мере развития продукта. Дело в архитектуре, которая была исправлена, расширена и перестроена несколькими поколениями разработчиков — каждое из которых добавляло обходные пути, упускало граничные случаи и оставляло после себя скрытые неэффективности, которые накапливаются со временем.
Статья: https://apptractor.ru/info/articles/uzkie-mesta-android.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
ArchiveTune - переосмысление работы с YouTube Music на Android
ArchiveTune — это не просто очередная стандартная оболочка для YouTube Music. Это полностью разработанный с нуля плеер, потому что ваша музыка должна оставаться конфиденциальной, выглядеть безупречно и работать именно так, как вы ожидаете. Если для вас важна качество звука и вы хотите что-то, что действительно удобно в использовании, то это именно то, что вам нужно.
ArchiveTune на GitHub: https://github.com/koiverse/ArchiveTune
Платформа: Android
⭐️: 1.1K
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
ArchiveTune — это не просто очередная стандартная оболочка для YouTube Music. Это полностью разработанный с нуля плеер, потому что ваша музыка должна оставаться конфиденциальной, выглядеть безупречно и работать именно так, как вы ожидаете. Если для вас важна качество звука и вы хотите что-то, что действительно удобно в использовании, то это именно то, что вам нужно.
ArchiveTune на GitHub: https://github.com/koiverse/ArchiveTune
Платформа: Android
⭐️: 1.1K
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Mobile Development by AppTractor
Google представил Gemma 4: новые открытые модели для продвинутого мышления и автономных агентов
Сегодня Google представил Gemma 4 — самые интеллектуальные открытые модели на сегодняшний день. Разработанная специально для решения задач сложного логического вывода и создания агентных рабочих процессов, Gemma 4 обеспечивает беспрецедентный уровень «интеллекта на параметр».
Gemma 4, созданная на базе тех же передовых исследований и технологий, что и Gemini 3, является самым мощным семейством моделей, которое вы можете запустить на собственном оборудовании. Они дополняют модели Gemini, предоставляя разработчикам мощнейшее в индустрии сочетание открытых и проприетарных инструментов.
Все семейство выходит за рамки простого чата и способно обрабатывать сложную логику. Крупные модели демонстрируют флагманскую производительность для своих размеров: модель 31B на данный момент занимает 3-е место среди открытых моделей в мире в текстовом рейтинге Arena AI, а модель 26B — 6-е место. Там Gemma 4 успешно конкурирует с моделями, которые в 20 раз больше её по размеру. На периферийных устройствах (Edge) модели E2B и E4B переопределяют полезность ИИ на устройстве, отдавая приоритет мультимодальности, низкой задержке и бесшовной интеграции в экосистему.
Размеры моделей Gemma 4 подобрали специально для эффективного запуска и дообучения (fine-tuning) на различном оборудовании — от миллиардов Android-устройств и ноутбуков с GPU до рабочих станций и мощных ускорителей.
Что делает Gemma 4 лучшим семейством открытых моделей:
• Продвинутое мышление: Способность к многошаговому планированию и глубокой логике.
• Агентные рабочие процессы: Нативная поддержка вызова функций (function-calling), структурированного вывода JSON и системных инструкций позволяет создавать автономных агентов.
• Генерация кода: Поддержка высококачественного написания кода офлайн.
• Зрение и аудио: Все модели нативно обрабатывают видео и изображения. Модели E2B и E4B также поддерживают нативный аудиоввод для распознавания речи.
• Увеличенный контекст: Модели Edge имеют окно контекста 128K, а крупные модели — до 256K токенов.
• Более 140 языков: Нативно обучена для работы с глобальной аудиторией.
Gemma 4 уже можно применить для разработки под Android - модель была обучена специфике Android-разработки и поддержке агентного вызова инструментов (tool calling). Выбрав Gemma 4 в качестве локальной модели, вы можете использовать «Режим агента» для различных сценариев:
• Проектирование новых функций: Попросите агента создать новую функцию или целое приложение (например, «создай калькулятор»). Агент не только сгенерирует UI-код, но и применит лучшие практики Android, такие как написание кода на Kotlin и использование Jetpack Compose.
• Рефакторинг: Вы можете давать высокоуровневые команды, такие как «Извлеки все захардкоженные строки и перенеси их в strings.xml». Агент просканирует кодовую базу, найдет нужные места и внесет правки сразу в несколько файлов.
• Исправление багов и ошибок сборки: Если проект не собирается или есть ошибки линтера (lint errors), просто скажите: «Собери проект и исправь ошибки». Агент найдет проблемный код и будет итеративно применять исправления, пока сборка не завершится успешно.
Сегодня Google представил Gemma 4 — самые интеллектуальные открытые модели на сегодняшний день. Разработанная специально для решения задач сложного логического вывода и создания агентных рабочих процессов, Gemma 4 обеспечивает беспрецедентный уровень «интеллекта на параметр».
Gemma 4, созданная на базе тех же передовых исследований и технологий, что и Gemini 3, является самым мощным семейством моделей, которое вы можете запустить на собственном оборудовании. Они дополняют модели Gemini, предоставляя разработчикам мощнейшее в индустрии сочетание открытых и проприетарных инструментов.
Все семейство выходит за рамки простого чата и способно обрабатывать сложную логику. Крупные модели демонстрируют флагманскую производительность для своих размеров: модель 31B на данный момент занимает 3-е место среди открытых моделей в мире в текстовом рейтинге Arena AI, а модель 26B — 6-е место. Там Gemma 4 успешно конкурирует с моделями, которые в 20 раз больше её по размеру. На периферийных устройствах (Edge) модели E2B и E4B переопределяют полезность ИИ на устройстве, отдавая приоритет мультимодальности, низкой задержке и бесшовной интеграции в экосистему.
Размеры моделей Gemma 4 подобрали специально для эффективного запуска и дообучения (fine-tuning) на различном оборудовании — от миллиардов Android-устройств и ноутбуков с GPU до рабочих станций и мощных ускорителей.
Что делает Gemma 4 лучшим семейством открытых моделей:
• Продвинутое мышление: Способность к многошаговому планированию и глубокой логике.
• Агентные рабочие процессы: Нативная поддержка вызова функций (function-calling), структурированного вывода JSON и системных инструкций позволяет создавать автономных агентов.
• Генерация кода: Поддержка высококачественного написания кода офлайн.
• Зрение и аудио: Все модели нативно обрабатывают видео и изображения. Модели E2B и E4B также поддерживают нативный аудиоввод для распознавания речи.
• Увеличенный контекст: Модели Edge имеют окно контекста 128K, а крупные модели — до 256K токенов.
• Более 140 языков: Нативно обучена для работы с глобальной аудиторией.
Gemma 4 уже можно применить для разработки под Android - модель была обучена специфике Android-разработки и поддержке агентного вызова инструментов (tool calling). Выбрав Gemma 4 в качестве локальной модели, вы можете использовать «Режим агента» для различных сценариев:
• Проектирование новых функций: Попросите агента создать новую функцию или целое приложение (например, «создай калькулятор»). Агент не только сгенерирует UI-код, но и применит лучшие практики Android, такие как написание кода на Kotlin и использование Jetpack Compose.
• Рефакторинг: Вы можете давать высокоуровневые команды, такие как «Извлеки все захардкоженные строки и перенеси их в strings.xml». Агент просканирует кодовую базу, найдет нужные места и внесет правки сразу в несколько файлов.
• Исправление багов и ошибок сборки: Если проект не собирается или есть ошибки линтера (lint errors), просто скажите: «Собери проект и исправь ошибки». Агент найдет проблемный код и будет итеративно применять исправления, пока сборка не завершится успешно.