AppFiles - Mobile Development
2.11K subscribers
2.69K photos
38 videos
10 files
3.61K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Виды логирования в Swift

Меня зовут Владислав Даниелян, я iOS-разработчик в AGIMA. Предлагаю немного поговорить о принтах. Это одна из первых и наиболее используемых функций, с которой начинаются первые шаги в разработке у любого новичка:

Статья: https://habr.com/ru/companies/agima/articles/821515/
Платформа: iOS
Как и зачем мы затащили GeckoView в Почту

Gecko — это браузерный движок, разработанный в Mozilla. GeckoView — это как бы «обёртка» над Gecko, оформленная в виде отдельной библиотеки. И, так как GeckoView весит немало, было решено попытаться удалить из неё всё, что не нужно, пересобрать и распространять её точечно для пользователей со сломанным WebView. А сделать это можно только с помощью Dynamic Feature Delivery. Этот инструмент позволяет выносить модули приложения из основного APK и доставлять их пользователям, например, когда они хотят воспользоваться нашей фичей, и удалять эти модули, если они уже не нужны. Благодаря этому даже тяжёлый GeckoView не повлияет на размер основного APK. Здесь мы расскажем про самые неочевидные проблемы, с которыми мы столкнулись при работе с самим GeckoView и при его интеграции в Dynamic Feature Delivery.

Статья: https://habr.com/ru/companies/vk/articles/820803/
Платформа: Android
GPT-2 с нуля на MLX

Train.py - это ~200 строк кода на Python, который определяет и обучает GPT-2 с нуля, используя mlx и numpy в качестве единственных зависимостей. В качестве примера модель обучена на ~1 миллионе символов Шекспира, содержащихся в файле input.txt, и на Macbook обучение занимает всего 10 минут. В результате вы получаете связанный текст, похожий на Шекспира.

GitHub: https://github.com/pranavjad/mlx-gpt2
Платформа: разработка
Connectivity предоставляет возможности мониторинга сети для мультиплатформенных проектов. Библиотека может отслеживать сетевое подключение с помощью встроенных API на устройствах Android и Apple или путем выполнения HTTP-запросов к указанным хостам.

Connectivity на GitHub: https://github.com/jordond/connectivity
Платформа: Kotlin Multiplatform/кроссплатформа
⭐️: 158
Осваиваем ViewModel в Android: «можно» и «нельзя» — Часть 4

Это будет четвертая статья из серии «Осваиваем ViewModel в Android». Мы обсудили советы по улучшению производительности и качества кода во ViewModel, которые в настоящее время являются основным компонентом приложений для Android.

В предыдущих частях мы уже обсуждали:

1. Избегайте инициализации состояния в блоке init{}.
2. Избегайте раскрытия мутабельных состояний.
3. Используйте update{} при использовании MutableStateFlows.
4. Старайтесь не импортировать зависимости Android во ViewModel
5. Лениво внедряйте зависимости в конструктор.

В этой части мы обсудим 6-8 пункты из списка:

6. Примите более реактивное и менее императивное программирование.
7. Избегайте инициализации ViewModel из внешнего кода.
8. Избегайте передачи параметров из внешнего кода.

Статья: https://apptractor.ru/info/articles/osvaivaem-viewmodel-v-android-mozhno-i-nelzya-chast-4.html
Платформа: Android
Coobjc обеспечивает поддержку корутинов для Objective-C и Swift. В библиотеке команда Alibaba Taobao-Mobile добавила метод await, генератор и модель актора, как в C#, Javascript и Kotlin. Для удобства во фреймворке Cokit также добавили корутины для некоторых API Foundation и UIKit, таких как NSFileManager, JSON, NSData, UIImage и т.д. Кроме того реализовали поддержку кортежей.

Coobjc на GitHub: https://github.com/alibaba/coobjc
Платформа: iOS
⭐️: 4K
Flutter Add-to-App: как добавить Flutter в приложение

Поддерживать одно приложение выгоднее, чем два, поэтому многие компании переносят приложения на Flutter. Но не всегда можно полностью переписать рабочее приложение с нуля. И тогда в лучах софитов появляется Flutter Add-to-App — способ интеграции Flutter-модуля в уже существующее нативное приложение.

