Содержание

Создание мобильного приложения на Python

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

Что такое Python?

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

Python используется для мобильных приложений, веб-сайтов и для других различных видов софта — как для компьютеров, так и для мобильных устройств. Существует множество библиотек и фреймворков, которые упрощают и ускоряют разработку на этом языке. Далее в этой статье мы поговорим о тех фреймворках, которые помогают создать мобильное приложение на Python.

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

Но это далеко не все преимущества этого языка программирования. Давайте присмотримся к ним подробнее. 

Почему вам следует использовать мобильную разработку на Python

Выбирая язык программирования для разработки вашего программного продукта всегда обращайте внимание на возможности и преимущества каждого из вариантов. Отвечая на вопрос “что мне даст этот конкретный инструмент” вы сможете найти наиболее оптимальный вариант. Ниже мы ответим на этот вопрос в разрезе мобильной разработки на Python.

Легко читаемый код

Если при словосочетании “программный код” у вас перед глазами возникает картинка с множеством строк с различными словами, символами, а главное — с множеством скобок и длительными описаниями — это не о Python. Этот язык программирования позволяет одним словом описать команду, которая, например в Java, должна быть расписана в пять строк. Неплохо, не правда ли? 

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

Быстрый ответ

Исправление ошибок на этом языке программирования упрощается не только благодаря его читабельности, а еще и благодаря скорости их обнаружения. Дело в том, что код на Python не требует компиляции, а значит запускается напрямую интерпретатором. Так, при наличии ошибок в мобильном приложении при его создании, вы будете автоматически об этом узнавать.  

Преимущества здесь очевидны: сокращение срока исправления ошибок, а значит и разработки в целом; экономия средств на погоне за багами; более быстрый запуск вашего продукта на рынок. 

Высокая совместимость

Мы уже упоминали, что возможна не только разработка мобильных приложений на Python, а и десктопных программ и веб-сайтов. А также, если говорить о приложениях, используя только один этот язык программирования, можно писать как нативные приложения для андроид и iOs, так и кроссплатформенные, которые будут корректно работать на обеих платформах. 

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

Разработка через тестирование

Python дает возможность проводить Test Driven Development. Это довольно интересный подход в разработке, который подразумевает, что прежде, чем внедрить любое изменение в программный код, пишутся юнит-тесты, покрывающие это изменение. Только потом проводится рефакторинг кода. 

Разработка приложений на Python таким образом позволяет добиться максимально эффективной архитектуры продукта, а также обеспечивает высокое покрытие автоматическими тестами, что (при условии успеха прохождения всех тестов) гарантирует высокое качество продукта. 

Библиотека высокого стандарта

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

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

Поддерживаются большие данные

Использование Big Data стало необходимостью в последнее время, компании все чаще анализируют информационные массивы для получения еще более высоких результатов. Python отлично справляется с этой задачей, а наличие соответствующих библиотек помогает ее упростить. Немного далее мы рассмотрим мобильные приложения на Python, которые используют эти возможности. 

Как видите, у языка множество преимуществ, которое делают его практически незаменимым во многих кейсах мобильной разработки. Это признают и IT-гиганты, которые реализовали на Python свои продукты. Некоторые примеры могут вас удивить.

Примеры мобильного приложения на Python

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

Instagram

Всемирная социальная сеть с множеством пользователей и возможностей, интуитивно понятным интерфейсом и приложением под любую платформу. Из сети, где можно было просто постить фотографии, инстаграм превратился в центр самого разнообразного контента в самых разнообразных его формах: фотографии, видео, анимации, стикеры, маски, фильтры, визуальные эффекты и так далее. К тому же с возможностью общаться с другими и делиться увиденным контентом. Более того, аудитория соцсети постоянно растет, что требует возможностей масштабирования и распределения нагрузки. И при этом Instagram создан полностью на Python, что демонстрирует прекрасную масштабируемость приложений на этом языке. 

Pinterest

Это приложение, также созданное полностью на Python, в частности на одном из его фреймворков — Django. Также, как и у инстаграма, основная цель приложения — делиться фото и видео контентом. Но здесь этого контента еще больше, потому что это единственное предназначение соцсети, без возможности личной переписки, например. При этом есть функция сохранения любого контента себе на доску, выдача похожих на понравившиеся “пинов” и возможность не только загружать контент, но и делиться статьями или другими материалами с просторов сети. В Pinterest огромное внимание уделено работе с большими объемами данных, но и количество пользователей при этом существенно, ведь приложение пользуется популярностью во всем мире.

