Telegram Web Link
Карантин UI-тестов в iOS

Сегодня я расскажу о нестабильных UI-тестах в iOS, и как мы с ними справляемся.

Мы уделяем массу внимания UI-тестам, ведь именно они обеспечивают качество и стабильность в наших iOS-приложениях. Сейчас у нас включено около 600 UI-тестов: они гоняются утром, вечером и на каждом PR в develop. О том, как мы обеспечиваем качество мобильной разработки есть отдельная статья.

Рано или поздно большое количество UI-тестов скорее всего начнут тормозить разработку, потому что их стабильность зависит от множества факторов: стенды (API), инфраструктура (обновление Xcode, машин, СI), кодовая база. Даже из‑за проблем в самом XCUITest тесты могут начать выдавать аномалии.

https://habr.com/ru/companies/hh/articles/807351/

#ios

👉 @developer_mobila
Как мы отслеживаем просадки FPS в Альфа-Мобайл?

Всем привет ? я Максим Кузнецов a.k.a. Android-developer из Альфа-Мобайл. В этой статье хочу поделиться нашим опытом внедрения механизмов мониторинга производительности в продукты компании. Почему это важно? Потому что производительность напрямую влияет на опыт пользователей, рейтинги приложений и конверсии. Мы рассмотрим статистику, проблемы, наш горький опыт и планы на будущее. Давайте начнем! ?

https://habr.com/ru/companies/alfa/articles/812161/

#Android

👉 @developer_mobila
Путешествие к центру Композиции

В продолжение разборов внутреннего устройства Compose Runtime Дмитрий рассказывает о Композиции — ключевом механизме фреймворка, без которого Compose и вовсе был бы не Compose.

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

https://www.youtube.com/watch?v=L8mc7ZnO5zY

#Android

👉 @developer_mobila
Опыт публикации Андроид приложения в Google Play независимым разработчиком в 2024 году

https://habr.com/ru/articles/814025/

#Android

👉 @developer_mobila
Сергей Балалаев — SwiftUI-навигация: просто, нативно и декларативно

Стартуя проект на SwiftUI 2.0 в конце 2021 года, Сергей с командой избрали тактику минимального использования UIKit, в том числе в вопросах навигации. Кроме того, они не стали создавать собственный NavigationView, а использовали тот механизм, который предоставил Apple – немного обернув его в решение, схожее с концепцией отображения модальных окон.

Изначально навигация была простой: TabBarView+NavigationView, поддержка с iOS 14, и все были счастливы. Затем дизайнеры и бизнес начали усложнять пути переходов экранов, создавая целые графы межэкранных прыжков, и команда столкнулась с техническими препятствиями и багами SwiftUI. Но они не свернули на UIKit, как это сделали те, кто вкусил SwiftUI до поддержки с iOS 16. Есть единицы, которые пошли по пути команды, и у них есть неплохие идеи. Однако их реализацию предстоит «доводить до ума».

Спикер поделился наработками команды, чтобы можно было безбоязненно идти в мир SwiftUI 2.0 с backports. Конечно же, есть готовые фреймворки, но они усложняют разработку и сводят на нет красоту декларативного подхода SwiftUI.

https://www.youtube.com/watch?v=suqghgwucrs

#ios

👉 @developer_mobila
Никита Краснов — Удивительный мир внутри .ipa

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

Мы узнали, как можно сравнить два приложения на схожесть, используя Hopper + BinDiff, и как сделать эти бинари отличающимися. Спикер объяснил, почему Apple знает, как зовут вашего юзера на компьютере, когда вы собираете приложение. Также пофантазировал на тему того, как Apple использует статический и динамический анализ .ipa во время ревью приложений для стора.

Доклад будет интересен разработчикам, которые создают White Label-приложения, а также всем, кто хорошо знает Swift, но при этом не знает, как приложение собирается и во что превращается на выходе.

Идея доклада родилась из необходимости публикации похожих приложений под разными названиями, а также из того, что Apple такие приложения не пропускает, ссылаясь на схожесть.

https://www.youtube.com/watch?v=C1PqxajPrks

#ios

👉 @developer_mobila
Пишем plugin для Jetbrains IDE: отображение файлов вне проекта в Project Tool

Доброго времени суток, дорогой читатель. Меня зовут Михаил, я Android-разработчик в компании Циан. Этой статьёй я открываю для себя цикл статей по внутренней кухне разработки плагинов для Jetbrains IDE: IDEA, Android Studio (AS) и пр. На дворе 2024 год, официальная документация не так богата информацией, как хотелось бы. Но есть исходники, которые смело можно дербанить. В этом цикле статей я буду описывать свой опыт поиска нужной мне информации и её разбор.

