<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/mobilesimbirsoft/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя mobilesimbirsoft]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Thu, 23 Apr 2026 13:05:52 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Спасти проект: с какими трудностями мы столкнулись при разработке и поддержке мобильной кроссплатформы]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/875524/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/875524/?utm_campaign=875524&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a3a/3f6/f54/a3a3f6f54b4315acdfae31eea91d2fb5.png" /><p>Современный рынок мобильных приложений достиг огромных масштабов в связи с общедоступностью смартфонов. Большая часть жизни современного человека проходит с гаджетом в руках. В результате почти каждая компания желает иметь собственное мобильное приложение для удобства клиентов, повышения конкурентоспособности и увеличения прибыли бизнеса.</p><p>Для получения наибольшего охвата аудитории необходимо покрыть максимальное количество мобильных платформ, главными столпами которых являются две противоположные и конкурирующие операционные системы — Android и iOS.</p><p>Встает классический вопрос: какое разрабатывать приложение — нативное, под каждую ОС или единую кроссплатформу?</p><p>Привет, я Android-разработчик IT-компании SimbirSoft Владислав. В этой статье расскажу, с какими трудностями мы столкнулись на одном из проектов кроссплатформенной разработки Kotlin Multiplatform (KMP), как команда SimbirSoft с ними справилась и почему кроссплатформа не всегда лучший выбор. Данная статья будет полезна как для разработчиков, так и для предпринимателей, которые решили создать мобильное приложение для своего бизнеса и думают над выбором технологии.&nbsp;</p> <a href="https://habr.com/ru/articles/875524/?utm_campaign=875524&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее ▶️</a>]]></description>
      
      <pubDate>Wed, 22 Jan 2025 10:59:05 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[ios]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[кроссплатформенная разработка]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[kotlin multiplatform]]></category><category><![CDATA[kotlin multiplatform mobile]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/827824/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/827824/?utm_campaign=827824&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/5e7/bbf/c1b/5e7bbfc1b3ae5b5c07c08cd2935743af.png" /><p>Современные мобильные приложения с&nbsp;пользовательским контентом играют огромную роль в&nbsp;нашей повседневной жизни. Сейчас почти не&nbsp;встретишь людей, особенно подростков, кто не&nbsp;пользовался&nbsp;бы такими сервисами, как&nbsp;TikTok, YouTube, ВКонтакте и соцсетью с&nbsp;картинками. На&nbsp;волне хайпа вертикальных коротких многие платформы и соцсети разработали собственные аналоги TikTok и YouTube, где стал популярен такой формат.</p><p>Поскольку просмотр видео является основной функцией подобных приложений, следует учитывать, чтобы именно эта часть&nbsp;была более надежной. Рассмотрим поближе формат вертикальных коротких видеороликов. Здесь важно, чтобы процесс перехода между другими видео и их загрузкой занимал минимальное количество времени, и пользователь меньше отвлекался в&nbsp;процессе просмотра контента. И, таким образом, пользователь наверняка проведет больше времени в&nbsp;приложении, что&nbsp;в&nbsp;свою очередь позволит показать ему больше контента или&nbsp;рекламы, вместо ожидания загрузки.</p><p>Меня зовут Рустам и я Android‑разработчик в&nbsp;компании SimbirSoft. Рекомендую свою статью тем, кто сталкивается с&nbsp;видеоконтентом на&nbsp;проектах, и кому хотелось&nbsp;бы оптимизировать свою работу с&nbsp;ним. Я рассказал о&nbsp;таких методах на&nbsp;примере стандартных инструментов из&nbsp;библиотеки ExoPlayer, поэтому у&nbsp;middle‑разработчиков и выше не&nbsp;должно возникнуть трудностей.</p> <a href="https://habr.com/ru/articles/827824/?utm_campaign=827824&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jul 2024 08:38:20 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Дизайн мобильных приложений]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[android development]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[exoplayer]]></category><category><![CDATA[кэширование]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Быстрый старт, или Как ускорить запуск iOS-приложений]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/801251/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/801251/?utm_campaign=801251&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cca/807/635/cca8076357eb7bb0369c785189b4f48b.png" /><p>Всем привет! Меня зовут Фируза, я iOS-разработчик в компании SimbirSoft. В этой статье мы попробуем разобраться, как ускорить запуск приложения, а именно:</p><p><strong>•</strong>  что происходит от момента нажатия на иконку приложения до представления возможности пользователю взаимодействовать с UI;</p><p><strong>•</strong>  как собрать актуальные метрики скорости запуска и отзывчивости приложения;&nbsp;</p><p><strong>•</strong>  какие тактики применить, чтобы ускорить старт и отзывчивость запуска.</p><p>Статья будет полезна для iOS-разработчиков любого уровня, желающих улучшить производительность своих приложений.</p> <a href="https://habr.com/ru/articles/801251/?utm_campaign=801251&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Ускориться ?</a>]]></description>
      
      <pubDate>Tue, 19 Mar 2024 09:36:13 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Xcode]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios development]]></category><category><![CDATA[swift]]></category><category><![CDATA[xcode]]></category><category><![CDATA[аналитика мобильных приложений]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[производительность]]></category><category><![CDATA[оптимизации]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Step by step: интегрируем интерактивные 2D/3D-объекты в iOS-приложение]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/790294/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/790294/?utm_campaign=790294&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4df/e53/48c/4dfe5348c102e061825d5bce2cf801ac.png" /><p>Привет, Хабр! Меня зовут Степан, я iOS-разработчик SimbirSoft.</p><p>В очередной раз открыв одно из ежедневных приложений, я обнаружил любопытную фичу: интерактивный 3D-элемент в виде звездочки. Казалось бы, ничего необычного, но это сделало взаимодействие с приложением немного приятнее. Так появилась идея для пет-проекта — нативно создать MVP интерактивного 3D-объекта.</p><p>Данная статья — step by step от интерактивных 2D-объектов к 3D. В конце статьи вы найдете ссылку на репозиторий.</p> <a href="https://habr.com/ru/articles/790294/?utm_campaign=790294&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 31 Jan 2024 10:14:56 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios]]></category><category><![CDATA[ios development]]></category><category><![CDATA[интерактивный дизайн]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Полезные iOS-инструменты для дебаггинга]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/747462/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/747462/?utm_campaign=747462&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f3e/33a/45c/f3e33a45cfee064ab8432fb92cf33864.png" /><p>Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.</p> <a href="https://habr.com/ru/articles/747462/?utm_campaign=747462&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 13 Jul 2023 10:54:23 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Отладка]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios development]]></category><category><![CDATA[swift]]></category><category><![CDATA[ios]]></category><category><![CDATA[отладка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Интеграция рекламы в Android-приложение: Yandex Mobile Ads Vs. Google AdMob]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/737158/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/737158/?utm_campaign=737158&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f36/fc2/52a/f36fc252a09ab6e3143d2c715b68b474.png" /><p>Привет, Хабр! Меня зовут Александр, я Android-разработчик в IT-компании SimbirSoft. В конце 2022 года на одном из проектов мы с командой столкнулись с трудностями в работе мобильной рекламы — тогда у нас была подключена сеть AdMob от Google. Приходилось искать много обходных путей для продолжения монетизации приложения. Поэтому решили мигрировать на платформу, с которой не будет проблем из-за санкций. Коллеги-аналитики взялись изучить доступные платформы.&nbsp;</p><p>Я поделюсь результатами этой работы и совместными выводами. Но главным образом разберу процесс интеграции Google AdMob и Yandex SDK, их плюсы и минусы, шаги интеграции, и расскажу, почему мы выбрали Yandex SDK.&nbsp;</p><p>Сегодня использовать зарубежные решения не столько сложно, сколько бессмысленно, если пользователи находятся в России. Многие провайдеры уходят из страны и отказываются выплачивать доход от рекламы, бизнес теряет деньги. Статья будет полезна Android-разработчикам, которые столкнулись с выбором SDK.</p> <a href="https://habr.com/ru/articles/737158/?utm_campaign=737158&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 24 May 2023 07:31:49 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category>
      <category><![CDATA[yandex sdk]]></category><category><![CDATA[реклама в приложениях]]></category><category><![CDATA[mobile ads]]></category><category><![CDATA[admob]]></category><category><![CDATA[android]]></category><category><![CDATA[kotlin]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Combine: часть 2. Вершина айсберга]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/731918/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/731918/?utm_campaign=731918&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/1cc/46b/d5f/1cc46bd5ffc26c43b739a1cc90c39dbb.png" /><p>Привет, Хабр! На связи Сергей, iOS-разработчик в компании SimbirSoft.</p><p>В <a href="https://habr.com/ru/company/simbirsoft/blog/712332/"><u>прошлой статье</u></a>&nbsp;мы познакомились с концепцией реактивного программирования с использованием фреймворка Combine и сравнили его с RxSwift. В этой части мы более подробно разберем виды основных компонентов Combine, а также их отличия и способы применения.</p><p>Интеграция Combine&nbsp;в проект будет полезна для обеих сторон — бизнеса и команды разработки:</p><p>1. Процесс работы становится быстрее, а значит дешевле.</p><p>2. Фреймворк считается достаточно модным. Есть большое количество разработчиков, которым нравится использовать реактивный подход, и которые хотят поработать с новым инструментом — повышается интерес соискателей к вакансиям, в которых фигурирует эта технология.</p><p>3. Combine способствует легкой поддержке и удобном переходе на современные технологии в будущем (например, на SwiftUI).</p> <a href="https://habr.com/ru/articles/731918/?utm_campaign=731918&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 27 Apr 2023 07:39:50 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[combine]]></category><category><![CDATA[swift]]></category><category><![CDATA[ios]]></category><category><![CDATA[mobile]]></category><category><![CDATA[reactive]]></category><category><![CDATA[mobile development]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как настроить автомиграцию в Room]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/728492/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/728492/?utm_campaign=728492&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/003/55e/72f/00355e72f7efacdbe14e54b572a49a90.jpg" /><p>Привет, Хабр! Меня зовут Роман, я Android-разработчик в IT-компании SimbirSoft. В этой статье я расскажу про автомиграцию в Room (версия не ниже Room 2.4.0), варианты ее использования, преимущества, которые она дает, и проблемы, с которыми мы можем столкнуться.</p><p>Автомиграция поможет упростить процесс работы с базой данных, особенно если она большая, и в нее часто вносятся изменения. Она позволит не писать самостоятельно сложные SQL-запросы, а сгенерирует их автоматически в специально отведенной директории. Это позволит избежать опечаток при миграции и сэкономить время (если у нас запросы с огромным количеством полей).</p><p>Дисклеймер: в этой статье я буду ориентироваться на то, что мы уже умеем работать с Room и знаем, для чего нужна миграция. Материал будет полезен Android-разработчикам уровня Middle.</p> <a href="https://habr.com/ru/articles/728492/?utm_campaign=728492&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 12 Apr 2023 12:48:39 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category>
      <category><![CDATA[room]]></category><category><![CDATA[migration]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[базы данных]]></category><category><![CDATA[миграции бд]]></category><category><![CDATA[автомиграция]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как не потерять голову (и память) при поиске утечек в iOS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/723954/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/723954/?utm_campaign=723954&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/313/f1c/149/313f1c149304e3888c012ef9a8290f4f.png" /><p>Всем привет! Меня зовут Фируза, я занимаюсь iOS-разработкой в компании SimbirSoft. Хочу поделиться результатами исследования утечек памяти, с которыми я столкнулась на одном из проектов.</p><p>Все началось с того, что я заметила подтормаживания UI и обратила внимание на рост занимаемой памяти в процессе использования приложения. В пределах нескольких сценариев расход памяти незначительно колебался – объекты создавались и освобождались. Другие сценарии при непродолжительном использовании приводили к значительному росту памяти, используемой приложением. При активном и продолжительном использовании могут «убежать» сотни мегабайт.</p><p>Утечки памяти – это частая проблема, с ней сталкиваются многие разработчики. Поэтому предлагаю разобрать основные причины возникновения и способы обнаружения утечек.</p><p>Статья будет интересна для iOS-разработчиков любого уровня. Изучив материал, вы сможете увеличить производительность вашего приложения, а также разобраться в том, как работают инструменты Xcode.</p> <a href="https://habr.com/ru/articles/723954/?utm_campaign=723954&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 22 Mar 2023 06:52:41 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Xcode]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios development]]></category><category><![CDATA[swift]]></category><category><![CDATA[xcode]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Один плагин, чтоб править всеми. Как разработать сканер на Flutter для 3 платформ и ускорить ввод данных в 2 раза]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/719664/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/719664/?utm_campaign=719664&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b90/39a/18f/b9039a18fd488c2a9e9feb69f22c7b5d.png" /><p>Привет! Меня зовут Сергей, я Flutter‑разработчик SimbirSoft. В&nbsp;этой статье хочу поделиться интересным платформоспецифичным кейсом для&nbsp;мобильных устройств и ТСД. Нам с&nbsp;командой удалось сократить затраты на&nbsp;разработку и ускорить процесс ввода данных в 2&nbsp;раза.</p><p>Клиент располагает крупными товарными складами, на&nbsp;которых сотрудники используют сканеры 1-D/2-D кодов&nbsp;— это смартфоны на&nbsp;iOS, Android, а&nbsp;также терминалы сбора данных с&nbsp;установленным Flutter‑приложением для&nbsp;сборки заказов. Нашей задачей стало обновить плагин сканера, не&nbsp;привлекая отдельные команды для&nbsp;разных платформ.</p><p>Очевидно, что&nbsp;данная функциональность сильно полагается на&nbsp;платформу, и Flutter из&nbsp;коробки не&nbsp;умеет работать с&nbsp;ТСД. Как&nbsp;мы решили эту задачу, расскажу по&nbsp;порядку, а&nbsp;в&nbsp;конце поделюсь результатами тестов и ссылкой на&nbsp;исходный код. Спойлер: по&nbsp;сравнению с&nbsp;ручным вводом штрихкодов скорость выросла в <strong>13,4&nbsp;раза</strong>, а&nbsp;с&nbsp;предыдущей версией сканера&nbsp;— в <strong>2&nbsp;раза</strong>.</p><p>Подобный кейс применим везде, где требуется сканировать 1-D/2-D коды в&nbsp;большом количестве. Поэтому материал будет полезен разработчикам кроссплатформенных приложений для&nbsp;решения подобных задач, а&nbsp;также их заказчикам. </p> <a href="https://habr.com/ru/articles/719664/?utm_campaign=719664&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Mar 2023 10:52:25 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Flutter]]></category>
      <category><![CDATA[flutter]]></category><category><![CDATA[dart]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[android]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Combine: часть 1. Погружение в реактивное программирование]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/712332/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/712332/?utm_campaign=712332&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/44b/faf/70c/44bfaf70c28d5887a66f029c17ab4c5e.png" /><p>Привет, Хабр! Меня зовут Сергей, я iOS-разработчик в компании SimbirSoft.</p><p>Уже наступил 2023 год, а обсуждения на тему выбора инструмента для обработки асинхронных событий не утихают. На сцене привычные колбэки, нотификейшн-центры с «бородатыми» Objective-C-селекторами, разные фреймворки для реактивной разработки, а не так давно Apple представила модный Swift Concurrency.</p><p>Combine все больше набирает популярность в продакшене. За счет нативного происхождения&nbsp;у него хороший уровень оптимизации, его легко «склеивать» как с существующими легаси-инструментами, так и с новыми — SwiftUI или async/await.</p><p>Пестрый «зоопарк» заставляет задуматься: что выбрать для нового проекта, а что для приложения с многолетней историей?</p><p>Поскольку Combine является отличным претендентом для разработки современных приложений с перспективой на будущее, о нем и поговорим подробнее.</p><p>Это первая часть статьи, где мы познакомимся с Combine, сравним его с RxSwift. Материал будет полезен для тех, кто до этого не сталкивался с реактивщиной, а также тем, кто успел поработать с аналогичными инструментами.</p> <a href="https://habr.com/ru/articles/712332/?utm_campaign=712332&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 24 Jan 2023 08:34:57 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios]]></category><category><![CDATA[swift]]></category><category><![CDATA[combine]]></category><category><![CDATA[мобильная разработка]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Состояние навигации в Jetpack Compose]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/710768/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/710768/?utm_campaign=710768&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/805/c77/b41/805c77b4186e09617c635217cd2dc9a1.png" /><p>Хотя стабильная версия Jetpack Compose вышла уже достаточно давно, вопрос навигации в Compose до сих пор остается одним из самых обсуждаемых в сообществе Android-разработчиков. Именно поэтому мы решили перевести <a href="https://proandroiddev.com/the-state-of-navigation-in-jetpack-compose-cc13eb6ac3d9"><u>статью, в которой автор указывает на проблемы официального решения навигации для Compose, перечисляет плюсы и минусы популярных библиотек-альтернатив</u></a>, а также на основе своего опыта разработки рассуждает о том, какой функциональностью должен обладать хороший фреймворк навигации.&nbsp;</p><p>Данная статья будет полезна Android-разработчикам, которые встали перед выбором подходящей библиотеку навигации для проекта на Jetpack Compose.</p> <a href="https://habr.com/ru/articles/710768/?utm_campaign=710768&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 16 Jan 2023 06:53:21 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category>android</category><category>android development</category><category>jetpack compose</category><category>navigation</category><category>ui</category><category>ui toolkit</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Генерация кода API клиента приложения на основе пакета dart openapi generator]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/695528/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/695528/?utm_campaign=695528&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/d12/1bb/320/d121bb3206d28cdbf7fdbbf4bf5ec0fa.png" /><p>Привет! Меня зовут Даниил, около&nbsp;трех лет я занимаюсь mobile-разработкой. В начале работы над коммерческими проектами с использованием Flutter и языка Dart мне приходилось тратить много часов на реализации методов обращения к <strong>REST API</strong>&nbsp;бэкенда проекта. Тогда я задумался, как можно оптимизировать написание кода сервисов,&nbsp; которые работают с удалённым сервером заказчика. Это позволило мне сократить трудозатраты и время на разработку почти в 10 раз, а клиенту — быстрее&nbsp; получать готовый продукт.</p><p>В этой статье я рассмотрю целесообразность и практический опыт кодогенерации для клиентский приложений написанных на Flutter, REST API с помощью таких библиотек, как <strong><a href="https://pub.dev/packages/openapi_generator"><u>openapi_generator</u></a></strong> и <strong><a href="https://pub.dev/packages/swagger_dart_code_generator"><u>swagger_dart_code_generator</u></a></strong>.</p> <a href="https://habr.com/ru/articles/695528/?utm_campaign=695528&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 26 Oct 2022 07:43:01 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Flutter]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category>
      <category><![CDATA[кроссплатформенная разработка]]></category><category><![CDATA[rest api]]></category><category><![CDATA[openapi]]></category><category><![CDATA[кодогенерация]]></category><category><![CDATA[dart]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Диспетчеризация в Swift: погружение в теорию и практику]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/673636/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/673636/?utm_campaign=673636&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/38b/45b/97d/38b45b97d613fdc22fc3b8ab1438fed0.png" /><p>Все iOS-разработчики так или иначе сталкиваются с диспетчеризацией (Method Dispatch), но далеко не каждый понимает, как это работает. Зная, как проходит процесс диспетчеризации под капотом программы, вы можете повысить производительность своего кода.&nbsp;</p><p>В этом материале мы разберем типы диспетчеризации, их плюсы и минусы, а также затронем один из распространённых багов.&nbsp;</p><p>Материал будет полезен для всех iOS-разработчиков, которые хотят улучшить производительность своего кода. Кроме того, этот материал поможет при подготовке к собеседованию, где вопросы о Method Dispatch встречаются достаточно часто.</p> <a href="https://habr.com/ru/articles/673636/?utm_campaign=673636&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jun 2022 14:33:04 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Swift]]></category>
      <category><![CDATA[ios development]]></category><category><![CDATA[swift]]></category><category><![CDATA[method dispatch]]></category><category><![CDATA[objective-c]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Сравниваем готовые решения для реализации MVI-архитектуры на Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/661185/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/661185/?utm_campaign=661185&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/webt/0b/6x/c0/0b6xc03blpxtmove1bbfzfx_ivg.png"><br>
<br>
Когда прежние инструменты не соответствуют растущей сложности программ, появляются новые подходы в программировании, паттерны проектирования. MVI помогает там, где не справляются MVP- и MVVM-подходы. Сейчас, в том числе, этот подход активно используется и на многих крупных приложениях. В одних случаях MVI задействован только на части экранов, в других – все экраны построены на нем. В нашей команде знание MVI – одно из обязательных требований.<br>
<br>
В этой статье мы разберем решения для реализации MVI-архитектуры на Android, большинство из которых применимы в работе. Описали их преимущества и недостатки, основываясь на опыте коллег и собственной практике. Материал будет полезен для разработчиков, ещё не знакомых с паттерном MVI, и для тех, кто выбирает библиотеку для своего проекта. <br> <a href="https://habr.com/ru/articles/661185/?utm_campaign=661185&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 15 Apr 2022 14:59:23 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Программирование]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[Android development]]></category><category><![CDATA[MVI]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[Architecture]]></category><category><![CDATA[Unidirectional Data Flow]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Разбираем SceneDelegate и AppDelegate в iOS 13]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/646687/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/646687/?utm_campaign=646687&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/712/caf/1cb/712caf1cb72cd1247b6488ee61873e85.png" /><p>Продолжаем делиться своей практикой и переводами статей, которые могут быть полезны мобильному разработчику. В прошлых статьях мы разобрали&nbsp;<a href="https://habr.com/ru/company/simbirsoft/blog/592595/"><u>инструменты тестирования</u></a>&nbsp;и&nbsp;<a href="https://habr.com/ru/company/simbirsoft/blog/590203/"><u>оптимизацию внедрения зависимостей</u></a>&nbsp;в Android, а сейчас рассмотрим одно из нововведений в iOS 13 – поддержку многооконного режима и разделение AppDelegate (жизненный цикл и настройка приложения) и SceneDelegate (отображение приложения).&nbsp;  </p><p><em>От автора: </em>Ещё до Xcode 11, при создании нового проекта вы знали, что по умолчанию создаются некоторые файлы, такие как AppDelegate.swift, ViewController.swift и StoryBoard, а также некоторые другие. Но в Xcode 11 вы могли заметить, что наряду с файлами по умолчанию, указанными выше, создается новый файл – SceneDelegate.swift.</p><p>Сначала вам может быть непонятно, что это за файл, для чего он создан и как использовать SceneDelegate при разработке приложения. Но давайте попробуем понять разницу между AppDelegate и SceneDelegate.</p> <a href="https://habr.com/ru/articles/646687/?utm_campaign=646687&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 21 Jan 2022 05:19:33 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Swift]]></category>
      <category>ios 13</category><category>swift</category><category>xcode</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Инструменты разработчика для тестирования Android-приложений]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/592595/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/592595/?utm_campaign=592595&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/30e/2bd/d08/30e2bdd081856c7906cff2d451c23d0e.png" /><p>В командной разработке тесты – это, как правило, задача QA- и SDET-специалистов. Вместе с тем навыки тестирования полезны и разработчикам, позволяя им проверить свои приложения и повысить стабильность их работы. </p><p>Эта статья предназначена в первую очередь начинающим мобильным разработчикам, которые хотят изучить процессы тестирования и свое участие в них. На примере&nbsp; Android-разработки обсудим подходящие инструменты тестирования – от JUnit до Kaspresso, а также немного познакомимся с методологиями Test Driven Development (TDD) и Behaviour Driven Development (BDD). Наконец, рассмотрим их отличия на примере кейса.</p> <a href="https://habr.com/ru/articles/592595/?utm_campaign=592595&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 30 Nov 2021 14:36:35 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Тестирование IT-систем]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Тестирование веб-сервисов]]></category>
      <category><![CDATA[юнит-тесты]]></category><category><![CDATA[junit]]></category><category><![CDATA[espresso]]></category><category><![CDATA[uiautomator]]></category><category><![CDATA[kaspresso]]></category><category><![CDATA[mockk]]></category><category><![CDATA[tdd]]></category><category><![CDATA[bdd]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Многомодульность в Android и Dagger: пошаговый пример]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/590203/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/590203/?utm_campaign=590203&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4ca/568/394/4ca5683947359f67010ab0da8b219e12.png" /><p>Наше мобильное направление <a href="https://habr.com/ru/users/mobileSimbirSoft/posts/"><u>продолжает</u></a> делиться собственным опытом, а также переводить те статьи, которые могут сослужить разработчику хорошую службу. <a href="https://proandroiddev.com/android-multi-module-dagger-a-real-use-case-step-by-step-bbc03500f2f9">Эту статью</a> по Android, написанную в 2020 году, мы выбрали, изучая вопросы оптимизации внедрения зависимостей на проекте, и перевели с разрешения автора. С практической точки зрения он освещает проблемы, возникающие при использовании Dagger в многомодульном проекте, и дает рекомендации о том, как их избежать, сохранив при&nbsp; этом гибкость и поддерживаемость кода.</p><p>Если вы только начинаете погружаться в тему многомодульности и Dagger, эта статья поможет избежать ряда проблем и быстрее решить те, с которыми вы уже могли столкнуться. Разработчики с опытом тоже, вероятно, найдут для себя полезные советы или же идеи, которые подскажут новые пути для того, чтобы улучшить свои способы решения задач, связанных с зависимостями в многомодульном проекте. </p><p><strong>От автора:</strong> прежде, чем мы начнем, стоит отметить, что статья будет длинной. Вместе мы шаг за шагом найдем различные решения возникающих проблем и рассмотрим требования к продукту. Целью было поэтапно показать, как с помощью Dagger внедрять зависимости в многомодульном проекте. Для каждого шага будет дана ссылка на коммит, в котором сделаны эти изменения, кроме того, покажем некоторые фрагменты кода.</p> <a href="https://habr.com/ru/articles/590203/?utm_campaign=590203&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 26 Nov 2021 06:19:08 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category>android</category><category>dagger</category><category>мобильная разработка</category><category>android multi-module</category><category>мультимодульность</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Работа с ML Kit в Android: как распознавать штрихкоды]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/584888/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/584888/?utm_campaign=584888&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/129/ba3/c94/129ba3c945d7bb139fbfcb83a562e70f.png" /><p>Первую в мире покупку по штрихкоду относят к 26 июня 1974 года – это была упаковка жевательной резинки в одном из супермаркетов США. Считывая информацию со штрихкода, по различным оценкам, можно ускорить операции с товарами в среднем на 30%. Сейчас штрихкоды сканируют и продавцы, и работники склада, и покупатели – например, если они хотят сделать покупку на кассе самообслуживания.</p><p>В статье рассмотрим некоторые особенности распознавания штрихкодов с помощью библиотеки <a href="https://developers.google.com/ml-kit"><u>ML Kit</u></a>. Материал может быть полезен как начинающим разработчикам с базовыми навыками, так и опытным специалистам, которые хотят изучить новый инструмент.</p><p>ML Kit – это бесплатный мобильный SDK от Google, который позволяет использовать машинное обучение на устройствах с операционными системами Android, iOS и Flutter. В мобильной разработке это, пожалуй, простейший способ для добавления нейронных сетей в приложение. В свою очередь, это позволяет упростить реализацию некоторых функций.</p> <a href="https://habr.com/ru/articles/584888/?utm_campaign=584888&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 22 Oct 2021 09:49:45 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[ml kit]]></category><category><![CDATA[android]]></category><category><![CDATA[штрихкод]]></category><category><![CDATA[баркод]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Реализуем чистую архитектуру на Flutter с cubit]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/573848/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/573848/?utm_campaign=573848&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/966/ab1/dea/966ab1dead6f2130811d377e8f83a810.png" /><p>Соблюдать принципы чистой архитектуры – значит обеспечить удобство тестирования, поддержки и модернизации приложения. Понимание архитектуры и state management – это база, необходимая начинающему специалисту для успешной командной работы. В этой статье мы расскажем, как с помощью <strong>Cubit</strong> реализовать чистую архитектуру на примере стартового приложения Flutter – счетчика нажатий на кнопку.&nbsp;</p> <a href="https://habr.com/ru/articles/573848/?utm_campaign=573848&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 24 Aug 2021 06:37:14 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Dart]]></category><category><![CDATA[Flutter]]></category>
      <category><![CDATA[flutter]]></category><category><![CDATA[dart]]></category><category><![CDATA[clean architecture]]></category><category><![CDATA[Cubit]]></category><category><![CDATA[hive]]></category><category><![CDATA[чистая архитектура]]></category><category><![CDATA[архитектура мобильных приложений]]></category><category><![CDATA[разработка мобильных приложений]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Flutter: открытие виджетов ключами]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/570514/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/570514/?utm_campaign=570514&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/72c/37f/ede/72c37fedea59179ac834eedddaab8919.png" /><p>Всем привет! Мы продолжаем делиться полезными советами для мобильных разработчиков. С разрешения автора переводим свежий гайд по ключам Flutter, который может быть интересен как начинающим, так и опытным специалистам.</p><p>Ключи в Flutter обычно используют для однозначной идентификации виджетов в коллекции и для того, чтобы сохранять состояние StatefulWidgets во время их замены или перемещения в дереве виджетов. Ключи в качестве необязательных параметров в своих конструкторах принимают почти все виджеты Flutter.</p><p>А вы задумывались, когда нужно использовать ключ и что происходит “под капотом”? В этом руководстве мы найдем ответ, создав простое приложение для управления списком задач и отображения заголовков новостей. Вы узнаете:</p><p>- Какие бывают ключи и как они работают.</p><p>- Когда использовать ключ.</p><p>- Как работать с разными типами ключей</p> <a href="https://habr.com/ru/articles/570514/?utm_campaign=570514&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 31 Jul 2021 18:13:31 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Dart]]></category><category><![CDATA[Flutter]]></category>
      <category>flutter</category><category>мобильная разработка</category><category>виджет</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[То, чего нам так не хватало: Render Effect в Android 12]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/558542/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/558542/?utm_campaign=558542&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eee/b91/965/eeeb9196500cf4939b1813d2e69a0795.png" /><p>Иногда бывает нужно размыть задний план на экранах мобильного приложения, например в чате. Теперь это можно сделать всего парой строк кода. В Android 12 появился новый API <a href="https://developer.android.com/reference/android/graphics/RenderEffect"><u>Render Effect</u></a>, который позволяет накладывать визуальные эффекты на Canvas или View. Этот API радует своей простотой и высокой скоростью отрисовки. Наибольший интерес представляет Render Effect для&nbsp;размытия (BlurEffect), но в этой статье мы затронем и остальные виды эффектов. Материал может быть полезен не только андроид-разработчикам, но и дизайнерам мобильных приложений.</p> <a href="https://habr.com/ru/articles/558542/?utm_campaign=558542&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 21 May 2021 06:20:24 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Дизайн мобильных приложений]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[android 12]]></category><category><![CDATA[render effect]]></category><category><![CDATA[blur]]></category><category><![CDATA[color filter]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Фоновая работа в Android: обзор возможностей WorkManager]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/553912/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/553912/?utm_campaign=553912&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ecf/09e/efb/ecf09eefb4a413f18d0db7aac40ed8bd.png" /><p>В мобильных приложениях широко востребованы различные виды фоновой работы. Зачастую нужно поддерживать работу в офлайне, планировать какие-либо долгие и повторяющиеся задачи на определенное время, выполнять «тяжелые» задачи без привязки к сценариям пользовательского взаимодействия.</p><p>Например, в ритейле мерчендайзерам бывает необходимо в конце каждого рабочего дня отправлять фотоотчеты на сервер и удалять их из памяти телефона, чтобы не занимать место. А для работы онлайн-кассы требуется в фоновом режиме загружать актуальный справочник товаров. В этой статье мы рассмотрим один из самых популярных инструментов для реализации фоновой работы – WorkManager из Android Jetpack.&nbsp;</p> <a href="https://habr.com/ru/articles/553912/?utm_campaign=553912&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 23 Apr 2021 07:24:52 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[workmanager]]></category><category><![CDATA[фоновая работа]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как реализовать таб-бар с нестандартной кнопкой: CAShapeLayer и UIResponderChain]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/550994/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/550994/?utm_campaign=550994&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/122/9a7/796/1229a77965df81ebd4fef53d430ae256.png" /><p>Привет, Хабр! </p><p>Дизайн играет важную роль в мобильном приложении, напрямую влияя на его успех. На этапе проектирования интерфейса часто отдается предпочтение нестандартным, иногда даже интерактивным, элементам, которые будут притягивать взгляд, способствуя повышению показателя user retention (удержание пользователей).</p><p>В данной статье рассмотрим один из таких случаев: таб-бар с круглой кнопкой в центре, которая будет изменять свой цвет при нажатии с условного красного на зеленый.</p> <a href="https://habr.com/ru/articles/550994/?utm_campaign=550994&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 07 Apr 2021 05:24:26 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[iOS]]></category><category><![CDATA[Разработка мобильных приложений]]></category>
      <category><![CDATA[ios]]></category><category><![CDATA[swift]]></category><category><![CDATA[CAShapeLayer]]></category><category><![CDATA[uikit]]></category><category><![CDATA[uitabbarcontroller]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Kotlin Best Practices]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/546452/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/546452/?utm_campaign=546452&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c9a/ec9/d6b/c9aec9d6b0e83fde3efff319f72de866.png" /><p>Kotlin, созданный всего 5 лет назад, с 2019 года считается приоритетным языком программирования под Android. И все же этот язык достаточно молод и продолжает развиваться, поэтому иногда бывает непонятно, каким образом лучше написать код. У нас в команде часто бывают обсуждения на тему чистого Kotlin-кода, и на их основе мы составили свои best practices. Хотим поделиться этими рекомендациями и ждем ваших вопросов.</p><p>Ну что ж, приступим! В первую очередь, в Котлине много синтаксического сахара, и если им злоупотреблять, то читать такой код становится затруднительно. Следующие несколько пунктов можно отнести к борьбе между <strong>краткостью и читаемостью</strong>.&nbsp;</p> <a href="https://habr.com/ru/articles/546452/?utm_campaign=546452&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 11 Mar 2021 09:27:09 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Качество кода]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category>
      <category><![CDATA[android]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[clean code]]></category><category><![CDATA[refactoring]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Как найти подходящую абстракцию для работы со строками в Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/542398/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/542398/?utm_campaign=542398&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ec8/514/f15/ec8514f15cf7222326d3ed2e77ff33da.png" /><p>В своих проектах мы стараемся по мере необходимости покрывать код тестами и придерживаться принципов SOLID и чистой архитектуры. Хотим поделиться с читателями Хабра переводом статьи Hannes Dorfman – автора серии публикаций об Android-разработке. В этой статье описан способ, который помогает абстрагировать работу со строками, чтобы скрыть детали взаимодействия с разными типами строковых ресурсов и облегчить написание юнит-тестов.&nbsp;</p><p>Если вы работаете над большим Android-приложением и предполагаете, что в коде может появиться путаница в работе с ресурсами из разных источников, или если хотите упростить написание тестов в отношении строк, то эта статья может быть вам полезна. Переводим с разрешения автора. </p> <a href="https://habr.com/ru/articles/542398/?utm_campaign=542398&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 15 Feb 2021 08:34:01 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Проектирование и рефакторинг]]></category><category><![CDATA[Android]]></category><category><![CDATA[Kotlin]]></category>
      <category>мобильная разработка</category><category>android</category><category>чистая архитектура</category><category>string resources</category><category>рефакторинг</category><category>абстракция</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Как безболезненно мигрировать с RxJava на Kotlin Coroutines+Flow]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/534706/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/534706/?utm_campaign=534706&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Для выполнения асинхронных операций в Android-приложениях, где нужна загрузка и обработка любых данных, долгое время использовали <a href="https://github.com/ReactiveX/RxJava" rel="nofollow noopener noreferrer">RxJava</a> — и о том, как перейти <a href="https://habr.com/ru/company/simbirsoft/blog/510400/">на RxJava 3</a>, мы уже писали в нашем блоге. Сейчас на смену фреймворку постепенно приходят инструменты Kotlin — <a href="https://kotlinlang.org/docs/reference/coroutines-overview.html" rel="nofollow noopener noreferrer">Coroutines+Flow</a>. Актуальность этой связки подтверждается тем, что Google сделал Kotlin <a href="https://developer.android.com/kotlin/first" rel="nofollow noopener noreferrer">приоритетным языком</a> для Android-разработки. <br>
<br>
Корутины позволяют тратить меньше системных ресурсов, чем RxJava. Кроме того, поскольку они являются частью Kotlin, Android предоставляет удобные <a href="https://developer.android.com/topic/libraries/architecture/coroutines" rel="nofollow noopener noreferrer">инструменты</a> для работы с ними — например, viewModelScope и lifecycleScope. В этой статье мы рассмотрим use cases, распространенные в Rx Java, и то, какие возможности вы получите при переходе на Flow.<br>
<br>
<img src="https://habrastorage.org/webt/mo/u0/iw/mou0iwnx0ltus20akohaftalmdu.png"> <a href="https://habr.com/ru/articles/534706/?utm_campaign=534706&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 11 Jan 2021 06:06:03 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[rxjava]]></category><category><![CDATA[аndroid]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[rx]]></category><category><![CDATA[reactive programming]]></category><category><![CDATA[kotlin]]></category><category><![CDATA[корутины]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Полнотекстовый поиск FTS3, FTS4 и FTS5 в Android]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/534656/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/534656/?utm_campaign=534656&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Полнотекстовый поиск необходим в приложениях для того, чтобы быстро находить совпадения в большом объеме данных. Такая возможность удобна, например, для поиска товаров, фильмов, рецептов, научных статей, а также фрагментов текста в электронных книгах. Хотя зачастую поиск реализуют на сервере, иногда бывает необходимо работать в оффлайне, повысить отзывчивость мобильного приложения, избежав задержек при взаимодействии с сервером. В таких случаях используют полнотекстовый поиск — Full-Text Search. <br>
<br>
В этой статье рассмотрим особенности полнотекстового поиска в Android с использованием FTS3, FTS4 и FTS5. Статья будет наиболее полезна для читателей, знакомых с Android и SQLite. <br>
<br>
<img src="https://habrastorage.org/webt/py/5g/3o/py5g3owjapfstmvvk6wjkq8u80c.png"> <a href="https://habr.com/ru/articles/534656/?utm_campaign=534656&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 25 Dec 2020 12:24:03 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Kotlin]]></category><category><![CDATA[SQLite]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[Поиск]]></category><category><![CDATA[полнотекстовый поиск]]></category><category><![CDATA[android]]></category><category><![CDATA[Room]]></category><category><![CDATA[FTS]]></category><category><![CDATA[FTS4]]></category><category><![CDATA[FTS5]]></category><category><![CDATA[Requery]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как создавать гибкие списки: обзор динамического UICollectionView – IGListKit]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/534350/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/534350/?utm_campaign=534350&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Коллекции есть во многих мобильных приложениях – например, это могут быть списки публикаций в соцсети, рецепты, формы обратной связи и многое другое. Для их создания часто используют UICollectionView. Для формирования гибкого списка нужно синхронизировать модель данных и представление, но при этом возможны различные сбои. <br>
<br>
В статье рассмотрим фреймворк <a href="https://instagram.github.io/IGListKit/index.html" rel="nofollow">IGListKit</a>, созданный командой разработчиков Instagram для решения описанной выше проблемы. Он позволяет настроить коллекцию с несколькими видами ячеек и переиспользовать их буквально в несколько строк. При этом у разработчика есть возможность инкапсулировать логику фреймворка от основного ViewController. Далее расскажем об особенностях создания динамической коллекции и обработки событий. Обзор может быть полезен как начинающим, так и опытным разработчикам, желающим освоить новый инструмент. <br>
<br>
<img src="https://habrastorage.org/webt/ci/j-/vi/cij-viy_ibxyv9svxpkfvutxe7o.png"> <a href="https://habr.com/ru/articles/534350/?utm_campaign=534350&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Tue, 22 Dec 2020 09:06:24 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[iOS]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[IGListKit]]></category><category><![CDATA[UICollectionView]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Виды биометрии в мобильном приложении]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/529250/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/529250/?utm_campaign=529250&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Для идентификации пользователя в приложении можно использовать биометрию – например, сканеры радужной оболочки глаза, геометрии лица или отпечатка пальца. Хотя эти технологии известны и популярны, у начинающих разработчиков из-за недостатка информации до сих пор возникают те или иные вопросы. <br>
<br>
Рассказываем о трех основных способах «узнать» пользователя, действительно ли злоумышленники могут обмануть камеру, «как в кино», и что общего между аутентификацией и игрой «Найди 10 отличий». Надеемся, что эти наблюдения будут полезны для тех разработчиков, которые начинают изучать возможности iOS и Android.<br>
<br>
<img src="https://habrastorage.org/webt/ck/ds/zw/ckdszwvqftjucsznvdleg_sf35y.png"> <a href="https://habr.com/ru/articles/529250/?utm_campaign=529250&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Sun, 22 Nov 2020 06:41:56 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Информационная безопасность]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category><category><![CDATA[iOS]]></category>
      <category><![CDATA[аndroid]]></category><category><![CDATA[iOS]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[биометрия]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Что нового в RxJava 3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/simbirsoft/articles/510400/</guid>
      <link>https://habr.com/ru/companies/simbirsoft/articles/510400/?utm_campaign=510400&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Весной 2020 года вышла свежая версия фреймворка <a href="https://github.com/ReactiveX/RxJava" rel="nofollow noopener noreferrer">RxJava</a> – RxJava 3. Давайте рассмотрим, в чем заключаются основные изменения, как можно перейти с RxJava 2 на новую версию и стоит ли вообще мигрировать. <br>
<br>
Отметим, что в новой версии нет глобальных изменений, но появилась поддержка Java 8, а также библиотекой стало удобнее пользоваться.<br>
<br>
<img src="https://habrastorage.org/webt/ig/mf/je/igmfjeowzhve-yrjer5trmesbjq.png"> <a href="https://habr.com/ru/articles/510400/?utm_campaign=510400&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Fri, 10 Jul 2020 10:38:17 GMT</pubDate>
      <dc:creator><![CDATA[mobileSimbirSoft (SimbirSoft)]]></dc:creator>
      <category><![CDATA[Блог компании SimbirSoft]]></category><category><![CDATA[Разработка мобильных приложений]]></category><category><![CDATA[Android]]></category>
      <category><![CDATA[rxjava]]></category><category><![CDATA[аndroid]]></category><category><![CDATA[мобильная разработка]]></category><category><![CDATA[мобильные приложения]]></category><category><![CDATA[rx]]></category><category><![CDATA[reactive programming]]></category><category><![CDATA[kotlin]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