Spotify

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

Disqus

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

Dropbox

Python приложение, которое доступно не только на мобильных устройствах, но и на десктопах. Хранение файлов и обмен ими требует мощного хостинга, на котором безопасно будут размещаться все необходимые документы, фотографии, аудиозаписи, видео и любые другие категории файлов. Такая возможность стала популярна не только среди бизнесов, но и среди обычных пользователей, что сделало сервис масштабным и востребованным. Здесь мы опять видим способность пайтон справляться с просто невообразимыми объемами данных в системе. 

Uber

И снова о работе с большим количеством данных, а также об удобном пользовательском интерфейсе. Культовое приложение для каршеринга, которое выполняет функцию заказа не только такси, но и доставки еды или любых других перевозок, также написано на Python. Здесь есть разные категории пользователей, для каждого из которых доступен свой функционал со своим интерфейсом, но приложение неизменно удобно и востребовано среди всех категорий его целевой аудитории. Каждый день совершается бесчисленное количество заказов, и, как видим, Python отлично с этим справляется. 

Reddit

Еще одна очень  популярная платформа — гибрид форума и социальной сети, где обсуждается все, что только можно. С акцентом на обсуждении новостей, их оценке и комментировании это приложение также откликнулось у множества пользователей и заняло свое место в жизни миллионов людей по всему миру. Все возможности Reddit также реализованы на Python. Интересный факт: изначально выбор языка программирования пал не в его пользу, но преимущества все-таки перевесили. 

Конечно, мы старались приводить общеизвестные примеры, но их достаточно, чтобы понять насколько разнообразны возможности Python в разработке приложений.

Кросс-платформенные мобильные фреймворки для Python

С примерами приложений на Python разобрались, время снова возвращаться к технической части. Мы уже упоминали, что существует довольно значительное количество фреймворков на этом языке программирования. Но поскольку мы говорим о мобильной разработке, давайте поговорим конкретно о тех фреймворках, которые помогут вам создать приложение как для iOS, так и для Android, не прибегая к помощи  других языков. 

Kivy

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

BeeWare

В отличии от Kivy, этот фреймворк имеет в своем арсенале нативные инструменты для каждой платформы, так что опыт ваших пользователей ничем не будет отличаться от приложений написанных на Swift для iOs, или Java для Android. Конечно, это подразумевает и некоторые особенности разработки: вам придется прописывать и настраивать многие элементы отдельно для каждой платформы. Тем не менее, благодаря общему языку программирования, трудности возникают только с интерфейсной частью, остальной же функционал можно написать один раз для обеих платформ и использовать повторно. Тестировать, конечно, придется оба приложения отдельно.  

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

Выводы

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

Выбирая Python для разработки вы получаете легко читаемый код, высокую совместимость с разными платформами, множество высококачественных библиотек и фреймворков, а также дополнительные возможности в разработке, такие как использование современных технологий Big Data и Machine Learning. Все это дает вашему приложению широкий выбор возможностей для развития, а также конкурентное преимущество на рынке. 

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

Наши специалисты работают в том числе с Python. Тем не менее, мы в любом случае детально изучаем каждый проект проект. Если окажется, что есть лучшая альтернатива, помогаем клиенту сделать выбор. Если у вас еще остались вопросы, или вы хотите обсудить разработку вашего приложения — оставляйте заявку и мы вам перезвоним. Наш менеджер проконсультирует вас по всем вопросам проекта.

Остались вопросы?

Оставьте ваши контактные данные. Наш менеджер свяжется и проконсультирует вас.

Как вам статья?

1 Star2 Stars3 Stars4 Stars5 StarsEmpty

Проголосовало: 12

Как создать приложение для Android на языке Kotlin

Начинаем новый курс по разработке андроид-приложений на языке Kotlin. В этом курсе вы узнаете, как создать и запустить свое первое приложение для Android на Котлине. Если вы не знакомы с языком,  рекомендуем заглянуть в раздел Основы Котлин

Kotlin это статически типизированный язык программирования, который работает на JVM и полностью совместим с языком программирования Java. Kotlin с 2017 года является официально поддерживаемым языком разработки приложений для Android, наряду с языком Java.

Исторически сложилось, что первым официальным языком для разработки андроид-приложений была Java. Несмотря на появление языка Kotlin и признание его в качестве официального языка для Android в 2017 году,  не все разработчики переводят свои проекты с Java на Kotlin. Однако много новых проектов пишется на Котлине, поскольку это удобный и современный язык. 

Какой язык учить: Kotlin или Java?

Многих начинающих разработчиков сейчас волнует вопрос, какой язык изучать для разработки андроид-приложений, Java или Kotlin.

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

На нашем сайте вы можете изучить Основы Kotlin

Также на нашем сайте есть Продвинутые курсы по созданию реальных андроид-приложений на языке Котлин

Нужно ли учить Java?

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

Уроки по основам Java

Изучать сразу два языка программирования?

Изучение сразу двух языков программирования может показаться трудной задачей. Но в нашем случае есть положительный момент. Как уже говорилось, Kotlin работает на виртуальной машине Java и полностью совместим с языком Java. Это значит, что в код, написанный на Java можно встраивать код на Kotlin и наоборот. То есть вы можете применять оба языка одновременно не только в одной среде разработки, но и в одном приложении. Конечно, для этого нужно изучить основы обоих языков и научиться применять их.

На нашем сайте вы найдете много уроков по разработке мобильных приложений и игр на языке Java.

И теперь мы начинаем серию уроков по разработке андроид-приложений на языке Kotlin.

Все уроки на Kotlin

7 языков программирования для Android для создания вашего следующего мобильного приложения

Резюме: Что делает один язык лучше другого при таком количестве языков программирования Android? Узнайте, какой язык программирования лучше всего подходит для вашего следующего приложения для Android.

Android — это мобильная операционная система (ОС), впервые выпущенная в 2008 году компанией Google и в настоящее время используемая многими производителями устройств, включая Google, Samsung, Sony, Nokia и многими другими. Android поддерживает как смартфоны, так и планшеты, с более чем тремя миллиардами активных пользователей, самой большой базой среди всех операционных систем — например, втрое больше, чем количество активных Apple iPhone — и захватом 690,74% мирового рынка мобильных ОС.

При таком быстром росте Android и разработки корпоративных мобильных приложений в целом все большее число существующих и потенциальных разработчиков программного обеспечения обращаются к разработке приложений для Android. В то время как отрасль будет продолжать меняться по мере появления новых технологий и изменения тенденций, разработка приложений для Android сегодня в первую очередь требует знания двух основных языков (Java и Kotlin), но это только верхушка.

Продолжайте читать это руководство, чтобы узнать больше о выборе языка приложений для Android и о том, почему нужно знать больше, чем просто Java и Kotlin.

Мы уважаем вашу конфиденциальность. Ваша информация в безопасности.

Нативные приложения для Android и кроссплатформенные приложения

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

Подход к разработке собственных приложений создает приложения, адаптированные к конкретным функциям этой платформы или устройства. Это обеспечивает беспрепятственный пользовательский интерфейс для производительности и визуальных эффектов. Тем не менее, приложения, созданные методом кроссплатформенной разработки, охватывают широкий круг последователей бренда, обращаясь к нескольким устройствам для одного приложения. Хотя стоимость разработки ниже, чем у нативной методологии, здесь могут быть отставания в производительности. Кроссплатформенные приложения могут не иметь доступа ко всем API-интерфейсам устройств и не соответствовать ожиданиям пользовательского интерфейса каждого устройства. В процессе используются такие фреймворки, как React Native, Flutter или Xamarin, которые определяют используемые языки.

Какие языки программирования используются для разработки приложений для Android?

На каких языках написаны приложения для Android? Какой лучший язык программирования для создания приложений для Android? Основные языки программирования для написания приложений для Android включают:

1.

Java

Java является одним из двух официальных языков программирования приложений для Android и был основным языком до появления Kotlin.

Java по-прежнему остается одним из лучших языков разработки приложений для Android, поскольку он стабилен и безопасен, поддерживает многопоточность, портативен и отлично подходит для сложной архитектуры — огромное преимущество для многих современных разработчиков. Хотя это правда, у Java есть некоторые недостатки производительности.

2. Kotlin

Google объявила о переходе на Kotlin в качестве официального языка в 2017 году, отражая предпочтение Apple Swift, оба из которых являются более простыми языками с обширными библиотеками, что упрощает их изучение и использование.

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

В качестве эффективного решения благодаря его скорости, точности, гибкости, безопасности и стабильности многие бренды теперь переходят на Kotlin для своих приложений для Android, включая Basecamp, Pinterest, Netflux и Uber.

3. C/C++

Хотя Kotlin — новичок в этом блоке, Android Native Development Kit (NDK) позволяет использовать C/C++, оба из которых легко переносимы между операционными системами.

C++ — это более общий объектно-ориентированный язык, который поддерживает динамическое выделение памяти для ускорения работы, что особенно полезно для приложений, интенсивно использующих ЦП, таких как игры. Многие разработчики программного обеспечения используют C++ для кроссплатформенной разработки или для нативной разработки в приложениях Java или Kotlin.

Для опытных разработчиков C++ поддержка C++ снижает порог входа в разработку для Android. Тем не менее, C++ недостаточно гибок, чтобы сделать приложение целиком, и может сделать приложение более глючным и негибким, если им злоупотреблять.

4. C#

C# — это язык программирования .NET, разработанный Microsoft и поддерживаемый Visual Studio, который считается «основным» языком, поскольку он хорошо работает и может использоваться для различных проектов. C# основан на объектно-ориентированном программировании, что позволяет поэтапно создавать приложения и поддерживать более простое управление.

C# — это основной язык для разработки кроссплатформенных приложений с использованием платформы Xamarin.

5. Lua

Lua — это легкий скриптовый язык, широко используемый в разработке игр и пользовательском интерфейсе. Lua — это встраиваемый язык, позволяющий использовать Lua для Android или для кроссплатформенной разработки с помощью такого движка, как Solar2D.

6. JavaScript

JavaScript — один из лучших языков программирования во всем мире, универсальный для многих типов проектов, известный своей скоростью и умением создавать насыщенные пользовательские интерфейсы и опыт. JavaScript — это язык, используемый несколькими кроссплатформенными фреймворками, включая React Native, Angular и Vue.

Чтобы завершить знание Интернета, знание JavaScript было бы неполным без знания HTML и CSS.

7. Python

Python — это интерпретируемый объектно-ориентированный язык программирования высокого уровня с динамической семантикой. Это означает, что это простой в использовании язык программирования, который может помочь ускорить время разработки и поставляется с большим открытым исходное сообщество и надежные фреймворки и библиотеки.

Язык программирования Python можно использовать для разработки Android с помощью сторонних инструментов, которые преобразуют приложения Python в пакеты Android. Приложения Python известны более высоким потреблением памяти.

Что лучше: специализироваться на одном языке приложений для Android или диверсифицировать?

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

Верно также и то, что чрезмерная специализация может привести к трудностям, если рынок изменится, как мы видели при переходе от Java к Kotlin. В качестве нового разработчика Android было бы идеально сосредоточиться на самых популярных языках специально для Android (Koltin, Java) и базовых языках, которые являются более универсальными (JavaScript, C/C++).

Сколько времени нужно, чтобы научиться программировать приложения для Android?

Изучение языка приложения для Android требует времени и усилий, в среднем от 3-4 месяцев для общих знаний до более 1 года для более твердого владения языком — в идеале с некоторым опытом помимо этих знаний. Однако для более опытных программистов это время обучения значительно сокращается.

Языки программирования приложений для Android, такие как Java, Kotlin, C++ и другие, можно изучать в школе, на онлайн-курсах, с помощью учебников или во многих полезных сообществах разработчиков. Для тех, кто хочет изучить Kotlin, официальный сайт — отличное место для начала.

Часто задаваемые вопросы

1. На каком языке написаны приложения для Android?

Большинство приложений для Android написано на Java и Kotlin. В некоторых случаях также используются такие языки программирования, как C, C++ и Basic.

2. Можем ли мы писать приложения для Android на C++?

