Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck
9.75K subscribers
1.52K photos
72 videos
52 files
4.3K links
Все самое полезное для мобильного разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a4adec1b17b35b6c0d8389
Download Telegram
Swift 6: готовьте ваши Xcode проекты

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

Чего ожидать от Swift 6?

Все релизы Swift 5.x готовятся к выпуску Swift 6 и достижению целей, поставленных на пути к Swift 6. Первоначальный выпуск поддержки конкурентности улучшен за счет proposals. Вы можете ожидать аналогичных улучшений для выпуска Swift 5.8 existentials и opaque types, который последовал за манифестом, а также для новой поддержки макросов в Swift 5.9.

Готовьтесь заранее

Не нужно ждать появления Swift 6, чтобы наброситься в авралах на нововведения, а поэтапно адаптируйтесь к новым функциям. Наиболее яркими примерами являются выпуск async/await, existential и макросы. Несмотря на то, что миграция не требуется, можно начать использовать новые языковые возможности, чтобы подготовить свой проект к будущему.

Подробнее

#обновление
🥰8👍3🌚2
👈 🧠 👉 Расширенное управление памятью с помощью Unsafe Swift

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

В статье рассматриваются расширенные возможности Swift по управлению памятью посредством использования его «небезопасных» конструкций, таких как UnsafeMutablePointer и UnsafeRawPointer.

Роль Unsafe Swift

Управление памятью в Swift в первую очередь обеспечивается автоматическим подсчетом ссылок и строгой системой типов, которые помогают предотвратить распространенные ошибки, связанные с памятью, такие как утечки и разыменования нулевых указателей. Однако бывают случаи, когда необходимы прямые низкоуровневые манипуляции с памятью, часто при взаимодействии с API C, оптимизации критически важного для производительности кода или реализации пользовательских структур данных.

Меры предосторожности и предостережения

Хотя использование небезопасных конструкций Swift, таких как UnsafeMutablePointer и UnsafeRawPointer, может быть эффективным, важно проявлять осторожность из-за повышенной ответственности, которую они возлагают на разработчика. Обходя встроенные функции безопасности памяти Swift, вы попадаете на территорию, где ошибки могут привести к сбоям, повреждению памяти или уязвимостям безопасности.

Соединение Swift и C

Когда дело доходит до взаимодействия с библиотеками C из Swift, решающее значение имеет фундаментальное понимание структуры памяти и структур данных. UnsafeMutablePointer и UnsafeRawPointer в Swift предлагают способы устранить разрыв между высокоуровневым управлением памятью в Swift и низкоуровневым манипулированием памятью в C.

Управление указателями для вызовов функций C

Передача данных между функциями Swift и C часто включает преобразование структур данных Swift в форматы, совместимые с C, что часто требует работы с указателями. UnsafeMutablePointer в Swift — мощный инструмент для этой цели, но правильное владение памятью и управление временем жизни имеют решающее значение для предотвращения сбоев и утечек памяти.

Подробнее

#обучалка
6👍4
🎉🎉 Можете юзать Android 14. Кодовое имя в этот раз: Upside Down Cake. В релизе более 60 обновленных фич, среди них: интернационализация, переработанный UI/UX и графика, кастомные экшены, обновления в OpenJDK 17и масса другого.

И еще немного новостей в формате видео:

Predictive Back Gesture
Ограничение на установку старых приложений
Нелинейное масштабирование размера текста
Foreground Service
BroadcastReciever
Data Safety в системе
Унификация работы Foreground Service

#новости
6🎉2🥰1👏1
Предлагаем рассмотреть возможности Android Studio, позволяющие быстрее ориентироваться в коде: находить нужные фрагменты и выявлять связи между ними.

Что тут как

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

Хлебные крошки для блоков кода

Как воспользоваться: кликнуть ПКМ на любой номер строки -> Breadcrumbs -> Top/Bottom.
После активации Breadcrumbs появляется динамическое отображение «хлебных крошек» блока кода в фокусе.
Удобно использовать, если в одном файле несколько классов: сразу видно, в каком классе расположен блок кода.

