Введение в Jetpack Compose

Android и Jetpack Compose

Последнее обновление: 26.03.2024

ОС Android в настоящее время является одной из наиболее распространенных операционных систем и определенно лидирующей на рынке смартфонов. Так, на начало 2024 года ее доля на смартфонах оценивается в более чем 70%. А это миллиарды устройств. И кроме смартфонов, данная система присутствует на планшетах, телевизорах, смарт-часах и ряде других устройств.

ОС Андроид была создана разработчиком Энди Рубином (Andy Rubin) в качестве операционной системы для мобильных телефонов и поначалу развивалась в рамках компании Android Inc. Но в 2005 году Google покупает Android Inc. и начинает развивать операционную систему с новой силой. Android постоянно эволюционирует, и вместе с операционной системой эволюционируют средства и инструменты для разработки. На момент написания данной статьи последней версией является Android 14.0, которая вышла в октябре 2023 года:

Версия

Кодовое имя

Дата выпуска

Уровень API

14.0

14

4 сентября 2023

34

13.0

13

15 августа 2022

33

12L

12L

март 2022

32

12.0

12

4 октября 2021

31

11.0

11

8 сентября 2020

30

10.0

10

3 сентября 2019

29

9.0

Pie

6 августа 2018

28

8.1

Oreo

5 декабря 2017

27

8.0

Oreo

21 августа 2017

26

7.1

Nougat

4 октября 2016

25

7.0

Nougat

22 августа 2016

24

6.0

Marshmallow

5 октября 2015

23

5.1

Lollipop

9 марта 2015

22

5.0

Lollipop

3 ноября 2014

21

4.4

KitKat

31 октября 2013

19

4.3

Jelly Bean

24 июля 2013

18

4.2

Jelly Bean

13 ноября 2012

17

4.1

Jelly Bean

9 июля 2012

16

4.0

Ice Cream Sandwich

16 декабря 2011

15

2.3

Gingerbread

6 декабря 2010

10

И в связи со столь широким распространнением системы большое значение получает создание приложений под эту систему. Для разработки под Android использовалось и продолжает использоваться большое количество различных инструментов. Иначально ключевым языком для создания приложений являлся язык Java. Однако в последствии основным языком стал Kotlin. И в данном руководстве мы как раз и будем рассматривать разработку приложений под Android на языке Kotlin с помощью такого инструмента как Jetpack Compose.

Что такое Jetpack Compose

Jetpack Compose представляет современный тулкит от компании Google для создания приложений под ОС Android на языке программирования Kotlin. Jetpack Compose упрощает написание и обновление визуального интерфейса приложения, предоставляя декларативный подход.

Операционной системе Android более 10 лет. За этот период API и библиотеки для создания приложений под эту ОС много раз обновлялись, дополнялись, одни API устаревали, другие, наоборот, добавлялись в арсенал разработчиков. Но в этоге подобное развитие привело к усложнению платформы. Чтобы упростить разработку, сделать ее более быстрой, простой, упростить поддержку компания Google в мае 2019 года анонсировала новый тулкит - Jetpack Compose. В августе 2020 вышла первая альфа-версия тулкита. А 28 июля 2021 года вышла первая стабильная версия - Jetpack Compose 1.0, которая является текущей на момент написания данной статьи и которая применяется далее в дальнейших статьях данного руководства. Также постоянно выходят подверсии. Например, текущей подверсией на момент написания данной статьи является 1.6.2 (вышла в январе 2024 г.).

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

Прежде всего, Jetpack Compose предлагает использовать язык Kotlin и все его преимущества. Соответственно для работы с тулкитом необходимо иметь базовые знания данного языка. Для этого можно обратиться к руководству по языку Kotlin на этом сайте.

Jetpack уменьшает объем кода, что упрощает управление кода, его поддержку и дальнейшее развитие.

Jetpack Compose предлагает декларативный API, который является более интуитивным.

Jetpack Compose ориентирован на данные (data-driven-подход). В частности, Compose применяет концепцию состояния (state). Данные сохраняются как состояние, что гарантирует, что при любые изменения в данных автоматически отразяться на изменении пользовательского интерфейса. Соответственно не потребуется определять какой-то дополнительный код, который бы отслеживал наличие изменений. Любой компонент интерфейса, который обращается к состоянию, подписывается на все изменения этого состояния. И когда состояние изменяется, подписанный компонент пересоздается, чтобы отразить изменения в состоянии. Данный процесс еще называется рекомпозиция.

При этом Jetpack Compose совместим с уже имеющимся кодом. Например, можно вызывать код Jetpack Compose из традиционного приложения на Android. Большинство стандартных библиотек под Android также работают с Jetpack Compose.

Ключевой концепцией тулкита Jetpack Compose является composable-функция (функция, которая имеет аннотацию @Composable). Такие функции представляют некоторые части визуального интерфейса, из которых строится приложение. Это упрощает построение и обновление сложных интерфейсов, тестирование и поддержку самих компонентов.

Для создания приложений с Jetpack Compose нам потребуется специальный комплект инструментов Android SDKи такая среда разработки как Android Studio, которая создана специально для разработки под ОС Android и установщик которой можно загрузить с официального сайта: https://developer.android.com/studio. Android Studio предоставляет богатый инструментарий для создания, отладки и тестирования приложений на Jetpack Compose, предоставляет возможность предпросмотра приложения без запуска на устройстве. Далее мы подробно рассмотрим процесс установки Android Studio на различные операционные системы.

И естественно для тестирования приложений потребуется устройство с ОС Android. Хотя Android Studio позволяет установить и использовать эмулятор устройства, но подобные эмуляторы довольно ресурсоемки (учитывая, что сама Android Studio также потребует большин аппаратных ресурсов). Кроме того, ни один эмулятор полноценно не заменит реальное устройство. Поэтому я бы рекомендовал использовать смарфтон или планшет для тестирования приложений.

Архитектура Android

Архитектуру патформы можно представить следюущим образом:

Архитектура Android

В основе платформы Android лежит ядро Linux. Например, среда выполнения Android Runtime (ART) зависит от ядра Linux при выполнении ключевых функциональностей, как например, управление потоками или низкоуровневое управление памятью. Использование Linux упрощает для разработчиков устройств создание драйверов, поскольку Linux - известная платформа.

Hardware abstraction layer (HAL) предоставляет стандартные интерфейсы, которые упрощают для вышележащих слоев (Java API) обращение к оборудованию. HAL состоит из многочисленных модулей библиотек, которые реализуют интерйес для работы с определенным аппаратным компонентом, например, с камерой или Bluetooth. Когда API фреймворка обращается к аппаратному компоненту устройства, Android загружает библиотечный модуль для этого устройства.

Android Runtime (ART) выполняет приложение Android. Когда создается приложение Android, то оно обычно компилируется в промежуточный формат байт-кода Dalvik Executable (DEX) - формат байткода, который разработан специально для Android и который потребляет минимальное количество памяти. Когда приложение впоследствии загружается на устройство, среда выполнения Android Runtime использует процесс, называемый AOT-компиляцией, для преобразования байт-кода в формате DEX в машинные инструкции, которые понятны процессору устройства. Этот формат известен как формат ELF. При каждом последующем запуске приложения запускается исполняемая версия ELF, что приводит к повышению производительности приложения и увеличению времени автономной работы.

Также Android содержит некотрый набор библиотек выполнения, которые предоставляют функциональность для выполнения кода на Java и Kotlin.

Основные библиотеки Android Runtime основаны на Java и предоставляют основные API-интерфейсы для разработчиков, пишущих приложения для Android. Однако важно отметить, что эти библиотеки не выполняют большую часть реальной работы и, по сути, являются Java-обертками для набора библиотек на основе C/C++. Например, при вызове библиотеки android.opengl для рисования 3D-графики на дисплее устройства библиотека в конечном итоге обращается к библиотеке OpenGL ES C++, которая, в свою очередь, работает с базовым ядром Linux для выполнения задач рисования. Android включает библиотеки C/C++ для выполнения широкого и разнообразного спектра функций, включая рисование 2D- и 3D-графики, SSL, управление базами данных SQLite, воспроизведение аудио и видео, рендеринг растровых и векторных шрифтов, подсистему отображения и управление графическими слоями и реализация стандартной системной библиотеки C (libc).

На практике типичный разработчик приложений Android будет получать доступ к этим библиотекам исключительно через API-интерфейсы на основе Java. Если необходим прямой доступ к этим библиотекам, этого можно добиться с помощью Android Native Development Kit (NDK), целью которого является прямой вызов функциональности на C/C++.

Весь набор функций ОС Android доступен через API, написанные на языке Java. Эти API образуют строительные блоки, необходимые для создания приложений Android, упрощая повторное использование основных системных компонентов и сервисов. Ключевые сервисы и компоненты:

  • Activity Manager: управляет жизненным циклом приложения и стеком навигации.

  • Content Providers: позволяют приложениям публиковать данные и обмениваться ими с другими приложениями.

  • Resource Manager: обеспечивает доступ к встроенным ресурсам, не связанным с кодом, таким как строки, настройки цвета и макеты пользовательского интерфейса

  • Notifications Manager: позволяет приложениям отображать пользователю оповещения и уведомления

  • View System: расширяемый набор представлений, используемый для создания графического интерфейса

  • Package Manager: система, с помощью которой приложения могут получать информацию о других приложениях, установленных в данный момент на устройстве

  • Telephony Manager: предоставляет приложению информацию о телефонных услугах, доступных на устройстве, например статус и информацию об абоненте.

  • Location Manager: обеспечивает доступ к службам определения местоположения, позволяя приложению получать обновления об изменениях местоположения.

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

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850