This media is not supported in your browser
VIEW IN TELEGRAM
Гравицапа для GPU: OpenGL ES на Kotlin DSL на примере 3D‑«Жизни» Конвея
Наконец‑то я закончил работу над новым большим блоком RedByteFX, тем самым, который в планах звучал скромно: «а ещё было бы неплохо OpenGL ES». «Неплохо» растянулось на много вечеров и вылилось в версию 1.2.0, которая уже лежит в Maven Central. Если коротко: теперь на Kotlin DSL можно писать не только эффекты для Compose, но и полноценную 3D‑графику и вычисления на GPU. Если подробно, то читайте дальше: я покажу всё на живом примере и сравню с тем, как пришлось бы писать без библиотеки.
Статья: https://habr.com/ru/articles/1095948/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Наконец‑то я закончил работу над новым большим блоком RedByteFX, тем самым, который в планах звучал скромно: «а ещё было бы неплохо OpenGL ES». «Неплохо» растянулось на много вечеров и вылилось в версию 1.2.0, которая уже лежит в Maven Central. Если коротко: теперь на Kotlin DSL можно писать не только эффекты для Compose, но и полноценную 3D‑графику и вычисления на GPU. Если подробно, то читайте дальше: я покажу всё на живом примере и сравню с тем, как пришлось бы писать без библиотеки.
Статья: https://habr.com/ru/articles/1095948/
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Производительность SwiftUI: как находить перерисовки в Xcode Instruments
Проблемы с производительностью SwiftUI часто сводятся к двум вещам: представления либо перерисовываются слишком часто, либо их
В этой статье я покажу, как находить перерисовки SwiftUI и измерять их стоимость в Xcode Instruments. Мы запишем трассировку с шаблоном SwiftUI, изучим дорожку SwiftUI и представления View Body Updates, чтобы увидеть, какое представление сколько раз обновляется, сколько занимает каждое обновление и что именно его вызвало. Если вы раньше пользовались
Статья: https://apptractor.ru/info/articles/proizvoditelnost-swiftui-kak-nahodit-pererisovki-v-xcode-instruments.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Проблемы с производительностью SwiftUI часто сводятся к двум вещам: представления либо перерисовываются слишком часто, либо их
body выполняется слишком долго. Прежде чем что-то исправлять, нужно понять, какие именно представления виноваты и что вызывает их обновление. Xcode Instruments способен показать это довольно точно — если знать, где смотреть.В этой статье я покажу, как находить перерисовки SwiftUI и измерять их стоимость в Xcode Instruments. Мы запишем трассировку с шаблоном SwiftUI, изучим дорожку SwiftUI и представления View Body Updates, чтобы увидеть, какое представление сколько раз обновляется, сколько занимает каждое обновление и что именно его вызвало. Если вы раньше пользовались
Self._printChanges(), то Instruments — следующий шаг, когда нужно понять, сколько эти перерисовки реально стоят.Статья: https://apptractor.ru/info/articles/proizvoditelnost-swiftui-kak-nahodit-pererisovki-v-xcode-instruments.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
SimulatorCamera - камера для iOS-симулятора
У iOS Simulator никогда не было настоящей камеры.
SimulatorCamera регистрирует виртуальную камеру на системном уровне macOS с помощью API Apple
Что вы получаете:
• Веб-камера Mac → iOS Simulator — существующее приложение получает кадры с частотой 30 FPS и разрешением 1280×720
• Видео как источник — можно использовать любой MP4 / MOV / HEVC, воспроизведение зацикливается без разрывов
• Статичное изображение как источник — выберите PNG / JPG, и оно станет видеопотоком камеры
• Генератор QR-кодов — программная генерация QR для тестирования сканеров
• Тестовый шаблон — встроенные цветные полосы / движущаяся полоса, всегда доступны
• CLI
• Никакого SDK — вашему iOS-приложению не нужно импортировать или линковать что-либо из этого проекта
• Физическое устройство не требуется — всё работает целиком внутри iOS Simulator
• Бесплатно, открытый исходный код, лицензия MIT — можно форкать, распространять, продавать, никаких отчислений
SimulatorCamera на GitHub: https://github.com/dautovri/SimulatorCamera
Платформа: iOS
⭐️: 59
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
У iOS Simulator никогда не было настоящей камеры.
AVCaptureDevice возвращает nil. Любое приложение, которое работает с камерой — сканеры QR-кодов, считыватели штрихкодов, захват документов, ML-конвейеры, AR-прототипы, видеозвонки, — либо подменяет работу камеры заглушкой, либо запускается только на физических устройствах, либо содержит ненадёжный запасной вариант вроде «использовать фото вместо камеры».SimulatorCamera регистрирует виртуальную камеру на системном уровне macOS с помощью API Apple
CMIOExtension. iOS Simulator в Xcode 16+ видит эту виртуальную камеру через стандартный AVFoundation. Ваш существующий код с AVCaptureSessionпросто работает. Никакой интеграции SDK. Никаких изменений в Info.plist. Никаких веток #if targetEnvironment(simulator).Что вы получаете:
• Веб-камера Mac → iOS Simulator — существующее приложение получает кадры с частотой 30 FPS и разрешением 1280×720
• Видео как источник — можно использовать любой MP4 / MOV / HEVC, воспроизведение зацикливается без разрывов
• Статичное изображение как источник — выберите PNG / JPG, и оно станет видеопотоком камеры
• Генератор QR-кодов — программная генерация QR для тестирования сканеров
• Тестовый шаблон — встроенные цветные полосы / движущаяся полоса, всегда доступны
• CLI
simcamctl — например, simcamctl set-source --qr "TOKEN" для CI и ИИ-агентов• Никакого SDK — вашему iOS-приложению не нужно импортировать или линковать что-либо из этого проекта
• Физическое устройство не требуется — всё работает целиком внутри iOS Simulator
• Бесплатно, открытый исходный код, лицензия MIT — можно форкать, распространять, продавать, никаких отчислений
SimulatorCamera на GitHub: https://github.com/dautovri/SimulatorCamera
Платформа: iOS
⭐️: 59
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - dautovri/SimulatorCamera: Plug a real camera, a video file, or your screen into the iOS Simulator. Finally.
Plug a real camera, a video file, or your screen into the iOS Simulator. Finally. - dautovri/SimulatorCamera
Как Grab сократил ANR на 32% и улучшил время запуска на 35% благодаря R8
Grab — ведущий суперапп Юго-Восточной Азии, который предлагает доставку, транспортные и финансовые услуги миллионам пользователей в восьми странах через одно приложение. За 10 лет кодовая база выросла до более чем 10 млн строк кода и сотен сторонних библиотек, а сборка использовала гибридную связку Bazel и Gradle. В итоге команда столкнулась с тремя растущими проблемами: высоким уровнем ошибок Application Not Responding (ANR), постоянно увеличивающимся размером приложения и постепенно ухудшающимся временем запуска. Включив оптимизацию R8, доработав keep rules и внедрив Baseline Profiles и Startup Profiles, Grab снизил воспринимаемый пользователями уровень ANR на 32%, уменьшил размер загрузки приложения примерно на 30% и ускорил запуск на 35%.
Статья: https://apptractor.ru/info/articles/kak-grab-sokratil-anr-na-32-i-uluchshil-vremya-zapuska-na-35-blagodarya-r8.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Grab — ведущий суперапп Юго-Восточной Азии, который предлагает доставку, транспортные и финансовые услуги миллионам пользователей в восьми странах через одно приложение. За 10 лет кодовая база выросла до более чем 10 млн строк кода и сотен сторонних библиотек, а сборка использовала гибридную связку Bazel и Gradle. В итоге команда столкнулась с тремя растущими проблемами: высоким уровнем ошибок Application Not Responding (ANR), постоянно увеличивающимся размером приложения и постепенно ухудшающимся временем запуска. Включив оптимизацию R8, доработав keep rules и внедрив Baseline Profiles и Startup Profiles, Grab снизил воспринимаемый пользователями уровень ANR на 32%, уменьшил размер загрузки приложения примерно на 30% и ускорил запуск на 35%.
Статья: https://apptractor.ru/info/articles/kak-grab-sokratil-anr-na-32-i-uluchshil-vremya-zapuska-na-35-blagodarya-r8.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Sketchy - рисованные анимированные иллюстрации и empty states для Compose Multiplatform
Sketchy — это библиотека Kotlin Multiplatform с иллюстрациями в стиле набросков и линейной графики — тёплыми, «человечными» изображениями, которые хорошо подходят для онбординга и пустых состояний. Все они полностью рисуются через
Sketchy на GitHub: https://github.com/Ali0092/Sketchy
Платформа: Android/кроссплатформа
⭐️: 39
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Sketchy — это библиотека Kotlin Multiplatform с иллюстрациями в стиле набросков и линейной графики — тёплыми, «человечными» изображениями, которые хорошо подходят для онбординга и пустых состояний. Все они полностью рисуются через
Canvas, изначально поддерживают анимацию и полностью настраиваются под тему вашего приложения. Библиотека работает на Android, iOS, desktop и web из одного source set commonMain.Sketchy на GitHub: https://github.com/Ali0092/Sketchy
Платформа: Android/кроссплатформа
⭐️: 39
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1
UIKit говорит, что интерфейс уже RTL. Почему тогда половина экрана осталась LTR?
Представьте: пользователь переключает язык приложения с английского на арабский. Интерфейс перестраивается, кнопки меняются местами, навигация переезжает на другую сторону. Вроде всё работает.
Но затем открываешь следующий экран и замечаешь, что стрелка Back смотрит не туда. Возвращаешься назад, открываешь форму, а текстовое поле ведёт себя странно при вводе латиницы. Ещё одно переключение языка, и часть интерфейса снова оказывается в LTR.
Статья: https://habr.com/ru/articles/1097336/
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Представьте: пользователь переключает язык приложения с английского на арабский. Интерфейс перестраивается, кнопки меняются местами, навигация переезжает на другую сторону. Вроде всё работает.
Но затем открываешь следующий экран и замечаешь, что стрелка Back смотрит не туда. Возвращаешься назад, открываешь форму, а текстовое поле ведёт себя странно при вводе латиницы. Ещё одно переключение языка, и часть интерфейса снова оказывается в LTR.
Статья: https://habr.com/ru/articles/1097336/
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Прощай,
Apple наконец заменила самый пугающий файл в каждом iOS-репозитории. Вот что изменилось, как перейти на новый формат и стоит ли это делать — с объяснениями для джунов, сеньоров и тимлидов.
Статья: https://apptractor.ru/info/articles/proschay-project-pbxproj-zdravstvuy-json-krupneyshee-izmenenie-xcode-za-30-let.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
project.pbxproj, здравствуй, JSON: крупнейшее изменение Xcode за 30 летApple наконец заменила самый пугающий файл в каждом iOS-репозитории. Вот что изменилось, как перейти на новый формат и стоит ли это делать — с объяснениями для джунов, сеньоров и тимлидов.
Статья: https://apptractor.ru/info/articles/proschay-project-pbxproj-zdravstvuy-json-krupneyshee-izmenenie-xcode-za-30-let.html
Платформа: iOS
Please open Telegram to view this post
VIEW IN TELEGRAM
Jetpack Compose 1.12: как я наконец отказался от «ненастоящих» градиентов
Я не могу сосчитать, сколько раз дизайнер присылал мне красивый мягкий градиент, а я отвечал тремя наложенными
Статья: https://apptractor.ru/info/articles/jetpack-compose-1-12-kak-ya-nakonets-otkazalsya-ot-nenastoyaschih-gradientov.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Я не могу сосчитать, сколько раз дизайнер присылал мне красивый мягкий градиент, а я отвечал тремя наложенными
radialGradient, blur и молитвой. На эмуляторе всё выглядело отлично; на настоящем OLED-экране — блекло. Compose 1.12 решает обе проблемы.Статья: https://apptractor.ru/info/articles/jetpack-compose-1-12-kak-ya-nakonets-otkazalsya-ot-nenastoyaschih-gradientov.html
Платформа: Android
Please open Telegram to view this post
VIEW IN TELEGRAM
HackiOS - запуск iOS на Linux
HackiOS загружает открытое ядро Apple XNU (
Система работает в двух вариантах:
• POCO X5 Pro 5G (redwood, Snapdragon 778G) — ничего не прошивается: UEFI запускается через
• QEMU (
Пока не работают сотовая связь, Bluetooth, зарядка под собственным ядром, запись видео и Live Photo, вход в Apple ID и содержимое App Store. Причина последних ограничений связана в том числе с отсутствием Secure Enclave и тем, что FairPlay daemon завершается.
Главное техническое ограничение сейчас — Metal для приложений. Работа уже идёт: 293 из 456 системных шейдеров удалось запустить на Adreno. Поэтому HackiOS уже выглядит как достаточно функциональная iOS-среда на Android-железе, но до полноценной замены обычного iPhone ей пока далеко.
HackiOS на GitHub: https://github.com/oosexgang/hackios-xnu-kernel
Платформа: iOS/Android
⭐️: 654
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
HackiOS загружает открытое ядро Apple XNU (
xnu-8796.121.2, ядро iOS 16.5) на аппаратном обеспечении Android-смартфона и запускает поверх него неизменённое пользовательское пространство iOS 16.5: launchd → backboardd → SpringBoard → приложения. Это стало возможным благодаря собственному EFI-загрузчику, собственным заменам закрытых драйверов Apple, порту UEFI и Linux-драйверу Wi-Fi, работающему через слой совместимости.Система работает в двух вариантах:
• POCO X5 Pro 5G (redwood, Snapdragon 778G) — ничего не прошивается: UEFI запускается через
fastboot boot, вся система работает из оперативной памяти, а после перезагрузки телефон возвращается к Android;• QEMU (
virt, aarch64) — то же самое можно запустить на любом Linux-компьютере, телефон для этого не нужен.Пока не работают сотовая связь, Bluetooth, зарядка под собственным ядром, запись видео и Live Photo, вход в Apple ID и содержимое App Store. Причина последних ограничений связана в том числе с отсутствием Secure Enclave и тем, что FairPlay daemon завершается.
Главное техническое ограничение сейчас — Metal для приложений. Работа уже идёт: 293 из 456 системных шейдеров удалось запустить на Adreno. Поэтому HackiOS уже выглядит как достаточно функциональная iOS-среда на Android-железе, но до полноценной замены обычного iPhone ей пока далеко.
HackiOS на GitHub: https://github.com/oosexgang/hackios-xnu-kernel
Платформа: iOS/Android
⭐️: 654
Please open Telegram to view this post
VIEW IN TELEGRAM
•
(iOS Ru) Metal без магии — когда GPU ускоряет, а не мешает•
(iOS Ru) Как легально опубликоваться вне App Store•
(iOS Ru) Как и зачем писать игровой движок на Swift•
(iOS En) Instagram's Swipeable Feed-to-Camera Interaction Using SwiftUI•
(iOS En) Your iPhone App Needs This Before Supporting iPhone Duo•
(And Ru) Явное лучше неявного, или Shift left в Android-сборке•
(And Ru) Как читать метрику памяти и искать прожорливые экраны•
(Dev Ru) Как подружить мобильное приложение с JS и прокачать свой SDUI•
(Dev Ru) Разделяй и властвуй: распил мобильного приложения на микросервисы•
(Dev Ru) Rust в мобильной разработке•
(Dev Ru) Насколько опасен ИИ для кибербезопасности•
(Dev En) How this skill helps me to understand AI code•
(Dev En) The Tech Market Changed. Here's How to Survive It.•
(Mrk Ru) Хэллоуин: ASO и монетизация мобильных игрПрошлогодние видео:
•
(And Ru) Как обеспечить стабильную работу SDK для миллионов устройств•
(Crs Ru) Что ждёт Kotlin Multiplatform разработчика на собесе? (все собеседования)Please open Telegram to view this post
VIEW IN TELEGRAM
Интеллектуальная собственность в мобильном приложении
Многие предприниматели стремятся разработать мобильное приложение для удобства доступа потребителей к его продукту/услуге, узнаваемости и, как следствие, для роста продаж.
Вместе с тем, не каждый предприниматель задумывается, что создаваемые результаты интеллектуальной деятельности (РИД): иконка, название приложения и/или его разделов, интерфейсы страниц (их композиционное, цветовое, шрифтовое решения), и конечно, функционал приложения — всё это потенциально можно превратить в интеллектуальную собственность. Как это сделать?
Прежде всего, любой РИД создается человеком — автором. В процессе создания приложения многие РИДы являются объектами авторского права.
Статья: https://habr.com/ru/articles/1097916/
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
Многие предприниматели стремятся разработать мобильное приложение для удобства доступа потребителей к его продукту/услуге, узнаваемости и, как следствие, для роста продаж.
Вместе с тем, не каждый предприниматель задумывается, что создаваемые результаты интеллектуальной деятельности (РИД): иконка, название приложения и/или его разделов, интерфейсы страниц (их композиционное, цветовое, шрифтовое решения), и конечно, функционал приложения — всё это потенциально можно превратить в интеллектуальную собственность. Как это сделать?
Прежде всего, любой РИД создается человеком — автором. В процессе создания приложения многие РИДы являются объектами авторского права.
Статья: https://habr.com/ru/articles/1097916/
Платформа: разработка
Please open Telegram to view this post
VIEW IN TELEGRAM