В статье мы разберёмся с тем, как отобразить каталог не из проекта в project tool.

https://habr.com/ru/companies/cian/articles/816149/

#Android

👉 @developer_mobila
Combine essentials in Swift - a quick guide

Apple's Combine framework provides a native way to write functional reactive code in our iOS applications. In this article, we'll go through basic Combine concepts and terms.

Let's directly jump in.

https://tanaschita.com/combine-essentials/

#ios

👉 @developer_mobila
Глубокие ссылки для локальных уведомлений в SwiftUI

Уведомления имеют решающее значение для удержания пользователей в приложении. Почти все мои приложения содержат уведомления, которые не только запускают приложение, но и ведут к различным частям приложения. Сегодня я хочу поделиться тем, как я создаю глубокие ссылки для локальных уведомлений в своих приложениях.

https://swiftwithmajid.com/2024/04/09/deep-linking-for-local-notifications-in-swiftui/

#ios

👉 @developer_mobila
Взлом и защита Android-приложений

Рассматриваем способы взлома и защиты. Пытаемся сначала атаковать приложение, а затем тут же защищаемся. А потом атакуем новую защиту, и так по кругу.

Сперва говорим о банальных вещах – таких, как просмотр данных приложения через снифферы трафика или просмотр байт-кода. Далее о более сложном: говорим об изменении поведения приложения через Frida и защите от этого с помощью C++. И в конце пытаемся взломать С++.

https://www.youtube.com/watch?v=jxRvLjAgE-A

#Android

👉 @developer_mobila
Пишем свой генератор ID для мобильных приложений

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Performance приложения Wildberries.

Однажды, работая с кодом, я обратил внимание на использование UUID в UI и задумался о его влиянии на производительность. Тесты показали, что собственное решение может быть значительно быстрее стандартной реализации UUID в Java.

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

https://habr.com/ru/companies/wildberries/articles/844104/


#Android

👉 @developer_mobila
Как сделать мобильные приложения, которые приносят $3,000 в день

Четыре года назад я решил запустить стартап и начал создавать собственные мобильные приложения. 20 сентября прошлого года они начали приносить более 3,000 долларов в день (90% из них — на iOS). На следующий же день Apple удалила все мои приложения из App Store и заблокировала мой аккаунт.

Я отправлял апелляции, предъявлял доказательства, скриншоты и даже отправил досудебную претензию, но меня в основном игнорировали. Сейчас я подал иск против Apple, и на данный момент рынок iOS для меня закрыт.

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

https://www.reddit.com/r/iOSProgramming/comments/1d2ofpf/how_to_create_mobile_apps_that_make_3000_a_day/

#ios

👉 @developer_mobila
Обновления в адаптивных макетах Compose с I/O

В этом году на Google I/O было сделано множество интересных анонсов, причем не только в области искусственного интеллекта (хотя и это, безусловно, было важным моментом). Для меня ключевым моментом стало внимание к усовершенствованиям в Jetpack Compose для создания адаптивных макетов. Поскольку Android выходит за рамки смартфонов, переходя на планшеты, раскладушки и большие экраны, создание приложений, адаптирующихся к различным форм-факторам, становится как никогда актуальным.

https://proandroiddev.com/adaptive-compose-layouts-86b7f1e51338

#Android

👉 @developer_mobila
Sword — инъекция зависимостей во время компиляции

Это библиотека для инъекции зависимостей во время компиляции для Swift, вдохновленная Dagger.

Когда вы объявляете зависимости и указываете, как их удовлетворить, используя Swift Macros, Sword автоматически генерирует код инъекции зависимостей во время компиляции. Sword просматривает ваш код и проверяет графы зависимостей, гарантируя, что все зависимости объекта могут быть удовлетворены, что исключает ошибки в рантайме.

https://github.com/rockname/sword


#ios

👉 @developer_mobila
Погружение в мир Lint'a в Android-проекте

Статические анализаторы уже давно являются неотъемлемой частью разработки проектов не только на Android. Они позволяют выявлять ошибки, несоответствия стандартам code style, производительности или безопасности, обозначать какие-то узкие места, сокращать code review и т. д. Android Studio (далее просто студия) «из коробки» содержит огромное количество всевозможных проверок, но, как правило, этого недостаточно, всегда есть какие-то неучтённые проблемы, внутренние правила компании или команды разработки. Кратко расскажем про Lint, как начинали делать свои правила, с какими задачами сталкивались на первых этапах и как решали. Это поможет вам впервые погрузиться в тему, так как интернет весьма скуден на статьи по ней.

https://habr.com/ru/companies/domclick/articles/818067/


#Android

👉 @developer_mobila
2025/07/07 11:40:54
Back to Top
HTML Embed Code: