О зацикливании рекомпозиции в Jetpack Compose
Jetpack Compose — это мощный инструмент, который упрощает создание UI в Android, но его освоение может быть не таким уж простым. Многие разработчики сталкиваются с неожиданными результатами и ошибками, которые на первый взгляд кажутся неочевидными. Сегодня разберем один из таких примеров и посмотрим, как зациклить рекомпозицию в Compose — и самое главное, как этого избежать.
Статья: https://habr.com/ru/articles/859084/
Платформа: Android
Jetpack Compose — это мощный инструмент, который упрощает создание UI в Android, но его освоение может быть не таким уж простым. Многие разработчики сталкиваются с неожиданными результатами и ошибками, которые на первый взгляд кажутся неочевидными. Сегодня разберем один из таких примеров и посмотрим, как зациклить рекомпозицию в Compose — и самое главное, как этого избежать.
Статья: https://habr.com/ru/articles/859084/
Платформа: Android
Apple убивает Swift
Swift был отличным языком, но он далеко ушел от своего первоначального видения.
Довольно далеко.
Сегодня мы узнаем, как управляются современные языки программирования. Я объясню, чем уникально плоха диктаторская структура Swift, и продемонстрирую вам, насколько плохой стала ситуация.
Статья: https://apptractor.ru/info/articles/apple-ubivaet-swift.html
Платформа: iOS/Swift
Swift был отличным языком, но он далеко ушел от своего первоначального видения.
Довольно далеко.
Сегодня мы узнаем, как управляются современные языки программирования. Я объясню, чем уникально плоха диктаторская структура Swift, и продемонстрирую вам, насколько плохой стала ситуация.
Статья: https://apptractor.ru/info/articles/apple-ubivaet-swift.html
Платформа: iOS/Swift
Composable Screens - подборка экранов, воплощенных Android-разработчиками с помощью инструментария Compose. Пока там, судя по всему, всего два приложения, но автор определенно предполагает расширять свою подборку.
Composable Screens на GitHub: https://github.com/erfansn/ComposableScreens
Платформа: Android
⭐️: 138
Composable Screens на GitHub: https://github.com/erfansn/ComposableScreens
Платформа: Android
⭐️: 138
Менеджер UndoManager в Foundation громоздок в использовании, в нем много шаблонного кода для добавления действий отмены и повтора. Поскольку он основан на замыкании, можно легко допустить ошибку. Revertible - этот фреймворк добавляет простой способ отслеживать изменений состояния и обеспечивает простой обход истории состояния с помощью функций
Revertible на GitHub: https://github.com/AndyHeardApps/Revertible
Платформа: iOS
⭐️: 3
undo() и redo().Revertible на GitHub: https://github.com/AndyHeardApps/Revertible
Платформа: iOS
⭐️: 3
Forwarded from Mobile Development by AppTractor
Вышла Developer Preview версия Android 16
Android 16 Developer Preview 1 уже доступен для тестирования ваших приложений. Это начало более частого выпуска API для Android в рамках усилий по ускорению инноваций в приложениях и устройствах.
Есть четыре заметных изменения - это новый встроенный инструмент выбора фотографий, поддержка медицинских записей FHIR в приложении Health Connect, обновленная версия Privacy Sandbox на Android, а также новая константа, отличающая Android 16 от предстоящего минорного релиза Q4.
Эта предварительная версия для следующего большого релиза Android, запуск которого запланирован на 2 квартал 2025 года. Этот выпуск похож на все API-выпуски в прошлом, где можно понять запланированные изменения поведения, которые часто привязаны к targetSdkVersion. Конец первого квартала 2025 года намечен для достижения стабильности платформы. На этом этапе предоставят финальные API SDK/NDK, а также финальные внутренние API и системное поведение приложений. Ожидается, что Platform Stability будет достигнута в марте 2025 года, и с этого момента у вас будет несколько месяцев до официального релиза (он будет во втором, а не в третьем квартале), чтобы провести финальное тестирование.
Android 16 Developer Preview 1 уже доступен для тестирования ваших приложений. Это начало более частого выпуска API для Android в рамках усилий по ускорению инноваций в приложениях и устройствах.
Есть четыре заметных изменения - это новый встроенный инструмент выбора фотографий, поддержка медицинских записей FHIR в приложении Health Connect, обновленная версия Privacy Sandbox на Android, а также новая константа, отличающая Android 16 от предстоящего минорного релиза Q4.
Эта предварительная версия для следующего большого релиза Android, запуск которого запланирован на 2 квартал 2025 года. Этот выпуск похож на все API-выпуски в прошлом, где можно понять запланированные изменения поведения, которые часто привязаны к targetSdkVersion. Конец первого квартала 2025 года намечен для достижения стабильности платформы. На этом этапе предоставят финальные API SDK/NDK, а также финальные внутренние API и системное поведение приложений. Ожидается, что Platform Stability будет достигнута в марте 2025 года, и с этого момента у вас будет несколько месяцев до официального релиза (он будет во втором, а не в третьем квартале), чтобы провести финальное тестирование.
Об анатомии крэшей на iOS «по-взрослому»
В работе любого ПО как на iOS, так и на других ОС, важна стабильность и отказоустойчивость. Вместе с тем, полностью исключить сбои и ошибки в работе приложений попросту невозможно. Соответственно, ключевое значение имеет возможность оперативного отлавливания ошибок и их устранения. В этом не обойтись без знания «анатомии» крэшей и понимания принципов работы с ними.
В этой статье я расскажу, как устроены крэши в iOS, откуда они берутся и как с ними взаимодействовать.
Статья: https://habr.com/ru/companies/odnoklassniki/articles/858302/
Платформа: iOS
В работе любого ПО как на iOS, так и на других ОС, важна стабильность и отказоустойчивость. Вместе с тем, полностью исключить сбои и ошибки в работе приложений попросту невозможно. Соответственно, ключевое значение имеет возможность оперативного отлавливания ошибок и их устранения. В этом не обойтись без знания «анатомии» крэшей и понимания принципов работы с ними.
В этой статье я расскажу, как устроены крэши в iOS, откуда они берутся и как с ними взаимодействовать.
Статья: https://habr.com/ru/companies/odnoklassniki/articles/858302/
Платформа: iOS
❤2
Кроссплатформенная архитектура ядра приложения. Простая. Линейная. Масштабируемая
Главное, на что я хотел бы обратить ваше внимание — это то, насколько логика становится целостной, если проектировать ее с точки зрения приложения, а не пользовательского интерфейса. А ещё насколько она гибкая, тестируемая и масштабируемая, если каждая функция отделена от своих зависимостей на уровне действий (функций), а не объектов.
Статья: https://habr.com/ru/articles/851808/
Платформа: Android
Главное, на что я хотел бы обратить ваше внимание — это то, насколько логика становится целостной, если проектировать ее с точки зрения приложения, а не пользовательского интерфейса. А ещё насколько она гибкая, тестируемая и масштабируемая, если каждая функция отделена от своих зависимостей на уровне действий (функций), а не объектов.
Статья: https://habr.com/ru/articles/851808/
Платформа: Android
Поиск нашего Золотого пути к устойчивой Android-разработке
Следуя «Золотому пути», мы не просто пишем код — мы создаем устойчивую и адаптируемую культуру разработки, которая выдержит испытание временем.
Статья: https://apptractor.ru/info/articles/poisk-nashego-zolotogo-puti-k-ustoychivoy-android-razrabotke.html
Платформа: Android
Следуя «Золотому пути», мы не просто пишем код — мы создаем устойчивую и адаптируемую культуру разработки, которая выдержит испытание временем.
Статья: https://apptractor.ru/info/articles/poisk-nashego-zolotogo-puti-k-ustoychivoy-android-razrabotke.html
Платформа: Android
Focus Launcher - минималистичный лаунчер для Android, созданный с помощью Jetpack Compose. Поддерживает светлый и темный режим, есть свой пак иконок, данные о фазе Луны, анимированные часы, избранные приложения. Стек: Kotlin, Jetpack Compose, корутины, архитектура Circuit, коллекция Android Architecture Component, Hilt-Dagger, Ktor.
Focus Launcher на GitHub: https://github.com/mslalith/focus_launcher
Платформа: Android
⭐️: 138
Focus Launcher на GitHub: https://github.com/mslalith/focus_launcher
Платформа: Android
⭐️: 138
❤3
Реверс-инжиниринг новой функции iOS Inactivity Reboot
В iOS 18 появилась новая функция безопасности: перезагрузка бездействия (inactivity reboot). От чего она защищает и как работает? В этом посте мы рассмотрим все подробности вплоть до расширения ядра и Secure Enclave Processor.
Статья: https://habr.com/ru/companies/ruvds/articles/859884/
Платформа: iOS
В iOS 18 появилась новая функция безопасности: перезагрузка бездействия (inactivity reboot). От чего она защищает и как работает? В этом посте мы рассмотрим все подробности вплоть до расширения ядра и Secure Enclave Processor.
Статья: https://habr.com/ru/companies/ruvds/articles/859884/
Платформа: iOS
Избавляемся от Android в api-модулях
Небольшой туториал на тему «Как уменьшить количество Android-модулей в проекте при помощи оберток над Android-классами».
Статья: https://habr.com/ru/companies/alfa/articles/859450/
Платформа: Android
Небольшой туториал на тему «Как уменьшить количество Android-модулей в проекте при помощи оберток над Android-классами».
Статья: https://habr.com/ru/companies/alfa/articles/859450/
Платформа: Android
RichEditorSwiftUI - библиотека на основе Swift, позволяющая легко сделать редактор текста в SwiftUI. Поддерживает жирный, наклонный, подчеркнутый шрифт и разные заголовки.
RichEditorSwiftUI на GitHub: https://github.com/canopas/rich-editor-swiftui
Платформа: iOS
⭐️: 81
RichEditorSwiftUI на GitHub: https://github.com/canopas/rich-editor-swiftui
Платформа: iOS
⭐️: 81
Портал, манулы и мячи: опыт разработки для Apple Vision Pro. Часть 1
В статье описан мой опыт разработки мини-игр для Apple Vision Pro в условиях жёсткого ограничения во времени. Расскажу, с какими сложностями я столкнулся в ходе работы с 3D-моделями, и поделюсь способами их преодоления. Лайфхаки для упрощения работы с RealityViewContent и Reality Composer Pro прилагаются.
Статья: https://habr.com/ru/articles/860194/
Платформа: iOS
В статье описан мой опыт разработки мини-игр для Apple Vision Pro в условиях жёсткого ограничения во времени. Расскажу, с какими сложностями я столкнулся в ходе работы с 3D-моделями, и поделюсь способами их преодоления. Лайфхаки для упрощения работы с RealityViewContent и Reality Composer Pro прилагаются.
Статья: https://habr.com/ru/articles/860194/
Платформа: iOS
Видео и подкасты за неделю на @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Дейтинг, Swift и Формула-1: от первых шагов в IT до победы в хакатоне•
(iOS Ru) iOS разработка с нуля•
(iOS En) Disintegration Effect (Thanos Snap Effect) | SwiftUI•
(iOS En) Recreating Mail App’s Tab bar | SwiftUI•
(iOS En) Fix iOS 18 Gesture Problems With ScrollViews | SwiftUI•
(iOS En) How to save data to local storage - iOS File System and Sandboxing•
(iOS En) Apple's Official Method to Learn Swift and iOS•
(iOS En) SwiftUI Tutorial: Build a Real App! Payment Calculator•
(Andr Ru) Code Review: вы не поверите, насколько распространены эти ошибки в коде Android-проектов•
(And En) Graphics layers | Jetpack Compose Tips•
(And En) Open Health Stack•
(And En) How to Deserialize Inconsistent JSON Data With a Custom Kotlinx Serializer•
(And En) Anonymous Functions Aren't Lambdas•
(And En) Animating Your World with Doris Liu – Dive into Jetpack Compose Animations•
(Crs En) The Compose Multiplatform Crash Course for 2025 - Build a Clean Code Book App•
(Crs En) Platform Integrations With Russel Wolf•
(Crs En) From Sprite Sheets to Stunning Animations in Jetpack Compose! KMP Library•
(Crs En) Building a Clean, Multi-Module Application with Compose Multiplatform•
(Dev Ru) iOS vs Android: большая битва платформ — что лучше для разработчика, бизнеса и простого пользователя•
(Dev Ru) Всё о лицензиях библиотек, что необходимо знать разработчику#ios #android #mobile #video
Akkurate - библиотека валидации, использующая выразительные возможности Kotlin. Не нужно 30+ аннотаций или сложных ограничений, пишите код проверки на Kotlin с помощью красивого декларативного API.
Разработанный с нуля для обработки сложной бизнес-логики, Akkurate призван помочь вам писать качественный и поддерживаемый код валидации.
Akkurate на GitHub: https://github.com/nesk/akkurate
Платформа: Android
⭐️: 319
Разработанный с нуля для обработки сложной бизнес-логики, Akkurate призван помочь вам писать качественный и поддерживаемый код валидации.
Akkurate на GitHub: https://github.com/nesk/akkurate
Платформа: Android
⭐️: 319
Дебаг на максимум: секретные настройки Xcode, которые должен знать каждый разработчик
Я поделюсь, как пофиксить отрисовку. Вам понадобятся знания основ Swift, CPU, GPU (про них поговорим) и немного юмора. Пройдёмся по примерам багов отображения на iPhone 16 Pro.
Примеры будем смотреть на картинках с красным мотоциклом. Красный байк был мечтой айосеров-старожилов в Альфе и даже стал локальным мемом. На собеседованиях мы часто спрашиваем, есть ли у кандидата красный мотоцикл (если да — это идеальный мэтч).
Статья: https://habr.com/ru/companies/alfa/articles/858706/
Платформа: iOS
Я поделюсь, как пофиксить отрисовку. Вам понадобятся знания основ Swift, CPU, GPU (про них поговорим) и немного юмора. Пройдёмся по примерам багов отображения на iPhone 16 Pro.
Примеры будем смотреть на картинках с красным мотоциклом. Красный байк был мечтой айосеров-старожилов в Альфе и даже стал локальным мемом. На собеседованиях мы часто спрашиваем, есть ли у кандидата красный мотоцикл (если да — это идеальный мэтч).
Статья: https://habr.com/ru/companies/alfa/articles/858706/
Платформа: iOS
Работа с CoordinatorLayout: шапочный разбор
В этой статье я поделюсь опытом по реализации двух версий шапки на главном экране приложения Avito.
Реализации фичей очень похожи, поэтому в своем рассказе я остановлюсь на второй версии. Эта статья будет особенно полезна разработчикам, которые хотят познакомиться с CoordinatorLayout и научиться делать похожие задачки с нетривиальным взаимодействием view между собой. Да, тема не нова, но, тем не менее, она не теряет своей актуальности! Итак, обо всем по порядку.
Статья: https://habr.com/ru/companies/avito/articles/859692/
Платформа: Android
В этой статье я поделюсь опытом по реализации двух версий шапки на главном экране приложения Avito.
Реализации фичей очень похожи, поэтому в своем рассказе я остановлюсь на второй версии. Эта статья будет особенно полезна разработчикам, которые хотят познакомиться с CoordinatorLayout и научиться делать похожие задачки с нетривиальным взаимодействием view между собой. Да, тема не нова, но, тем не менее, она не теряет своей актуальности! Итак, обо всем по порядку.
Статья: https://habr.com/ru/companies/avito/articles/859692/
Платформа: Android
Используйте транзакции вместо сохранения в SwiftData и Core Data
Обеспечение согласованности и целостности данных имеет решающее значение в операциях сохранения данных. Фреймворк SwiftData вводит метод
Статья: https://apptractor.ru/info/articles/ispolzuyte-tranzaktsiy-vmesto-sohraneniya-v-swiftdata-i-core-data.html
Платформа: iOS
Обеспечение согласованности и целостности данных имеет решающее значение в операциях сохранения данных. Фреймворк SwiftData вводит метод
transaction в ModelContext, предоставляя разработчикам более элегантный способ организации и управления операциями с данными. В этой статье мы рассмотрим, как использовать концепцию транзакций для создания более надежных и эффективных операций сохранения данных.Статья: https://apptractor.ru/info/articles/ispolzuyte-tranzaktsiy-vmesto-sohraneniya-v-swiftdata-i-core-data.html
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
LazyPager for SwiftUI - плавный, с ленивой загрузкой, панорамированием, масштабированием и возможностью отказа от жестов просмотрщик для SwiftUI.
Цель этой библиотеки - предоставить простой интерфейс SwiftUI для плавного и бесшовного просмотра контента. В отличие от других пейджеров для SwiftUI - этот построен поверх UIKit API, раскрывая возможности, которые еще не доступны в SwiftUI.
Фичи: ленивая загрузка, показ любого контента, не только изображений, горизонтальная и вертикальная прокрутка, увеличение и уменьшение, двойной тап для зума, работа с .ignoresSafeArea() для действительно полноэкранного просмотра, собятия нажатий обрабатываются внутри, настройки.
LazyPager for SwiftUI на GitHub: https://github.com/gh123man/SwiftUI-LazyPager
Платформа: iOS
⭐️: 169
Цель этой библиотеки - предоставить простой интерфейс SwiftUI для плавного и бесшовного просмотра контента. В отличие от других пейджеров для SwiftUI - этот построен поверх UIKit API, раскрывая возможности, которые еще не доступны в SwiftUI.
Фичи: ленивая загрузка, показ любого контента, не только изображений, горизонтальная и вертикальная прокрутка, увеличение и уменьшение, двойной тап для зума, работа с .ignoresSafeArea() для действительно полноэкранного просмотра, собятия нажатий обрабатываются внутри, настройки.
LazyPager for SwiftUI на GitHub: https://github.com/gh123man/SwiftUI-LazyPager
Платформа: iOS
⭐️: 169
🔥2
Tracer спустя год: новые фичи и возможности инструмента для аналитики ошибок в мобильных приложениях
Tracer — модульный инструмент для аналитики ошибок в мобильных приложениях от OK.Tech, который мы представили год назад. За это время в Tracer зарегистрировалось более 1500 организаций и 5000 пользователей. Сейчас решение обрабатывает более 1 млрд событий в день и обслуживает приложения, которые имеют суммарный DAU в 20 млн пользователей. Опыт наших клиентов показывает, что Tracer успешно справляется с поставленными задачами, но мы всё равно не останавливаемся на достигнутом.
Меня зовут Кирилл Попов. Я руководитель направления Android-разработки в ОК. В этой статье я расскажу, какие возможности получил инструмент за последний год, и что мы планируем реализовывать в перспективе.
Статья: https://habr.com/ru/companies/odnoklassniki/articles/861044/
Платформа: разработка
Tracer — модульный инструмент для аналитики ошибок в мобильных приложениях от OK.Tech, который мы представили год назад. За это время в Tracer зарегистрировалось более 1500 организаций и 5000 пользователей. Сейчас решение обрабатывает более 1 млрд событий в день и обслуживает приложения, которые имеют суммарный DAU в 20 млн пользователей. Опыт наших клиентов показывает, что Tracer успешно справляется с поставленными задачами, но мы всё равно не останавливаемся на достигнутом.
Меня зовут Кирилл Попов. Я руководитель направления Android-разработки в ОК. В этой статье я расскажу, какие возможности получил инструмент за последний год, и что мы планируем реализовывать в перспективе.
Статья: https://habr.com/ru/companies/odnoklassniki/articles/861044/
Платформа: разработка
❤3
Легаси шмегаси
В большинстве компаний полно legacy систем. Некомпетентные программисты создают их и оставляют беспорядок следующему человеку. У нового счастливчика не хватает моральных принципов, чтобы исправить беспорядок, поэтому он переписывает все заново, и цикл повторяется.
Вы можете разорвать этот цикл; вы можете позаботиться о том, чтобы не создавать унаследованные системы и делегировать те, которые вы нашли. Благодаря этому вы станете лучшим инженером, а рынок признает вас как человека, который решает проблемы, а не создает их. Ваша репутация вырастет, и вы будете достойно вознаграждены.
Статья: https://apptractor.ru/info/articles/legasi-shmegasi.html
Платформа: разработка
В большинстве компаний полно legacy систем. Некомпетентные программисты создают их и оставляют беспорядок следующему человеку. У нового счастливчика не хватает моральных принципов, чтобы исправить беспорядок, поэтому он переписывает все заново, и цикл повторяется.
Вы можете разорвать этот цикл; вы можете позаботиться о том, чтобы не создавать унаследованные системы и делегировать те, которые вы нашли. Благодаря этому вы станете лучшим инженером, а рынок признает вас как человека, который решает проблемы, а не создает их. Ваша репутация вырастет, и вы будете достойно вознаграждены.
Статья: https://apptractor.ru/info/articles/legasi-shmegasi.html
Платформа: разработка
👍2