C++ можно использовать в разработке приложений для Android в редких случаях, особенно если вы планируете создавать собственные приложения для Android. Это связано с тем, что C++ менее гибок и очень сложен в настройке, и в результате это может привести к большему количеству ошибок. Обычно Java предпочтительнее, чем C++.

3. Все ли приложения для Android написаны на Java?

Несмотря на то, что Java является официальным языком программирования для Android, не все приложения написаны на нем. Большинство разработчиков также используют BASIC и Kotlin. В некоторых редких случаях также можно использовать C++.

4. Какой самый простой язык для разработки под Android?

Java — самый простой язык для разработки под Android, так как ОС Android была разработана на нем. В результате вы можете легко разрабатывать свои приложения для Android, не беспокоясь о совместимости и других проблемах. Кроме того, Java намного быстрее и читабельнее, чем Python и другие языки, благодаря простому для понимания синтаксису.

5. Могу ли я создавать приложения для Android на языке C?

Google предлагает собственный комплект средств разработки (NDK), который использует родные языки, такие как C и C++, для разработки под Android. Но вы не можете создать целое приложение для Android на C или C++. Вам нужно изучать Java.

Заставьте ваше Android-приложение работать на iOS — учебник

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

В этом руководстве используется образец приложения для Android с одним экраном для ввода имени пользователя и пароля. Учетные данные проверяются и сохраняются в базе данных в памяти.

Если вы не знакомы с Kotlin Multiplatform Mobile, сначала узнайте, как создать и настроить кроссплатформенное мобильное приложение с нуля.

Подготовка среды для разработки

  1. Установите все необходимые инструменты и обновите их до последних версий.

    Вам понадобится Mac с macOS для выполнения определенных шагов в этом руководстве, включая написание кода для iOS и запуск приложения для iOS. Эти шаги нельзя выполнить в других операционных системах, таких как Microsoft Windows. Это связано с требованием Apple.

  2. В Android Studio создайте новый проект из системы контроля версий:

    https://github. com/Kotlin/kmm-integration-sample

    Ветка master содержит начальное состояние проекта — простое Android-приложение . Чтобы увидеть финальное состояние с приложением iOS и общим модулем, переключитесь на окончательная ветвь .

  3. Переключиться на вид Project .

Сделайте свой код кроссплатформенным

Чтобы ваше приложение работало на iOS, вы сначала сделаете свой код кроссплатформенным, а затем повторно используете свой кроссплатформенный код в новом приложении iOS.

Чтобы сделать ваш код кроссплатформенным:

  1. Решите, какой код сделать кроссплатформенным.

  2. Создайте общий модуль для кроссплатформенного кода.

  3. Добавьте зависимость от общего модуля в ваше приложение для Android.

  4. Сделать бизнес-логику кроссплатформенной.

  5. Запустите кроссплатформенное приложение на Android.

Решите, какой код сделать кроссплатформенным

Решите, какой код вашего Android-приложения лучше использовать для iOS, а какой оставить нативным. Простое правило: делитесь тем, что вы хотите использовать повторно, насколько это возможно. Бизнес-логика часто одинакова как для Android, так и для iOS, поэтому это отличный кандидат для повторного использования.

В вашем примере приложения для Android бизнес-логика хранится в пакете com.jetbrains.simplelogin.androidapp.data . Ваше будущее приложение для iOS будет использовать ту же логику, поэтому вы также должны сделать его кроссплатформенным.

Создать общий модуль для кроссплатформенного кода

Кроссплатформенный код, который используется как для iOS, так и для Android , хранится в общем модуле. Плагин Kotlin Multiplatform Mobile предоставляет специальный мастер для создания таких модулей.

В своем проекте Android создайте общий модуль Kotlin Multiplatform для кроссплатформенного кода. Позже вы подключите его к существующему приложению для Android и будущему приложению для iOS.

  1. В Android Studio щелкните Файл | Новый | Новый модуль .

  2. В списке шаблонов выберите Мультиплатформенный общий модуль Kotlin , введите имя модуля shared и выберите Regular framework в списке вариантов распространения фреймворка iOS.
    Это необходимо для подключения общего модуля к приложению iOS.

  3. Нажмите Готово .

Мастер создаст общий модуль Kotlin Multiplatform, обновит файлы конфигурации и создаст файлы с классами, демонстрирующими преимущества Kotlin Multiplatform. Вы можете узнать больше о структуре проекта.