Статья: https://habr.com/ru/companies/surfstudio/articles/822693/
Платформа: Flutter
Нативный искусственный интеллект в мобильных приложениях с помощью ExecuTorch

ExecuTorch - это новый фреймворк на основе PyTorch, который позволяет экспортировать модели искусственного интеллекта PyTorch в форматы, подходящие для локального развертывания на таких устройствах, как мобильные телефоны или микроконтроллеры. Это означает, что с помощью небольшого количества нативного кода вы можете легко внедрить функции ИИ в свои приложения. В случае с #ios мы можем воспользоваться бэкендом CoreML, который обеспечивает высокую производительность благодаря фреймворку Apple. В этой серии уроков мы покажем вам, как использовать выбранные вами модели искусственного интеллекта прямо в вашем приложении, без необходимости обращения к API.

Статья: https://blog.swmansion.com/bringing-native-ai-to-your-mobile-apps-with-executorch-part-i-ios-f1562a4556e8
Платформа: iOS
Введение в Swift Testing

На WWDC 2024 одним из самых интересных инструментов был Swift Testing, который делает тестирование Swift-кода более мощным, чем когда-либо. С его помощью разработчики могут уверенно создавать высококачественные продукты с минимальным количеством кода.

Статья: https://apptractor.ru/info/articles/swift-testing-2.html
Платформа: iOS
Сопоставление данных в Kotlin с объяснениями

В каждом проекте наступает момент, когда вам нужно отмепить данные из одного класса в другой. Особенно при работе в чистой архитектуре с отдельными моделями для слоев app и data. Давайте рассмотрим несколько способов отображения моделей в Kotlin и их отличия.

Статья: https://medium.com/@michalankiersztajn/data-mapping-in-kotlin-explained-94238b914dac
Платформа: Android
👎1
Kaml добавляет поддержку YAML в kotlinx.serialization. В настоящее время полностью поддерживается только Kotlin/JVM. Поддерживает большинство основных функций YAML - cкаляры, включая строки, булевы числа, целые числа и плавающие символы, последовательности (списки), карты, нули, псевдонимы и якоря, включая объединение псевдонимов в одну карту. Библиотека поддерживает парсинг YAML в объекты Kotlin (десериализацию) и запись объектов Kotlin в YAML (сериализацию), полиморфизм kotlinx.serialization для sealed и не sealed типов.

Kaml на GitHub: https://github.com/charleskorn/kaml
Платформа: Android
⭐️: 486
Как я исследовал приложение Zomato, чтобы создать свою собственную систему уведомлений

Хотя в приложении есть отличный экран отслеживания заказов, ему не хватает целостности и легкости доступа, которые предлагает iOS-вариант приложения Zomato благодаря использованию в iOS Live Activity. Вдохновившись этим, я решил взять дело в свои руки и провести реверс-инжиниринг приложения Zomato для Android, чтобы создать собственное решение для отслеживания заказов. В этой публикации я расскажу о том, как нашел необходимые конечные точки API, разработал системную архитектуру приложения и реализовал уведомление, которое предоставляет информацию о заказе практически в режиме реального времени. И все это без необходимости постоянно открывать приложение Zomato.

Статья: https://apptractor.ru/info/articles/zomato-reverse.html
Платформа: Android
TPPDF - это быстрый конструктор PDF для iOS и macOS, использующий простые команды для создания продвинутых документов.

Пример:

let document = PDFDocument(format: .a4)
document.add(.contentCenter, text: "Create PDF documents easily.")
let generator = PDFGenerator(document: document)
let url = try generator.generateURL(filename: "Example.pdf")


TPPDF на GitHub: https://github.com/techprimate/TPPDF
Платформа: iOS
⭐️: 699
Видео и подкасты за неделю @AppFiles