Открыть текущий файл в древе

Первый вариант: чтобы Android Studio развернула древо до открытого в редакторе файла, нужно нажать кнопку Select Opened File.
Второй вариант: Ctrl (Windows) / Command (macOS) + кликнуть ЛКМ на название пакета. Студия развернёт выбранную папку.

Умный поиск

Как воспользоваться:
Дважды нажать кнопку Shift.
В появившемся окне можно написать:
название файла/класса/функции/переменной;
id View/ресурса;
название функции Android Studio;
название функции VCS (например, Compared with Branch).

Подробнее

#туториал
🥰2118🤩11🔥10👏10
В ролике пойдет речь о Swift, а конкретно — о простой реализации архитектурного паттерна MVVM на примере табличного приложения с запросами, парсингом данных и отображением их на экране.

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

Смотреть

#туториал
5👍3🥰2
Нашли для вас видос о судьбе программиста, живущего в Новой Зеландии — 1С-разработчик, который красил заборы, доил коров, а потом стал мобильным разработчиком 😂😂😉

Он приехал на 1 год для учебы в IT, получил рабочую визу, нашел работу и подал на резидентство. Через 5 лет можно получить гражданство и ехать в Австралию — цель гостя ролика.

Смотреть
👍7👏42
На митапе от Ozon Tech подробно обсудили дизайн-систему — продукт, который структурирует набор компонентов и гайдлайнов. Это позволяет дизайнерам и разработчикам создавать последовательный и согласованный визуальный язык для продуктов и услуг компании.

Программа встречи:

🔹 «Декларативная дизайн-система: Figma + SwiftUI/Jetpack Compose». Рассказ об особенностях дизайн-системы, разрабатываемой с помощью декларативных технологий – SwiftUI и Jetpack Compose. Общую структуру компонентов дизайн-системы, как компоненты в Figma соотносятся с кодом.
🔹 «Snapshot-тесты и как они помогают тестировать дизайн-систему». Внедрение snapshot-тестов, тестирование дизайн-системы и как решаются возникающие проблемы.
🔹 «Дизайн-система с BDUI, как готовить». Какие ограничения BDUI добавляет на дизайн-систему и особенности такой дизайн-системы. Какие ошибки совершаются и советы, как готовить с BDUI и без.

#мероприятие
5🔥3👏3
😎 Очередной #дайджест по мобильной разработке

✍️ 10 советов по повышению качества вашего iOS-кода — шаблоны расширения для группировки фрагментов кода, создавать переменные и функции с описательными именами и прочие.

✍️ Что происходит, когда вы запускаете программу — как работает процессор, как несколько процессов работают одновременно, зачем нужен libc, как идет взаимодействие с памятью

✍️ Рефакторинг многомодульного проекта с Konsist — как использовать Konsist в реальном проекте

✍️ Продвинутые трюки lldb для Swift — хороший разбор возможностей, вспомогательных методов и их сочетания с брейкпоинтами

✍️ Потокобезопасность swift через - lock — блокировка доступа к переменной во время чтения или записи для гарантированного эксклюзивного доступа
🥰84👏4🔥3😁3
Совместимость версий Gradle и Java: Руководство для начинающих

Независимо от того, как долго вы работаете с Android, вы всегда сталкиваетесь со странными ошибками. Чем больше времени вы потратите, тем больше нестандартных ситуаций и новых вещей вы узнаете.

Вот так и у автора случилось. Все работало, но потом, внезапно сломалось.
Что-то пошло не так с Java и студия начала ругаться.
Как он вышел из ситуации, читайте далее.

#туториал
👍73
🧑‍🎓✍️ Объяснение, понимание и использование размеров SwiftUI

