This media is not supported in your browser
VIEW IN TELEGRAM
Заблуждение UseCase: что нужно знать Android-разработчикам
Если вы давно работаете в мире Android-разработки, то наверняка слышали о UseCase. Их часто представляют как святой грааль «чистой архитектуры». UseCase обещают отделить бизнес-логику от слоев представления и данных, делая ваш код более модульным, многократно используемым и тестируемым. Но вот в чем загвоздка: UseCase не всегда являются решением.
На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, а это именно то, чего пытается избежать Чистая Архитектура. В этой статье мы развеем мифы, связанные с UseCase, и обсудим, в каких случаях они необходимы, а в каких — просто пустая трата времени. Если вы являетесь разработчиком Android и думаете, не приносит ли вам этот паттерн больше вреда, чем пользы, то эта статья для вас.
Статья: https://apptractor.ru/info/articles/zabluzhdenie-usecase-chto-nuzhno-znat-android-razrabotchikam.html
Платформа: Android
Если вы давно работаете в мире Android-разработки, то наверняка слышали о UseCase. Их часто представляют как святой грааль «чистой архитектуры». UseCase обещают отделить бизнес-логику от слоев представления и данных, делая ваш код более модульным, многократно используемым и тестируемым. Но вот в чем загвоздка: UseCase не всегда являются решением.
На самом деле, слепое их применение может привести к раздутому коду и ненужной сложности, а это именно то, чего пытается избежать Чистая Архитектура. В этой статье мы развеем мифы, связанные с UseCase, и обсудим, в каких случаях они необходимы, а в каких — просто пустая трата времени. Если вы являетесь разработчиком Android и думаете, не приносит ли вам этот паттерн больше вреда, чем пользы, то эта статья для вас.
Статья: https://apptractor.ru/info/articles/zabluzhdenie-usecase-chto-nuzhno-znat-android-razrabotchikam.html
Платформа: Android
Нативный Swift на Android: установка, компиляция, запуск и тестирование
Возможно, вы уже знакомы с Skip как с инструментом для переноса ваших Swift-приложений на Android. В Skip используется новый подход к транспиляции, когда мы интегрируемся с системой сборки Xcode для преобразования вашего Swift-кода в Kotlin. Это позволяет нам создавать Android-библиотеку для каждой сборки вашего пакета Swift или запускать Android-версию вашего приложения SwiftUI при каждом запуске Xcode.
И вот мы с радостью объявляем о первом технологическом превью нативного инструментария и драйвера Swift для Android! Этот набор инструментов позволяет разработчикам создавать и запускать исполняемые файлы Swift и тестовые примеры на подключенном устройстве или эмуляторе Android.
Статья: https://apptractor.ru/info/articles/nativnyy-swift-na-android-ustanovka-kompilyatsiya-zapusk-i-testirovanie.html
Платформа: кроссплатформа
Возможно, вы уже знакомы с Skip как с инструментом для переноса ваших Swift-приложений на Android. В Skip используется новый подход к транспиляции, когда мы интегрируемся с системой сборки Xcode для преобразования вашего Swift-кода в Kotlin. Это позволяет нам создавать Android-библиотеку для каждой сборки вашего пакета Swift или запускать Android-версию вашего приложения SwiftUI при каждом запуске Xcode.
И вот мы с радостью объявляем о первом технологическом превью нативного инструментария и драйвера Swift для Android! Этот набор инструментов позволяет разработчикам создавать и запускать исполняемые файлы Swift и тестовые примеры на подключенном устройстве или эмуляторе Android.
Статья: https://apptractor.ru/info/articles/nativnyy-swift-na-android-ustanovka-kompilyatsiya-zapusk-i-testirovanie.html
Платформа: кроссплатформа
🙊4🤡2🔥1
LinkNavigator - это библиотека, которая помогает вам легко перемещаться между страницами в SwiftUI. LinkNavigator предоставляет интуитивно понятный синтаксис для навигации по страницам с помощью выражений, похожих на URL-пути. Вы можете легко перейти на любую страницу с помощью обработки глубоких ссылок. При переходе на страницу можно вводить параметры.
LinkNavigator разработан для использования в однонаправленной архитектуре, такой MVI или The Composable Architecture от pointfreeco, но его можно использовать и в других архитектурах.
LinkNavigator на GitHub: https://github.com/forXifLess/LinkNavigator
Платформа: iOS
⭐️: 352
LinkNavigator разработан для использования в однонаправленной архитектуре, такой MVI или The Composable Architecture от pointfreeco, но его можно использовать и в других архитектурах.
LinkNavigator на GitHub: https://github.com/forXifLess/LinkNavigator
Платформа: iOS
⭐️: 352
Gradle Convention Plugins: как облегчить себе жизнь и уменьшить boilerplate в gradle-файлах
Я Дима Котиков, ведущий android-разработчик в Т-Банке. Работаю в команде приложения Долями. Разработкой под Android начал увлекаться в 2020 году, а потом хобби переросло в работу. Люблю разбираться в технологиях, разрабатывать под Android и KMP и латте на фундучном молоке :)
Я расскажу о том, как облегчить работу с Gradle с использованием Gradle Convention Plugins. Всю информацию я разбил на серию статей для удобства. Они будут полезны всем, кто пользуется Gradle в качестве сборщика проектов. В первой части поговорим о проблеме с build.gradle-файлами и сделаем начальную настройку для написания Gradle Convention Plugins.
Статья: https://habr.com/ru/companies/tbank/articles/843648/
Платформа: Android
Я Дима Котиков, ведущий android-разработчик в Т-Банке. Работаю в команде приложения Долями. Разработкой под Android начал увлекаться в 2020 году, а потом хобби переросло в работу. Люблю разбираться в технологиях, разрабатывать под Android и KMP и латте на фундучном молоке :)
Я расскажу о том, как облегчить работу с Gradle с использованием Gradle Convention Plugins. Всю информацию я разбил на серию статей для удобства. Они будут полезны всем, кто пользуется Gradle в качестве сборщика проектов. В первой части поговорим о проблеме с build.gradle-файлами и сделаем начальную настройку для написания Gradle Convention Plugins.
Статья: https://habr.com/ru/companies/tbank/articles/843648/
Платформа: Android
👍1
Использование трейтов для аннотирования и настройки поведения тестов
Трейты (признки, типажи, traits) позволяют настраивать или аннотировать тесты с помощью фреймворка Swift Testing, анонсированного на WWDC 2024. Они также позволяют настраивать общее поведение, например условия, оцениваемые в рантайме, для пропуска определенных тестов.
Статья: https://apptractor.ru/info/articles/ispolzovanie-treytov-dlya-annotirovaniya-i-nastroyki-povedeniya-testov.html
Платформа: iOS
Трейты (признки, типажи, traits) позволяют настраивать или аннотировать тесты с помощью фреймворка Swift Testing, анонсированного на WWDC 2024. Они также позволяют настраивать общее поведение, например условия, оцениваемые в рантайме, для пропуска определенных тестов.
Статья: https://apptractor.ru/info/articles/ispolzovanie-treytov-dlya-annotirovaniya-i-nastroyki-povedeniya-testov.html
Платформа: iOS
Accrescent - это приватный и безопасный магазин приложений для Android, созданный с учетом современных требований. Его цель - обеспечить удобную платформу для разработчиков и приятный пользовательский опыт, соблюдая при этом современные правила безопасности и конфиденциальности, а также предоставляя надежные гарантии достоверности установленных приложений. Это достигается за счет следующих возможностей:
• Привязка ключа подписи приложений
• Подпись метаданных репозиториев
• Автоматические, непривилегированные обновления (Android 12+)
• Первоклассная поддержка разделенных APK для разных архитектур, экранов и т.п.
• Отсутствие подписания APK магазином
• Осознанный контроль качества предоставляемых приложений
• Для установки приложений не требуется учетная запись
Accrescent на GitHub: https://github.com/accrescent/accrescent
Платформа: Android
⭐️: 965
• Привязка ключа подписи приложений
• Подпись метаданных репозиториев
• Автоматические, непривилегированные обновления (Android 12+)
• Первоклассная поддержка разделенных APK для разных архитектур, экранов и т.п.
• Отсутствие подписания APK магазином
• Осознанный контроль качества предоставляемых приложений
• Для установки приложений не требуется учетная запись
Accrescent на GitHub: https://github.com/accrescent/accrescent
Платформа: Android
⭐️: 965
🤔3
This media is not supported in your browser
VIEW IN TELEGRAM
Создаем мерцающий текст в Jetpack Compose
В этой статье мы создадим потрясающую анимацию мерцающего текста в Jetpack Compose, идеально подходящую для минималистичного загрузчика.
Статья: https://apptractor.ru/info/articles/sozdaem-mertsayuschiy-tekst-v-jetpack-compose.html
Платформа: Android
В этой статье мы создадим потрясающую анимацию мерцающего текста в Jetpack Compose, идеально подходящую для минималистичного загрузчика.
Статья: https://apptractor.ru/info/articles/sozdaem-mertsayuschiy-tekst-v-jetpack-compose.html
Платформа: Android
Анонс Swift 6
Мы рады объявить об общей доступности Swift 6. Это новый крупный выпуск, который расширяет Swift на большее количество платформ и областей.
Многие знают Swift как язык для разработки приложений, ведь в App Store уже миллион приложений. Но Swift подходит не только для приложений. Безопасность, скорость и доступность Swift делают его отличным выбором для многих других областей применения, включая библиотеки, интернет-сервисы, а также наиболее критичный к производительности и безопасности код.
Swift 6 стал еще более масштабным благодаря новым возможностям низкоуровневого программирования, встроенному подмножеству языка Swift, расширенной поддержке Linux и Windows, новым кроссплатформенным API, включая новую библиотеку Swift Testing, и многим другим.
Статья: https://www.swift.org/blog/announcing-swift-6/
Платформа: iOS
Мы рады объявить об общей доступности Swift 6. Это новый крупный выпуск, который расширяет Swift на большее количество платформ и областей.
Многие знают Swift как язык для разработки приложений, ведь в App Store уже миллион приложений. Но Swift подходит не только для приложений. Безопасность, скорость и доступность Swift делают его отличным выбором для многих других областей применения, включая библиотеки, интернет-сервисы, а также наиболее критичный к производительности и безопасности код.
Swift 6 стал еще более масштабным благодаря новым возможностям низкоуровневого программирования, встроенному подмножеству языка Swift, расширенной поддержке Linux и Windows, новым кроссплатформенным API, включая новую библиотеку Swift Testing, и многим другим.
Статья: https://www.swift.org/blog/announcing-swift-6/
Платформа: iOS
Swift.org
Announcing Swift 6
We’re delighted to announce the general availability of Swift 6. This is a major new release that expands Swift to more platforms and domains.
❤1
AppState - это пакет Swift, который упрощает управление состоянием приложения в потокобезопасном, безопасном для типов и удобном для SwiftUI виде. Благодаря наличию специальных типов struct для управления состоянием, AppState обеспечивает простой и скоординированный доступ к этому состоянию во всем приложении. Кроме того, в пакет встроены механизмы протоколирования для облегчения отладки и отслеживания ошибок. В пакете AppState также есть система кэша для постоянного хранения и извлечения любых данных в любой момент времени.
AppState на GitHub: https://github.com/0xLeif/AppState
Платформа: iOS
⭐️: 66
AppState на GitHub: https://github.com/0xLeif/AppState
Платформа: iOS
⭐️: 66
👍1🤡1
Создание плагинов и переиспользуемых частей в .gradle.kts-файлах и Kotlin extension-функциях
На связи Дима Котиков, и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить Boilerplate в gradle-файлах. В первой части поговорили о том, как подготовиться к созданию модулей для Gradle Convention Plugin. Двигаемся дальше!
Статья: https://habr.com/ru/companies/tbank/articles/843662/
Платформа: Android
На связи Дима Котиков, и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить Boilerplate в gradle-файлах. В первой части поговорили о том, как подготовиться к созданию модулей для Gradle Convention Plugin. Двигаемся дальше!
Статья: https://habr.com/ru/companies/tbank/articles/843662/
Платформа: Android
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS En) Let's Create Chips UI With iOS 18 APIs•
(iOS En) So, Let's create a Splash Screen | SwiftUI•
(iOS En) Discover 3 new features of Xcode 16•
(iOS En) SwiftData Previews: PreviewModifier in SwiftUI (iOS 18)•
(iOS En) Color Mixing in iOS 18•
(iOS En) Enhance App UI Animations with these 4 Modifiers•
(And Ru) Заработок на Open Source. Decompose. Будущее KMP. Аркадий Иванов•
(And Ru) Бессмертное приложение•
(And Ru) Укрощаем UDF state-based архитектуры. Реальные кейсы в больших приложениях•
(And En) Complement your media editing pipeline with Jetpack Media3•
(And En) Android 15 Launch, a special guest spotlight, and more - Google Developer News September 2024•
(And En) The ONLY Correct Way to Load Initial Data In Your Android App?•
(And En) Save User Credentials With the Google Credential Manager - Android Studio Tutorial•
(And En) Overcoming Unsecurities in WebViews•
(And En) Beyond The Success Of Kotlin•
(Crs Ru) Flutter Dev Podcast #47: CrossConf Awards•
(Dev Ru) Грейд в IT•
(Dev Ru) Как устроен Yandex Mobile Ads SDK•
(Dev Ru) Паттерны SDUI•
(Dev Ru) Почему мы продолжаем срывать сроки проектов•
(Dev Ru) Какая JVM лучшее всех? Java, JVM Architecture, GraalVM, HotSpot JVM•
(Dev En) How Optimizations made Mario 64 SLOWER•
(Dev En) Securing API Servers Course#ios #android #mobile #video
Spotify однажды удалил функцию просмотра и обмена текстами песен из своего бесплатного тарифа только для того, чтобы вернуть ее снова. Автор Rush создал это приложение, чтобы получать, хранить и делиться текстами любимых песен из сервиса Genius, и все это в Material 3. Приложение может искать слова песен (есть автодополнение), скачивать их, шарить, синхронизировать тексты с музыкой. Сделано на Retrofit и OkHttp, ROOM, MVVM, Koin, Fuel и Jsoup для парсинга, Coil.
Rush на GitHub: https://github.com/shub39/Rush
Платформа: Android
⭐️: 227
Rush на GitHub: https://github.com/shub39/Rush
Платформа: Android
⭐️: 227
Готовый UI-компонент свайп-панели c добавлением scrollView и других элементов
ContainerController компонент UI пользовательского интерфейса. Это копия свайп-панели из приложения AppleMaps.
Статья: https://habr.com/ru/articles/844732/
Платформа: iOS
ContainerController компонент UI пользовательского интерфейса. Это копия свайп-панели из приложения AppleMaps.
Статья: https://habr.com/ru/articles/844732/
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Flappy Bird на Си для Android весом APK всего 92 Килобайта
Примерно 14 сентября 2024 года, в дискорд‑канале Raylib я увидел как один парень сделал Flappy Bird на языке C#. Тогда мне стало очень интересно, попробовать давно забытую идею, сделать эту игру на Си, для Android, весом APK меньше 100 Килобайт.
Идея казалась безумной, а также, безуспешной.
Просто представьте, сегодня, когда вес APK достигает по 30–600 Мегабайт, нужно уложиться всего лишь меньше, чем 100 Килобайт. Для чего такие рамки? Это спортивный интерес, получится ли такое? Получилось! Но было совсем не просто.
Статья: https://habr.com/ru/articles/845068/
Платформа: Android
Примерно 14 сентября 2024 года, в дискорд‑канале Raylib я увидел как один парень сделал Flappy Bird на языке C#. Тогда мне стало очень интересно, попробовать давно забытую идею, сделать эту игру на Си, для Android, весом APK меньше 100 Килобайт.
Идея казалась безумной, а также, безуспешной.
Просто представьте, сегодня, когда вес APK достигает по 30–600 Мегабайт, нужно уложиться всего лишь меньше, чем 100 Килобайт. Для чего такие рамки? Это спортивный интерес, получится ли такое? Получилось! Но было совсем не просто.
Статья: https://habr.com/ru/articles/845068/
Платформа: Android
🤮2🔥1
MIDIKit - элегантная и современная обертка CoreMIDI на чистом Swift, поддерживающая MIDI 1.0 и MIDI 2.0.
• Модульный, удобный ввод/вывод
• Автоматическое управление соединениями с конечными точками MIDI и сохранение идентификационных данных
• Сильно типизированные события MIDI с интероперабельностью между MIDI 1.0 и MIDI 2.0
• Автоматическое использование соответствующий Core MIDI API и по умолчанию переход на MIDI 2.0 на платформах, которые его поддерживают
• Поддержка Swift Playgrounds на iPad и macOS
• Полная документация доступна в браузере Xcode Documentation, включая полезные руководства и информацию о начале работы
MIDIKit на GitHub: https://github.com/orchetect/MIDIKit
Платформа: iOS
⭐️: 217
• Модульный, удобный ввод/вывод
• Автоматическое управление соединениями с конечными точками MIDI и сохранение идентификационных данных
• Сильно типизированные события MIDI с интероперабельностью между MIDI 1.0 и MIDI 2.0
• Автоматическое использование соответствующий Core MIDI API и по умолчанию переход на MIDI 2.0 на платформах, которые его поддерживают
• Поддержка Swift Playgrounds на iPad и macOS
• Полная документация доступна в браузере Xcode Documentation, включая полезные руководства и информацию о начале работы
MIDIKit на GitHub: https://github.com/orchetect/MIDIKit
Платформа: iOS
⭐️: 217
👍1
Пишем свой генератор ID для мобильных приложений
Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался о его влиянии на производительность. Тесты показали, что собственное решение может быть значительно быстрее стандартной реализации UUID в Java.
В этой статье мы рассмотрим разные подходы к генерации уникальных идентификаторов, сравним их производительность и напишем своё оптимизированное решение для мобильных приложений.
Статья: https://habr.com/ru/companies/wildberries/articles/844104/
Платформа: Android
Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался о его влиянии на производительность. Тесты показали, что собственное решение может быть значительно быстрее стандартной реализации UUID в Java.
В этой статье мы рассмотрим разные подходы к генерации уникальных идентификаторов, сравним их производительность и напишем своё оптимизированное решение для мобильных приложений.
Статья: https://habr.com/ru/companies/wildberries/articles/844104/
Платформа: Android
Вы когда-нибудь хотели писать код на C и запускать его на Android? Надоели многомегабайтные пакеты для выполнения самых простых вещей. Raw Ddraw Android - это демонстрация того, как можно создавать собственные APK, собирать, устанавливать и автоматически запускать их примерно за 2 секунды, при этом размер APK составляет около 25 Кб для API 26. API 30 (Android R+) имеет размер 45 Кб для поддержки ARM64 + ARM32.
С этим фреймворком вы получаете демо, в котором есть:
• Создание окна с поддержкой OpenGL ES
• Акселерометр/гироскоп, мультитач
• Клавиатура для ввода
• Возможность хранить файлы ресурсов в вашем APK и читать их с помощью AAssetManager
• Поддержка разрешений для использования таких вещей, как звук
• Прямой доступ к USB-устройствам
Raw Ddraw Android на GitHub: https://github.com/cnlohr/rawdrawandroid
Платформа: Android
⭐️: 3.3K
С этим фреймворком вы получаете демо, в котором есть:
• Создание окна с поддержкой OpenGL ES
• Акселерометр/гироскоп, мультитач
• Клавиатура для ввода
• Возможность хранить файлы ресурсов в вашем APK и читать их с помощью AAssetManager
• Поддержка разрешений для использования таких вещей, как звук
• Прямой доступ к USB-устройствам
Raw Ddraw Android на GitHub: https://github.com/cnlohr/rawdrawandroid
Платформа: Android
⭐️: 3.3K
Создание Convention Plugin-ов на базе Kotlin-классов
На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.
Статья: https://habr.com/ru/companies/tbank/articles/843786/
Платформа: Android
На связи Дима Котиков и мы продолжаем разговор о том, как облегчить себе жизнь и уменьшить bolierplate в gradle-файлах. В предыдущих статьях мы сделали отдельный модуль для написания Convention Plugins, провели необходимые настройки и написали несколько Convention Plugin‑ов в «‑.gradle.kts»‑файлах. В этой части мы будем создавать Convention Plugin‑ы на базе Kotlin‑классов.
Статья: https://habr.com/ru/companies/tbank/articles/843786/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Создание динамического вытаскиваемого ScrollView с помощью UIKit для SwiftUI
В одном из наших недавних продуктов мы взялись за интересную задачу - переделать вид карты и поиска. Реализованный нами дизайн представляет собой гибридное состояние, в котором карта находится за сворачиваемым списком в bottom sheet, что очень похоже на такие популярные приложения, как Apple Maps и Google Maps! Такой подход создал несколько проблем, особенно если учесть, что нам нужно было создать эту функцию в рамках представления SwiftUI и при этом поддерживать iOS 15. Одной из ключевых трудностей было отсутствие контрола, который теперь доступен в iOS 16+ с помощью presentationDetents.
Статья: https://medium.com/livefront/creating-a-dynamic-draggable-scrollview-with-uikit-for-swiftui-13bd25c2954c
Платформа: iOS
В одном из наших недавних продуктов мы взялись за интересную задачу - переделать вид карты и поиска. Реализованный нами дизайн представляет собой гибридное состояние, в котором карта находится за сворачиваемым списком в bottom sheet, что очень похоже на такие популярные приложения, как Apple Maps и Google Maps! Такой подход создал несколько проблем, особенно если учесть, что нам нужно было создать эту функцию в рамках представления SwiftUI и при этом поддерживать iOS 15. Одной из ключевых трудностей было отсутствие контрола, который теперь доступен в iOS 16+ с помощью presentationDetents.
Статья: https://medium.com/livefront/creating-a-dynamic-draggable-scrollview-with-uikit-for-swiftui-13bd25c2954c
Платформа: iOS
HotReloading - реализация InjectionIII в виде Swift Package с поддержкой Swift, Objective-C и C++. Позволяет сразу видеть и понимать, как работает ваш код. Работает с VSCode.
HotReloading на GitHub: https://github.com/johnno1962/HotReloading
Платформа: iOS
⭐️: 543
HotReloading на GitHub: https://github.com/johnno1962/HotReloading
Платформа: iOS
⭐️: 543