(iOS Ru) iOS-приложения под защитой Apple! Или нет?
(iOS En) Explore Swift performance
(iOS En) Xcode 16 Navigation Shortcuts in 12 Minutes
(iOS En) SwiftUI Scroll To Hide Header View - iOS 18
(iOS En) Dark mode icons in iOS 18 and Xcode 16
(iOS En) Mesh Gradient & Floating Tab bar (iPadOS)
(iOS En) iOS 18 Control Center Widget - SwiftUI
(iOS En) Image Carousel in SwiftUI
(And Ru) Как избавиться от рекурсии, или Как мой код попал в Google
(And Ru) Микширование аудиопотоков в Android
(And Ru) Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
(And Ru) Как мы победили техдолг в проекте Android RuStore
(And En) AI development assistance - Android Developers Backstage
(And En) Simplifying Kotlin Build Configuration with Amper
(And En) Why we can't have nice things in Kotlin
(And En) Kotlin Language Features in 2.0 and Beyond
(And En) Mastering WebRTC for Large Conference Calls on Android
(And En) Записи докладов KotlinConf'24
(Crs En) What Is Kotlin Multiplatform And How Does It Work?
(Crs En) Building Your First Compose Multiplatform Hello World App
(Crs En) 10 Takeaways for React Native Devs from the App.js conference
(Dev Ru) Как решать задачи на Leetcode
(Dev Ru) ИИ в работе: как упростить жизнь мобильного разработчика
(Dev Ru) Дали менторить джуна… Все пропало?
(Dev Ru) Как устроен сетевой код в играх

Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
1
iCore - это библиотека, предназначенная для упрощения разработки приложений для Android. Она предоставляет комплексную и стандартизированную структуру для приложений, использующих архитектуру MVVM. iCore предлагает коллекцию базовых классов, функций расширения и полезных классов, которые помогают разработчикам создавать эффективный и удобный код.

• Сокращение дублирования кода: Абстрагируя часто используемые операции, она предотвращает написание повторяющегося кода.
• Быстрый старт: Наличие готовых к использованию базовых компонентов позволяет быстро приступить к реализации проектов.
• Простая интеграция: Легко интегрирует такие распространенные операции, как Retrofit, наблюдение LiveData и выбор темы/языка.
• Реактивное управление данными с помощью Kotlin Flow и LiveData: iCore управляет асинхронными потоками данных с помощью Kotlin Flow и обрабатывает обновления пользовательского интерфейса с помощью LiveData, предлагая более реактивную и современную модель обработки данных.
• Широкие возможности расширения: Расширяемая структура позволяет настраивать систему в соответствии с потребностями приложения.
• Централизованное управление: Обеспечивает централизованное управление, предоставляя легкий доступ к ресурсам приложения с помощью ResourceProvider.

iCore на GitHub: https://github.com/issever22/iCore
Платформа: Android
⭐️: 11
WebView: быстрый релиз, никаких ревью в сторах, а минусы есть?

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

Статья: https://habr.com/ru/companies/alfa/articles/821055/
Платформа: разработка
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Hero анимация в SwiftUI с помощью NavigationTransition

В этой статье вы узнаете, как реализовать Hero анимацию, похожую на анимацию в представлении «Сегодня» в App Store. Для достижения такого внешнего вида и ощущения требуется не три строки кода, поэтому мы также рассмотрим возможность превращения этого компонента в многократно используемый компонент SwiftUI.

Статья: https://apptractor.ru/info/articles/hero-animatsiya-v-swiftui-s-pomoschyu-navigationtransition.html
Платформа: iOS
👨‍💻3
InjectionIII - "горячая перезагрузка" для Swift, позволяет обновлять реализацию функций и любых методов классов, структур или перечислений мгновенно в симуляторе iOS без необходимости полной пересборки или перезапуска приложения. Это экономит разработчику значительное количество времени на доработку кода или итерации над дизайном. По сути, это превращает Xcode из «редактора исходного кода» в «редактор программы», где изменения исходного кода не просто сохраняются на диск, а непосредственно отображаются в вашей работающей программе.

InjectionIII на GitHub: https://github.com/johnno1962/InjectionIII
Платформа: iOS
⭐️: 3.9K
Как мы искали применение App Clip… и нашли?

Меня зовут Кирилл. Моя команда в Додо отвечает за развитие на международных рынках. Мы часто заигрываем с новыми технологиями и делаем прикольные фичи, такие как Live Activities и AI-пицца.

Недавно у нас дошли руки до App Clips. Мы решили разобраться, могут ли они быть нам полезны, сделали своё мини-приложение и запустили его на проде.

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

Статья: https://habr.com/ru/companies/dododev/articles/821009/
Платформа: iOS
Подробное руководство по Logcat в Android Studio с примерами

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

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