В Swift UI чрезвычайно важная концепция размеров стала несколько загадочной. Установка размеров или их получение не так интуитивно понятны, как можно было бы ожидать.
Эта статья должна сделать более понятным, что творится с размерами в SwiftUI с точки зрения компоновки, помогая вам понять и освоить значения и способы их использования. А еще, это даст более глубокое понимание механизма компоновки SwiftUI, создав копии модификаторов frame и FixedSize view, которые соответствуют протоколу компоновки.

А в этой статье вы больше углубитесь в понимание механизма компоновки SwiftUI, имитируя модификаторы вида frame и FixedSize, и познакомитесь на нескольких примерах с нюансами, о которых следует помнить при верстке.

#гайд
👍63🔥2
😱💰 Unity вводит новую систему оплаты для разработчиков

C 1 января 2024 года будет введена схема ценообразования принципу «плати за загрузки».

🔹 Плата за Unity Runtime будет взиматься каждый раз, когда игра, отвечающая требованиям, загружается конечным пользователем.
🔹 Для Tier-1 рынков это 20 центов за каждую установку.
🔹 Чтобы попасть под такое налогообложение игра должна достичь пороговых значений - для Unity Personal и Unity Plus это $200,000 дохода и 200,000 установок за все время. После этого за каждые 100,000 загрузок нужно будет платить $20,000.
🔹 Изменения вступают в силу 1 января 2024 года и все начнет считаться только с этого момента.
🔹 Изменения ожидаемо вызвали бурления. Под действие новых тарифов могут попасть пиратские игры, демоверсии, загрузки с нескольких устройств. Кроме того, существует опасение, что злоумышленники смогут манипулировать оплатой, постоянно снова скачивая игры в знак протеста или недовольства.
🔹 Правда, Unity планирует внедрит средства обнаружения мошенничества и позволит разработчикам сообщать о возможных случаях злоупотреблений.
🔹 Отказаться от новой оплаты для уже вышедших или находящихся в стадии релиза игр уже фактически никто не может, так как менять движок (вероятно) будет дороже, чем платить Unity.

И что: все, что в продукте не ваше - всегда находится под угрозой. Сторонний API, движок в один прекрасный момент могут испариться.

#новость
👏6🔥4
Когда использовать Swift Concurrency

🔹 Асинхронные операции. Конкурентность упрощает написание кода для таких операций, как сетевые запросы, файловый ввод-вывод или запросы к БД и управление им.
🔹 Адаптивные пользовательские интерфейсы. Используйте при разработке UI, чтобы он оставался адаптивным при выполнении фоновых задач. Например, извлечение данных из Интернета должно выполняться асинхронно, чтобы избежать блокировки основного потока.
🔹 Параллельная обработка. Если у вас есть задачи, требующие больших вычислительных затрат, которые можно распараллелить, рассмотрите возможность использования конкурентности для распределения рабочей нагрузки между несколькими задачами или потоками, используя преимущества многоядерных процессоров.
🔹 Предотвращение дэдлоков. Конкурентность может помочь избежать дэдлоков, когда нескольким задачам требуется одновременный доступ к общим ресурсам, используя структурированную конкурентность и акторы.

Подробнее

#туториал
8
🤖📄 ChatGPT: эффективная суммаризация с помощью LLM

В этой статье разберём суммаризацию с помощью LLM на примере обработки отзывов в e-commerce.

Читать
👍54🔥2
😎 Очередной #дайджест по мобильной разработке

✍️ SDK Upgrade Assistant — утилита, которая помогает быстро обновить targetSdkVersion в проекте

✍️ Apple’s CDN — теперь все решается через кэширование файл AASA

✍️ SKIE — инструмент для разработчика или команды, вызывающей код Kotlin из Swift.

✍️ Полиморфизм и Kotlinx.Serialization — инструменты для обработки наиболее распространенных форм полиморфных данных

✍️ Создание Media-Rich Android приложений на MediaCodec и Vendor Extensions — как использоваться класс MediaCodec, чтобы разблокировать дополнительные возможности на устройствах Android
🔥62🥰2
🌊🌊 Как FlowMVI изменил судьбу нашего проекта