Добавьте зависимость от общего модуля в ваше приложение для Android

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

  1. В файле build.gradle.kts общего модуля убедитесь, что compileSdk и minSdk совпадают с файлами build.gradle вашего приложения Android в модуле приложения . .

    Если они отличаются, обновите их в build.gradle.kts общего модуля. В противном случае вы столкнетесь с ошибкой компиляции.

  2. Добавьте зависимость от общего модуля в build.gradle вашего приложения для Android.

    зависимости { проект реализации (': общий') }

  3. Синхронизируйте файлы Gradle, нажав Синхронизировать сейчас в уведомлении.

  4. В каталоге app/src/main/java/ откройте LoginActivity в пакете com.jetbrains.simplelogin.androidapp.ui.login .

  5. Чтобы убедиться, что общий модуль успешно подключен к вашему приложению, выгрузите результат функции Greeting() в журнал, обновив метод onCreate() :

    override fun onCreate(savedInstanceState: Bundle? ) { super. onCreate(сохраненныйInstanceState) Log.i("Активность входа", "Привет из общего модуля: " + (Greeting().greeting())) }

  6. Следуйте рекомендациям Android Studio, чтобы импортировать отсутствующие классы.

  7. Отладка приложения . На вкладке Logcat найдите в журнале Hello , и вы найдете приветствие от общего модуля.

Сделайте бизнес-логику кроссплатформенной

Теперь вы можете извлечь код бизнес-логики в общий модуль Kotlin Multiplatform и сделать его независимым от платформы. Это необходимо для повторного использования кода как для Android, так и для iOS.

  1. Переместите код бизнес-логики com.jetbrains.simplelogin.androidapp.data из каталога app в пакет com.jetbrains.simplelogin.shared

    в каталоге shared/src/commonMain . Вы можете перетаскивать пакет или реорганизовывать его, перемещая все из одного каталога в другой.

  2. Когда Android Studio спросит, что вы хотите сделать, выберите перемещение пакета, а затем подтвердите рефакторинг.

  3. Игнорируйте все предупреждения о коде, зависящем от платформы, и нажмите Продолжить .

  4. Удалите код, специфичный для Android, заменив его кросс-платформенным кодом Kotlin или подключившись к API-интерфейсам Android с помощью

    ожидаемых и фактических объявлений . Подробности см. в следующих разделах:

Замените специфичный для Android код кросс-платформенным кодом

Чтобы ваш код хорошо работал как на Android, так и на iOS, замените все зависимости JVM зависимостями Kotlin в перемещенном каталог данных везде, где это возможно.

  1. В классе LoginDataSource замените IOException в функции login() на RuntimeException .

    IOException недоступно в Kotlin.

    // До return Result.Error(IOException("Ошибка входа", e))

    // После return Result.Error(RuntimeException("Ошибка входа", e))

  2. В LoginDataValidator , замените класс Patterns из пакета android.utils регулярным выражением Kotlin, соответствующим шаблону для проверки электронной почты:

    // Раньше частное развлечение isEmailValid(email: String) = Patterns.EMAIL_ADDRESS.matcher(email).matches()

    // После личное удовольствие isEmailValid(email: String) = emailRegex.matches(email) сопутствующий объект { частное значение emailRegex = ("[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" + "\\@" + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" + "(" + "\\." + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" + ")+").toRegex() }

Подключение к API для конкретных платформ из кроссплатформенного кода

В классе LoginDataSource универсальный уникальный идентификатор (UUID) для fakeUser генерируется с использованием java. 014.UUID class, который недоступен для iOS.

val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), "Джейн Доу")

Поскольку стандартная библиотека Kotlin не предоставляет функции для создания UUID, в этом случае вам все равно необходимо использовать функции, зависящие от платформы.

