AppFiles - Mobile Development
2.01K subscribers
2.57K photos
33 videos
8 files
3.46K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Local AI Stack - этот репозиторий содержит стартовый набор для создания ИИ-приложений, работающих локально. С его помощью любой желающий может бесплатно создать простое ИИ-приложение для работы с вопросами и ответами на основе собственных документов. В наборе используются Ollama для создания модели, LangChain для оркестровки LLM и Next.js для логики приложения.

Local AI Stack на GitHub: https://github.com/ykhli/local-ai-stack
Платформа: разработка/ИИ
⭐️: 220
This media is not supported in your browser
VIEW IN TELEGRAM
ComposeNumericRoller демонстрирует динамическую анимацию цифр в Android-приложении с помощью Jetpack Compose. Легко анимируйте меняющиеся цифры, прокручивая их вверх или вниз, чтобы обеспечить красивое взаимодействие с пользователем.

ComposeNumericRoller на GitHub: https://github.com/HadiDortaj/ComposeNumericRoller
Платформа: Android
⭐️: 7
Байт-код — это просто! Как сделать DI по-настоящему быстрым

Два года назад мы в Яндекс Маркетае начали разрабатывать свой легковесный DI-фреймворк Scout, который предоставляет выразительный Kotlin DSL. Он не генерирует код, а делает всю работу в рантайме.

Недавний переход с compile-time-библиотеки Dagger 2 на нашу привёл к замедлению старта приложения.

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

Статья: https://habr.com/ru/companies/yandex/articles/770800/
Платформа: Android
1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
touchHLE - это высокоуровневый эмулятор приложений для iPhone OS. Он работает на современных настольных операционных системах и Android и написан на языке Rust.

Подход touchHLE к высокоуровневой эмуляции (HLE) отличается от низкоуровневой эмуляции (LLE) тем, что он не имитирует непосредственно аппаратное обеспечение iPhone/iPod touch. Вместо того чтобы запускать iPhone OS внутри эмуляции, touchHLE сам занимает место iPhone OS и предоставляет собственные реализации системных фреймворков (Foundation, UIKit, OpenGL ES, OpenAL и др.). Единственный код, который выполняет эмулируемый процессор, - это бинарный файл приложения и несколько библиотек.

Цель проекта - запуск игр, появившихся на заре iOS. В настоящее время работают приложения для iPhone и iPod touch для iPhone OS 2.x. Далее ожидается поддержка iPhone OS 3.0. В долгосрочной перспективе iPhone OS 3.1, приложения для iPad (iPhone OS 3.2), iOS 4.x.

Поддержка приложений, которые не являются играми, не является приоритетной - это сложнее и менее интересно.

touchHLE на GitHub: https://github.com/hikari-no-yume/touchHLE
Платформа: iOS
⭐️: 2K
Skip - это технология для создания двухплатформенных мобильных приложений на языке Swift. Сердцем Skip является интеллектуальный транспилятор языка Swift в Kotlin. Для анализа исходного текста Swift в Skip используется собственная библиотека Apple SwiftSyntax - та же самая, что используется в макросах Swift. Затем она преобразует код в понятный для восприятия Kotlin, сохраняя даже комментарии. Благодаря схожести языков, результат часто не отличается от Kotlin, который вы написали бы вручную (заметным исключением является перенос SwiftUI в Compose. Тот факт, что SwiftUI является объектно-ориентированным, а Compose - функциональным, требует некоторых неуклюжих преобразований исходного кода). Вместе с транспилятором Skip поставляет конвертер проектов Swift Package Manager (SPM) в Android Gradle. Skip объединяет эти инструменты в плагин для сборки Xcode. Этот набор инструментов Skip называется SkipStone. В этом репозитории как раз он и размещен. Здесь также размещены форумы Skip для общих обсуждений, а также для обсуждения конкретных проблем и сообщений об ошибках.

Skip на GItHub: https://github.com/skiptools/skip
Платформа: iOS/кроссплатформа
⭐️: 426
Видео и подкасты за неделю:

(iOS Ru) Кнопки красить — это вам не деревья вертеть
(iOS En) New SwiftUI Photo Picker - Single & Multiple Selection
(iOS En) SwiftData CRUD Operations
(iOS En) How to solve nested Observable Objects issue
(iOS En) Swift Connection 2023 Videos
(iOS En) Cleaner, Safer Code with Swift KeyPaths
(iOS En) A Tour of Xcode Cloud
(iOS En) An Easier Dev Life with Kaleidoscope
(And Ru) Собеседование с Михаилом Левченко
(And Ru) Управление сложностью состояния
(And En) Now in Android: 94 - #TheAndroidShow, Jetpack Glance, Google Play policy updates, and more
(And En) AndroidX, Gradle and Metalava - Android Developers Backstage
(And En) When Should You Migrate to Jetpack Compose?
(And En) 3 Clean Code Hacks I Bet You Didn't Know
(And En) What's new in Kotlin 1.9.20
(And En) Making Threads for Android
(And En) Kotlin & Android Development Course: Build a Quiz Application
(Crs En) A Complete Guide on “Login with WhatsApp” in Flutter Apps (w/ backend)
(Dev Ru) Backend Driven… Аналитика!
(Dev Ru) Podlodka #341: рендеринг текста проклят

Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻‍💻
👍2
Tabman - мощный Page View Controller с интерактивными индикаторными полосами. Несколько вариантов представления, расширяемый, легко настраиваемый.

Tabman на GitHub: https://github.com/uias/Tabman
Платформа: iOS
⭐️: 2.7K
👍1
Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS

Недавно закончился отборочный этап Yandex Cup для разработчиков по различным направлениям, одним из которых была мобильная разработка под iOS. Как раз про нее и поговорим, а точнее про задания, которые были там представлены. Стоит отметить, что их сложность выше среднего, по этой причине, думаю, каждый подчеркнет для себя что-нибудь новое. Хотелось бы сразу сказать о том, что некоторые используемые конструкции/инструменты языка/фреймворков были для меня не новы, но в жизни встречался с ними редко, поэтому приходилось читать и на практике воспроизводить код из условия, экспериментируя с ним. Правильных ответов у меня не было, и решал я уже после окончания отборочного этапа. Если заметите какие-либо неточности в формулировках, в размышлениях, в ответах, буду рад обсудить это в комментариях.

Статья: https://habr.com/ru/articles/771948/
Платформа: iOS
👍1
Как сделать тесты на Espresso более читабельными и стабильными

Если вы писали тесты на Espresso — тестовом фреймворке от Google с открытым исходным кодом, — то вы знаете, что они не всегда стабильны и легко читаемы. Меня зовут Ксения Никитина, я являюсь Android-разработчиком в мобильной команде «Лаборатории Касперского». В этой статье я предложу вам способ, как сделать так, чтобы ваши автотесты отвечали всем ключевым качествам: были хорошо читаемы, стабильны, логируемы, давали возможность делать скриншоты, работали с AndroidOS и, наконец, имели продуманную и понятную архитектуру.

Статья: https://habr.com/ru/companies/kaspersky/articles/770108/
Платформа: Android/тестирование
👍1
Корутины против потоков: тест потребления памяти

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

Статья: https://apptractor.ru/info/articles/kotlin-coroutines-vs-threads-memory-benchmark.html
Платформа: Android
👍2
BeepBeep - это платформа для доставки еды и заказа такси, призванная продемонстрировать возможности Kotlin. В ней есть мобильные приложение для пользователей, приложения для управления рестораном, приложения для водителей, для доставщиков - все это для iOS и Android на Compose Multiplatform. Есть приложение с дашбордами на нем же для Mac, Linux и Windows, приложение для поддержки. Есть несколько микросервисов на Kotlin с Ktor для поддержки всего этого.

BeepBeep на GitHub: https://github.com/TheChance101/beep-beep
Платформа: Android/кроссплатформа
⭐️: 413
👍1🔥1
Делаем первый App Shortcut

Одна из моих любимых особенностей создания действий приложения с помощью AppIntents - простота создания прототипов. Я могу пройти путь от идеи до работающего действия менее чем за час. В этом руководстве я расскажу вам о том, как создать первое действие для приложения Shortcuts.