Автор, он же техлид, поделился опытом работы с MVVM и какие ошибки всплыли у него и его команды в процессе.

Вот некоторые из них:

Передача нескольких параметров в @Composable
Передача лямбд в @Composable, которые фиксировали нестабильные параметры
Наблюдение за состоянием в non-lifecycle-aware
Stateful события
Дампинг всего во ViewModel и еще много чего неприятного

Решилось все с помощью FlowMVI 2.0, а как именно — читайте далее

#обучалка
👍73
🎓💼 ТОП-9 не самых очевидных компаний для стажировки в ИТ

Везде просят опыт работы... Но где его взять? Как раз об этом сейчас и расскажем!

Читать
7👍1
⚡️📈📊 Топ быстрорастущих приложений в России в сентябре

1. Приложения для учебы — ClassDojo и Dnevnik как средства управления учащимися, Brain Out Test & Math Games и Busuu как обучающие приложения.

2. Night Sky.

3. Goodnotes 6 — лучшее приложение для iPad 2022, цифровой блокнот с большим набором дополнительных функций. По данным AppMagic, приложение на iOS заработало в России $68K.

4. Из других занятных приложений в топе быстрорастущих — Falla-Make new friends, китайское приложений для голосовых чатов, совместных игр, знакомств.

#новость
👍43
🤔 PWA vs Native — как выбрать

Что такое PWA

Progressive Web Apps (PWA) или прогрессивные веб-приложения — это не какой-то фреймворк или SDK. Это философия того, как надо строить современные веб-приложения. Говоря по-простому, это режим отображения веб-сайта, который можно запускать в виде приложения на смартфоне. Поэтому PWA могут работать на любом устройстве, будь то компьютер, планшет или смартфон.

Преимущества прогрессивных приложений (PWA)

Кросс-платформенность
Более быстрое развертывание
Производительность приложения
Пуш-уведомления
Независимость от сторов

Минусы PWA

Один из главных недостатков PWA заключается в том, что они могут быть медленнее, чем обычные веб-сайты. Это происходит из-за того, что PWA должны загружать все ресурсы, необходимые для работы приложения, включая шрифты, изображения и JavaScript-файлы.
Некоторые устройства могут не поддерживать определенные функции PWA, такие как пуш-уведомления или офлайн-режим. Также некоторые браузеры могут не поддерживать возможности PWA.
PWA приложения обеспечивают безопасность за счет использования HTTPS-протокола, манифеста веб-приложения и Service Worker`ов.

Преимущества нативных приложений перед PWA

Максимальная производительность и функциональность
Полный доступ к функциям устройства
Лучший пользовательский опыт
Доступ к магазинам приложений
Безопасность в приложение

Минусы нативных приложений в сравнении с PWA

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

Что выбрать?

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

#гайд
9👍3👾2🥰1🥱1
😱🤯😳 Как я стал инженером с зп 800к$

В 2021 году, в последний полный год, который автор проработал в Meta, он заработал более 800 000 долларов. Он рассказывает о своей компенсации и о том, как она менялась каждый год.

Он присоединился к Facebook в 2017 году с общим вознаграждением в размере 400 тысяч долларов, и за следующие 4,5 года его вознаграждение более чем удвоилось.

Вот его общая годовая компенсация за 4,5 года работы в Meta:

2017: $390,000
2018: $370,000
2019: $504,000
2020: $703,000
2021: $823,000 🙀

Но его путешествие не было прямым путем к подсчету 100-долларовых купюр. В течение первых 6 месяцев после того, как он присоединился к Facebook, он был измотан тревогой. Будучи старшим инженером, автор испытывал синдром самозванца, трудности в адаптации к культуре и инструментам компании, и в течение первых нескольких месяцев он столкнулся с реорганизацией. Далее его история успешного успеха.

#холивар
👍103🔥2