Предоставьте объявление expect для функции randomUUID() в общем коде и ее реальных реализаций для каждой платформы — Android и iOS — в соответствующих исходных наборах. Вы можете узнать больше о подключении к API для конкретной платформы.

  1. Удалите java.util.UUID класс из общего кода:

    val fakeUser = LoggedInUser(randomUUID(), "Jane Doe")

  2. Создайте файл

    Utils.kt в com.jetbrains.simplelogin. общий пакет каталога shared/src/commonMain и укажите объявление expect :

    package com.jetbrains.simplelogin. shared ожидать веселья randomUUID(): String

  3. Создайте файл Utils.kt в com.jetbrains.simplelogin.shared из каталога shared/src/androidMain и предоставить фактическую реализацию для randomUUID() в Android:

    пакет com.jetbrains.simplelogin.shared импортировать java.util.* фактическое удовольствие randomUUID() = UUID.randomUUID().toString()

  4. Создайте файл Utils.kt в каталоге com.jetbrains.simplelogin.shared shared/src/iosMain и предоставьте фактическая реализация для randomUUID() в iOS:

    пакет com.jetbrains.simplelogin.shared импортировать платформу.Foundation.NSUUID реальное удовольствие randomUUID(): String = NSUUID().UUIDString()

  5. Все, что осталось сделать, это явно импортировать randomUUID в файл LoginDataSource.kt каталога shared/src/commonMain :

    import com.

    jetbrains.simplelogin.shared.randomUUID

    Для Android и iOS Kotlin будет использовать различные реализации для конкретных платформ.

Запустите кроссплатформенное приложение на Android

Запустите кроссплатформенное приложение для Android, чтобы убедиться, что оно работает.

Сделайте так, чтобы ваше кроссплатформенное приложение работало на iOS

После того, как вы сделали кроссплатформенное приложение для Android, вы можете создать приложение для iOS и повторно использовать в нем общую бизнес-логику.

  1. Создайте проект iOS в Xcode.

  2. Подключите фреймворк к вашему проекту iOS.

  3. Используйте общий модуль от Swift.

Создайте проект iOS в Xcode

  1. В Xcode щелкните Файл | Новый | Проект .

  2. Выберите шаблон для приложения iOS и нажмите Далее .

  3. В качестве имени продукта укажите simpleLoginIOS и нажмите Next .

  4. В качестве места для вашего проекта выберите каталог, в котором хранится ваше кросс-платформенное приложение, например,

    kmm-integration-sample .

В Android Studio вы получите следующую структуру:

Вы можете переименовать каталог simpleLoginIOS в iosApp для согласованности с другими каталогами верхнего уровня вашего кросс-платформенного проекта.

Подключите фреймворк к вашему проекту iOS

Получив фреймворк, вы можете подключить его к вашему проекту iOS вручную.

Альтернативой является настройка интеграции через CocoaPods, но эта интеграция выходит за рамки данного руководства.

Подключите фреймворк к проекту iOS вручную:

  1. В Xcode откройте настройки проекта iOS, дважды щелкнув имя проекта.

  2. На вкладке Build Phases настроек проекта щелкните + и добавьте New Run Script Phase .

  3. Добавьте следующий скрипт:

    cd "$SRCROOT/.." ./gradlew:shared:embedAndSignAppleFrameworkForXcode

  4. Переместите Фаза запуска сценария перед фазой Compile Sources .

  5. На вкладке Настройки сборки переключитесь на Все настройки сборки и укажите Путь поиска Framework в Пути поиска :

    $(SRCROOT)/../shared/build/xcode-frameworks /$(CONFIGURATION)/$(SDK_NAME)

  6. На вкладке Build Settings укажите Other Linker flags под Linking :

    $(унаследовано) -framework shared

  7. Создайте проект в Xcode. Если все настроено правильно, проект будет успешно построен.

Если у вас есть пользовательская конфигурация сборки, отличная от выпуска по умолчанию . или Выпуск .