Статья: https://apptractor.ru/info/articles/delaem-pervyy-app-shortcut.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
inshellisense предоставляет автозаполнение в стиле IDE для терминала. Это нативный рантайм с автодополнением, поддерживающий 600+ операторов командной строки. Поддерживает Windows, Linux и MacOS.

inshellisense на GitHub: https://github.com/microsoft/inshellisense
Платформа: разработка
⭐️: 1.7K
Chat - UI-фреймворк для чата с полностью настраиваемыми ячейками сообщений и встроенным медиа-пикером. Отображает сообщения с прокруткой, позволяет создавать и "отправлять" новые сообщения (под отправкой понимается вызов замыкания), позволяет передавать кастомный конструктор представлений для сообщений и ввода, имеет встроенную библиотеку выбора фотографий и видео, есть отображение полноэкранного меню при длительном нажатии на ячейку сообщения, есть поддержка функции "ответить на сообщение" через меню, поддержка записи голоса, видео/фото и текста.

Chat на GitHub: https://github.com/exyte/Chat
Платформа: iOS
⭐️: 334
👍3
BabaBASIC - интерпретатор QuickBASIC 4.5 для платформы Android.

BabaBASIC на GitHub: https://github.com/ianatha/bababasic/
Платформа: Android
⭐️: 55
Видео и подкасты за неделю:

(iOS Ru) Паттерн Координатор для навигация в iOS-приложении
(iOS En) Swift Macros 101: Your Step-by-Step Guide To Crafting Your First Macro!
(iOS En) SwiftData Containers and Preview Data
(iOS En) Using SwiftUI and ReplayKit: Build an iOS Screen-Sharing App
(iOS En) Building Scrollable Tab View With New iOS 17 APIs
(iOS En) Building Complex Scroll Animations With New iOS 17 APIs
(iOS En) NSSpain XI Videos
(And Ru) Ошибки при проектировании публичного API наших библиотек, и как мы их решали
(And En) Practical magic with animations in Jetpack Compose
(And En) Compression Streams support on all browsers, Android’s New Credential Manager, and more dev news!
(And En) Are One-Time Events an Anti-Pattern? - Why Almost Every Android Dev Does It Wrong!
(And En) The Ultimate Guide to Android Splash Screen Animations – Splash API
(Crs En) KMPizza with Lena Stepanova
(Dev Ru) Podlodka #342: пишем язык внутри языка
(Dev En) Arduino Course for Everybody
(Mrk Ru) Как определить топ USP при запуске нового продукта

Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻‍💻
👍2
Язык программирования Swift компании Apple прекрасно дополняется технологией сериализации Protocol Buffer ("protobuf") компании Google. Они оба ориентированы на высокую производительность и безопасность программирования. В данном проекте Swift Protobuf представлена как утилита командной строки, добавляющая генерацию Swift-кода к Google protoc, так и рантайм библиотека, необходимая для использования сгенерированного кода.

Swift Protobuf на GitHub: https://github.com/apple/swift-protobuf
Платформа: iOS
⭐️: 4.3K
👍1
10 быстрых советов по повышению качества iOS-кода: часть 1

1. Используйте паттерн расширения для группировки фрагментов кода
2. Определите максимальное количество строк в файле
3. Создавайте переменные и функции с описательными именами
4. Используйте преимуществ typealias
5. Позаботьтесь о «неправильном пути».
6. Опишите принудительное разворачивание и индексы
7. Правильно работайте с конфиденциальной информацией
8. Избегайте дублирования кода
10. Используйте преимущества встроенных функций

Статья: https://apptractor.ru/develop/coding/10-bystryh-sovetov-po-povysheniyu-kachestva-ios-koda-chast-1.html
Платформа: iOS
Вопросы с собеседований: зачем нужен класс nothing в Kotlin

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

Сниппет: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-zachem-nuzhen-klass-nothing-v-kotlin.html
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Orbital - библиотека анимации Jetpack Compose, позволяющая реализовать Движение, Трансформацию и Переход между общими элементами. Эта библиотека поддерживает и Kotlin Multiplatform (Android, iOS, Desktop, macOS и js).

Orbital на GitHub: https://github.com/skydoves/Orbital
Платформа: Android
⭐️: 791