Используйте общий модуль Swift

  1. В Xcode откройте файл ContentView.swift и импортируйте общий модуль :

    приветствие () из общего модуля вашего кросс-платформенного приложения:

    import SwiftUI импортировать общие структура ContentView: представление { var body: некоторый View { Текст (Приветствие (). Приветствие ()) .заполнение() } }

  2. В ContentView.swift напишите код для использования данных из общего модуля и рендеринга пользовательского интерфейса приложения:

    import SwiftUI импортировать общие структура ContentView: представление { @State private var username: String = "" @State частный пароль var: String = "" @ObservedObject переменная viewModel: ContentView.ViewModel var body: некоторый View { VStack(интервал: 15.0) { ValidatedTextField(titleKey: "Имя пользователя", защищенный: false, текст: $username, errorMessage: viewModel. formState.usernameError, onChange: { viewModel.loginDataChanged (имя пользователя: имя пользователя, пароль: пароль) }) ValidatedTextField(titleKey: "Пароль", защищенный: true, текст: $password, errorMessage: viewModel.formState.passwordError, onChange: { viewModel.loginDataChanged (имя пользователя: имя пользователя, пароль: пароль) }) Кнопка("Войти") { viewModel.login (имя пользователя: имя пользователя, пароль: пароль) }.disabled(!viewModel.formState.isDataValid || (имя пользователя.isEmpty && password.isEmpty)) } .заполнение (.все) } } struct ValidatedTextField: View { пусть titleKey: строка пусть обеспечено: Bool @Binding var text: строка пусть errorMessage: Строка? пусть onChange: () -> () @ViewBuilder var textField: некоторый вид { если обеспечено { SecureField(titleKey, текст: $text) } еще { TextField(titleKey, текст: $текст) } } var body: некоторый View { Zстек { текстовое поле . textFieldStyle(RoundedBorderTextFieldStyle()) .autocapitalization(.none) .onChange(из: текста) { _ в по изменению() } если пусть errorMessage = errorMessage { ХСтэк { Прокладка () FieldTextErrorHint (ошибка: errorMessage) }.padding(.horizontal, 5) } } } } struct FieldTextErrorHint: Просмотр { пусть ошибка: строка @State частная переменная, показывающаяAlert = false var body: некоторый View { Кнопка (действие: { self.showingAlert = true }) { Изображение (имя системы: "восклицательный знак.треугольник.заполнение") .foregroundColor(.красный) } .alert(isPresented: $showingAlert) { Оповещение (заголовок: Текст ("Ошибка"), сообщение: Текст (ошибка), кнопка отклонения: .default (Текст ("Понятно!"))) } } } расширение ContentView { структура LoginFormState { пусть usernameError: Строка? пусть парольОшибка: строка? переменная isDataValid: Bool { получить {возврат usernameError == nil && passwordError == nil } } } класс ViewModel: ObservableObject { @Published var formState = LoginFormState (usernameError: nil, passwordError: nil) пусть loginValidator: LoginDataValidator пусть loginRepository: LoginRepository init(loginRepository: LoginRepository, loginValidator: LoginDataValidator) { self. loginRepository = логинРепозиторий self.loginValidator = валидатор входа } func login (имя пользователя: строка, пароль: строка) { если пусть результат = loginRepository.login (имя пользователя: имя пользователя, пароль: пароль) как? РезультатУспех { print("Успешный вход в систему. Добро пожаловать, \(result.data.displayName)") } еще { print("Ошибка при входе") } } func loginDataChanged (имя пользователя: строка, пароль: строка) { formState = ЛогинFormState( usernameError: (loginValidator.checkUsername(username: username) as? LoginDataValidator.ResultError)?.message, passwordError: (loginValidator.checkPassword(пароль: пароль) as? LoginDataValidator.ResultError)?.message) } } }

  3. В simpleLoginIOSApp.swift импортируйте общий модуль и укажите аргументы для функции ContentView() :

    import SwiftUI импортировать общие @основной структура SimpleLoginIOSApp: приложение { var body: некоторая сцена { Группа окон { ContentView(viewModel: . init(loginRepository: LoginRepository(dataSource: LoginDataSource()), loginValidator: LoginDataValidator())) } } }

Наслаждайтесь результатами – обновите логику только один раз

Теперь ваше приложение кроссплатформенное. Вы можете обновить бизнес-логику в одном месте и увидеть результаты как на Android, так и на iOS.

  1. В Android Studio измените логику проверки пароля пользователя в функции checkPassword() класса LoginDataValidator :

    package com.jetbrains.simplelogin.shared.data класс LoginDataValidator { //... весело checkPassword (пароль: строка): Результат { вернуться, когда { password.length < 5 -> Result.Error("Пароль должен быть >5 символов") password.lowercase() == "пароль" -> Result.Error("Пароль не должен быть \"пароль\"") еще -> Результат. Успех } } //... }

  2. Обновите gradle.