3.42M
Category: softwaresoftware

Знакомство с ОС Android и инструментарием разработчика Android-студией

1.

Дверь отперта. Переступи порог.
Мой дом раскрыт навстречу всех дорог.
…………………………………………………………
Дом Поэта М. Волошин
Знакомство с ОС Android и
инструментарием разработчика Android -студией
В этом документе
•OS Android – основные определения и
понятия
•Пользовательский интерфейс Android студии

2.

Как устроена операционная система
Андроид
В этом документе
•Binder
•Сервисы Google
•Ядро Linux и рантайм

3.

Справочная информация
Разработчик Google, Open Handset Alliance
Семейство ОС UNIX-подобные ОС
Основана на ядро Linux
Исходный код
свободное и открытое программное обеспечение, проприетарные драйверы
Первый выпуск23 сентября 2008 Последняя версия 12 (авг.2021)
Менеджеры пакетов.APK(В основном через Google Play; установка APK также
возможна локально или из альтернативных источников, таких как FDroid,Яндекс.Store, Amazon Appstore, Samsung Apps и др.)
Поддерживаемые языкирусский, английский и ещё более 100 языков
Поддерживаемые платформы32- и 64-битные: ARM, MIPS, x86
Тип ядра монолитное (модифицированное ядро Linux)
ЛицензияApache v2 — пользовательское пространство GNU GPL v2 — патчи ядра
Linux[2]
Состояние актуальное
Репозиторий исходного кода android.googlesource.com
android-review.googlesource.com/…
Веб-сайт android.com

4.

27 июля 2021 года Google объявил, что с 27 сентября 2021 года закроет доступ к аккаунтам
пользователей на устаревших версиях ниже Android 3.0.[2]

5.

Android(wiki)
• Android («Андро́ ид»[~ 1]) — операционная
система для смартфонов, планшетов, электронных книг, цифровых
проигрывателей, наручных часов, фитнес-браслетов, игровых
приставок, ноутбуков, нетбуков, смартбуков, очков Google
Glass[3], телевизоров[4] и других устройств (в 2015 году появилась
поддержка автомобильных развлекательных систем[5] и бытовых
роботов).
• Основана на ядре Linux[6] и собственной реализации виртуальной
машины Java от Google. Изначально разрабатывалась
компанией Android, Inc., которую затем купила Google. Впоследствии
Google инициировала создание альянса Open Handset Alliance (OHA),
который сейчас занимается поддержкой и дальнейшим развитием
платформы. Android позволяет создавать Java-приложения,
управляющие устройством через разработанные Google библиотеки.
Android Native Development Kit позволяет портировать библиотеки и
компоненты приложений, написанные на Си и других языках.

6.

Многозадачность
Android - многозадачная система.
• Не нужно заботиться о закрытии приложений, система сделает
это сама, когда оперативная память подойдет к концу или ее не
хватит для размещения запускаемого приложения Запуститься
механизм lowmemorykiller.
• Важные элементы системы многозадачности - службы (service)

7.

lowmemorykiller.
Имея права root, настройки lowmemorykiller можно регулировать
напрямую или с помощью специальных приложений

8.

service
Службы- особые компоненты приложений, которые могли работать в
фоне абсолютно в любых условиях: включен экран или выключен, свернуто
приложение или развернуто, - службы получают нужные им ресурсы.
В Android запрос службы к системе называется wakelock (а если точнее —
процессорный wakelock).
Однако поддержка такого мощного и полезного инструмента сыграла с
Google злую шутку. Появилось огромное количество приложений, которые
плодили службы, постоянно выполняли какую-то работу и не давали
смартфону спать.
Китайские производители, не обремененные задачей сохранить
совместимость с оригинальным Android (это требуется, если хотите
устанавливать на свои смартфоны Play Store), просто отключили в своих
смартфонах механизмы поддержания жизненного цикла служб для
несистемных приложений.
Можно было получить права root и устанавить приложение Greenify, которое
позволяло заморозить службы выбранных приложений так, чтобы их уже
никто не смог разбудить

9.

Механизм Doze
В Android 6.0 Google пошла еще дальше чем в версии 4.4 и оснастила ее
механизмом Doze, который после определенного времени неактивности
смартфона (около одного часа) переводил его в специальный
энергосберегающий режим.
Одна из особенностей этого режима — запрет на wakelock, то есть ни
приложения, ни службы просто не могут разбудить смартфон, чтобы
выполнить какую-либо работу

10.

foreground service & JobScheduler.
Android 8.0 Google пошла на радикальный шаг — запретила работу
фоновых служб. Но с двумя исключениями:
• Приложение в некоторых случаях, например когда оно
находится на экране, может запускать службы, но Android
прибьет их после ухода приложения в сон.
Видимые пользователю службы до сих пор разрешены. Это так
называемый foreground service, служба, которая видна в
панели уведомлений и имеет иконку в статусбаре.
Cлужбы — это зло?
• Google шла к запрету служб еще с версии 5.0, где появился так
называемый JobScheduler. Это специальная подсистема,
которая позволяет приложениям попросить Android выполнить
ту или иную работу в такое-то время или при возникновении
такого-то события (подключение к интернету, например).

11.

Binder
Android с самых первых версий использовал песочницы
для изоляции приложений.
Каждое приложение запускалось от имени отдельного
пользователя Linux и, таким образом, имело доступ
только к своему каталогу внутри /data/data.
Друг с другом и с операционной системой приложения
могли общаться только через IPC (Inter Process
Communications)-механизм Binder, который требовал
авторизации на выполнение того или иного действия.
Этот же механизм использовался и для несколько других
целей: с его помощью система оповещала приложения
о системных событиях, таких как входящий вызов,
пришедшее СМС, втыкание зарядки и так далее.

12.

Работу Binder обеспечивают драйвер в ядре
Linux и Service Manager

13.

Механизм Intent
Система оповещения базируется на интентах (intent), специальном механизме,
реализованном поверх Binder и предназначенном для обмена информацией между
приложениями (или ОС и приложениями), а также запуска компонентов приложений.
С помощью интентов можно оповещать приложения о событиях, попросить систему
открыть приложение для обработки определенных типов данных или просто запустить
компонент того или иного приложения.
Приложения в Android запускаются не напрямую, а с помощью интентов.
• К ак и службы, интенты стали проблемой для Google и пользователей Android.
1.
Дело в том, что широковещательные интенты, используемые для уведомления
приложений о событиях, приходят сразу ко всем приложениям, которые заявили, что
способны на них реагировать.
2.
А чтобы приложение смогло среагировать на интент, его надо запустить. Картина
получается такая: на смартфоне есть двадцать приложений, которые могут реагировать
на интент android.net.conn.CONNECTIVITY_CHANGE, и при каждом подключении к сети и
отключении от нее система запускает эти приложения, чтобы они смогли среагировать на
интент.
3.
Как это сказывается на энергопотреблении ?
• Google исправила это недоразумение опять же в Android 8.0.
Теперь приложения могут регистрировать обработчики широковещательных интентов только
во время своей работы (за небольшими исключениями).

14.

Сервисы Google
Собрав Android из официальных исходников, вы получите систему без
нескольких важных компонентов:
1) отдельных драйверов, исходники которых производитель прячет, как
коммерческую тайну,
2) сервисов Google, которые нужны в первую очередь для получения доступа к
аккаунту, запуска Google Play и облачного бэкапа.
Сервисы Google (Google Mobile Services) также отвечают за поддержку
• push-уведомлений,
• Instant Apps,
• Google Maps,
• доступ к календарю,
• определение местоположения по сотовым вышкам и Wi-Fi-роутерам,
• механизму Smart Lock, позволяющий разблокировать устройство в
зависимости от некоторых условий.

15.

GApps
В современных версиях Android сервисы Google взяли на себя настолько большую часть работы,
что жить без них оказывается хоть и возможно, но очень проблематично.
Минимальный вариант пакета GApps (который содержит только сервисы Google и Google Play)
больше 120 Мбайт, а сами сервисы славятся своей любовью к оперативке и заряду батареи.
А еще они закрыты, то есть о том, что они могут делать, знает только сама Google.

16.

microG
Скачать пакет с сервисами и приложениями Google для кастомной
прошивки можно с сайта opengapps.org
Именно поэтому на свет появился проект microG, задача которого
— воссоздать самую важную функциональность сервисов
Google в открытом коде. microG позволяет получить доступ к
своему аккаунту, активировать push-уведомления, доступ к
картам Google и определению местоположения по сотовым
вышкам.
И все это при размере в 4МБ и почти полном отсутствии
требований к оперативке и ресурсу батареи.
У проекта есть собственная сборка прошивки LineageOS, которая
из коробки включает в себя microG и все необходимые для его
работы модификации

17.

Ядро Linux и рантайм
Android основан на ядре Linux.
Ядро управляет ресурсами смартфона, в том
числе доступом к железу, управлением
оперативной и постоянной памятью, запуском,
остановкой и переносом процессов между
ядрами процессора и многими другими
задачами.
Как и в любой другой ОС, ядро — это сердце
Android, центральная часть, без которой все
остальное развалится.

18.

19.

Слоеный пирог Android
Наличие ядра Linux, а также частично совместимой со стандартом
POSIX среды исполнения (в первую очередь это библиотека
bionic, основанная на реализации стандартной библиотеки
языка С из OpenBSD) делает Android совместимым с
приложениями для Linux.
Например, система аутентификации wpa_supplicant, применяемая
для подключения к Wi-Fi-сетям, здесь точно такая же, как в
любом дистрибутиве Linux.
В ранних версиях Android использовался стандартный bluetoothстек Linux под названием bluez (позже его заменили
реализацией от Qualcomm под названием Bluedroid).
Здесь даже есть своя консоль с набором стандартных UNIX/Linuxкоманд, реализованных в наборе Toybox, изначально
созданном для встраиваемых Linux-систем.

20.

Linux <-> Android
Большинство консольных приложений, написанных для Linux,
можно портировать в Android простой перекомпиляцией с
помощью кросс-компилятора (главное — использовать
статическую компиляцию, чтобы не получить конфликт
библиотек), а имея права root, на Android-девайсе можно без
всяких проблем запустить полноценный Linux-дистрибутив.
Один нюанс — доступ к нему можно будет получить либо только
через консоль, либо используя VNC -удаленное соединение.
Также существует проект Maru OS, позволяющий использовать
смартфон в качестве ПК на базе Debian при подключении
к монитору.
Ту же функцию обещает Samsung при подключении своих
смартфонов к монитору с помощью дока DeX.

21.

mc, запущенный в Android

22.

SELinux
Начиная с версии 4.4 Android умеет использовать
систему принудительного контроля доступа SELinux
для защиты от взлома и получения прав root.
SELinux разработана Агентством национальной
безопасности США и, если не вдаваться в детали,
позволяет ограничить приложения (в том числе
системные низкоуровневые компоненты) в
возможностях.
Доступ через SELinux выше полномочий, которые
пользователь предоставляет приложениям - доступ
к системным вызовам и доступ к тем или иным
файлам, невзирая на стандартные права доступа
UNIX.

23.

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

24.

Баги устранены?
Все эти баги Google благополучно закрыла, а также поработала над
модуляризацией кода фреймворка и его запуском в специальных
доменах SELinux.
Эти домены запрещают компонентам, ответственным за обработку
мультимедиа, использовать большую часть системных вызовов Linux,
включая системные вызовы группы execve, которые как раз и были
причастны к запуску зловредного кода.
Сегодня SELinux используется для защиты почти всех системных
компонентов Android.
И это стало причиной резкого снижения количества найденных багов в
Android.
Но привело к фокусировке взломщиков на ядре, а точнее тех самых
закрытых драйверах, аудит кода которых никто не проводил и
безопасность которых не гарантирована (а она, как оказалось,
находится в плачевном состоянии).

25.

Программное обеспечение
Приложения под операционную систему Android являются программами в
нестандартном байт-коде для виртуальной машины Dalvik, для них был
разработан формат установочных пакетов .APK.
• Для работы над приложениями доступно множество библиотек:
• Bionic (библиотека стандартных функций);
• мультимедийные библиотеки на базе PacketVideo OpenCORE
(поддерживают такие форматы, как MPEG4, H.264, MP3, AAC, AMR, JPEG и PNG);
• SGL (движок двухмерной графики);
• OpenGL ES 1.0 ES 2.0 (движок трёхмерной графики);
• Surface Manager (обеспечивает для приложений доступ к 2D/3D);
• WebKit (готовый движок для веб-браузера;
обрабатывает HTML, JavaScript);
• FreeType (движок обработки шрифтов);
• SQLite (легковесная СУБД, доступная для всех приложений);
• SSL (протокол, обеспечивающий безопасную передачу данных по сети).

26.

Приложения Android подчиняются
дополнительным правилам
Content Providers — обмен данными между
приложениями;
Resource Manager — доступ к таким
ресурсам, как файлы XML, PNG, JPEG;
Notification Manager — доступ к строке
состояния;
Activity Manager — управление активными
приложениями.

27.

Инструментарий для разработки
Software Development Kit, который предназначен для x86-машин под
операционными системами Linux, macOS (10.4.8 или выше), Windows
XP, Windows Vista и Windows 7. Для разработки требуется JDK 5 или более
новый.
Разработку приложений для Android можно вести на языке Java (не ниже Java
1.5).
Существует плагин для Eclipse — Android Development Tools (ADT),
предназначенный для Eclipse версий 3.3—3.7.
Также существует плагин для IntelliJ IDEA, облегчающий разработку Androidприложений, и для среды разработки NetBeans IDE.
Кроме того, существует Motodev Studio for Android — комплексная среда
разработки на базе Eclipse, позволяющая работать непосредственно с Google
SDK.
В 2009 году в дополнение к ADT был опубликован Android Native Development
Kit (NDK)— пакет инструментариев и библиотек, позволяющий реализовать
часть приложения на языке С/С++. NDK рекомендуется использовать для
разработки участков кода, критичных к скорости.

28.

Android Studio
• В 2013 году Google представила новую
среду разработки Android Studio,
основанную на IntelliJ IDEA от JetBrains.
Ниже пиктограммы Google Android
Nougat, Oreo, Pie:

29.

Развитие
В Android 4.4 появилась возможность сменить
виртуальную машину Dalvik на ART (Android Runtime).
ART отличается повышенной скоростью загрузки
приложения. Проработан механизм оптимизации
памяти.
В Android 5 перерисован дизайн, базирующийся на
концепции Material Design, добавлен режим
энергосбережения Project Volta, выбор машины пропал,
вместо Dalvik стала использоваться ART.
В Android 6 появился интеллектуальный режим расхода
энергии Doze и запрет выхода в Интернет и работы в
фоне давно не используемых приложений App Standby.

30.

APK ( Android Package)
Это формат архивных исполняемых файлов-приложений для Android.
Каждое приложение Android скомпилировано и упаковано в один
файл, который включает в себя весь код приложения (.DEX файлы),
ресурсы, активы (assets), файл манифеста AndroidManifest.xml и
нативные библиотеки (jniLibs). Файл приложения может иметь любое
имя, но расширение должно быть .APK. Например: myAppFile.apk.
Файлы с данным расширением хранятся в магазинах приложений
(например, Google Play), и загружаются с его помощью
в смартфон либо планшетный компьютер для их использования, или
устанавливаются пользователем вручную.
Файлы этого формата не шифруются, являются подмножеством формата
архива ZIP.
Каждый .APK-файл — это сжатый архив для исполнения в виртуальной
машине Dalvik или ART, который может быть установлен не только на
операционной системе Android.

31.

Fuchsia OS
Конечная цель Google больше не в том, чтобы интегрировать ОС со своими
сервисами, а в том, чтобы сделать саму ОС «Гуглом когда для
выполнения задачи пользователю нужно найти, скачать и запустить
приложение. Операционная система должна просто выполнять
просьбы пользователя и подстраиваться под него. И Android плохо
подходит для решения такой задачи.
Ключевые компоненты Fuchsia — это не файлы и приложения, как в
классических операционных системах, а сущности и агенты.
Сущностями в «Фуксии» может быть все что угодно: место, человек,
событие, вещь, email и так далее. Это единицы информации, которые
позволяют операционной системе «понимать», с чем имеет дело
пользователь.
Генерацией сущностей занимаются агенты — специальные компоненты
приложений, предназначенные для анализа потоков информации.
Простейший агент — это maxwell_btl. Его задача — сканировать
отображаемый на экране текст на наличие email-адресов,
генерировать на их основе сущности и отдавать их операционной
системе, а точнее подсистеме Maxwell.

32.

Android 12
Поддержка Ultra Wideband
Изменения в Google Play Store
Усовершенствованная облачная система
резервного копирования
Новые жесты и сторонние лаунчеры
Тотальный контроль за фоновыми
приложениями

33.

Упрощение работы с Виджетами в
12 версии (пример)
• Перенастраиваемые виджеты позволяют пользователям
настраивать виджет в соответствии с желаемыми настройками.
• А с Android 12 им больше не придется удалять и повторно
добавлять виджет, чтобы настроить эти настройки.
• Если хотим, чтобы пользователи могли выбирать между двумя
различными макетами виджетов: Списком покупок и списком
дел. Мы хотели бы использовать Список покупок по умолчанию,
чтобы пользователю не нужно было проходить этап настройки,
если он не хочет переключиться на список дел.
• Чтобы реализовать этот вариант использования, вы можете
сохранить выбор пользователя и вернуть список покупок по
умолчанию, если предыдущий выбор не был сделан.

34.

• С этим изменением
виджет автоматически
использует макет списка
покупок, когда
пользователь добавляет
его на главный экран.
Поскольку действие
настройки добавляется в
атрибут configure
поставщика appwidget,
оно запускается, когда
пользователь долго
нажимает виджет и
нажимает кнопку
изменить/перенастроит
ь.

35.

Адаптивные макеты
Использование ограничений по размеру может помочь
пользователям изменить размер виджета в
соответствии с их потребностями, вы можете
предоставить различные макеты и типы контента,
которые будут использоваться в зависимости от
размера виджета.
Это также позволяет системе отображать виджет в другом
размере, не пробуждая приложение.
Для этого сначала создайте набор макетов для диапазона
размеров, затем вызовите функцию updateAppWidget()
и передайте набор макетов, как показано в примере
ниже.
Система автоматически изменяет макет при изменении
размера виджета.

36.

37.

Android 12 добавляет новые атрибуты appwidgetprovider в
дополнение к существующим MinWidth, minHeight, minResizeWidth
и minResizeHeight.
Выможете использовать новые атрибуты max
Resize Width и max Resize Height для
определения максимальной высоты и
ширины, которые пользователи могут
изменять размер виджета.
Новые атрибуты Ширины целевой ячейки и
высоты целевой ячейки определяют размер
виджета по умолчанию на главном экране
устройства.

38.

………………………………………………….
Ветшают дни, проходит человек,
Но небо и земля — извечно те же.
Поэтому живи текущим днём.
Благослови свой синий окоём.
Будь прост, как ветр, неистощим, как море,
И памятью насыщен, как земля.
Люби далёкий парус корабля
И песню волн, шумящих на просторе.
Весь трепет жизни всех веков и рас
Живёт в тебе. Всегда. Теперь. Сейчас.
Дом Поэта М. Волошин

39.

Далее OS Android
Android studio
Fragments, Activity, Components, Life cycle
Разработка UI, material design
Выходим в интернет
Тестирование и публикация приложения
Android architecture components
RxJava, Dagger 2
Проектная работа и т.д.

40.

Об IDE
Android-студия является интегрированной средой разработки (IDE) для разработки
Android приложений, основанный на IntelliJ IDEA.
На вершине мощный редактор кода и набор инструментов IntelliJ,
в Android-студия предлагает еще больше возможностей, которые повышают
производительность при создании приложений для Android, такие как:
Гибкая система сборки на основе Gradle
Быстрый и многофункциональный эмулятор
Унифицированная среда, в которой вы можете разработать приложения для всех
Android устройств
Instant Run, чтобы подтолкнуть изменения в запущенном приложении без создания
нового APK
Шаблоны кода и интеграция GitHub, чтобы помочь вам построить общие черты
приложения и примеры кода импорта
Обширные инструменты тестирования
Lint инструменты, чтобы оценить производительность, удобство использования,
совместимость версий и другие проблемы
C ++ и поддержка NDK
Встроенная поддержка Google Cloud Platform, что позволяет легко интегрировать Google
Cloud Messaging и App Engine

41.

Cхема проекта
Каждый проект в Android Studio содержит один или несколько модулей с кодом
исходных файлов и файлов ресурсов. Типы модулей включают в себя:
• Модули Android App
• модули Библиотека
• Модули Engine Google App
По умолчанию Android Studio отображает файлы проекта в Android окне проекта.
Это представление организовано с помощью дополнительных модулей, чтобы
обеспечить быстрый доступ к основным исходным файлам вашего проекта.
Все файлы сборки видны на верхнем уровне под Gradle сценариев и каждый
модуль приложения содержит следующие папки:
• manifests: Содержит файл AndroidManifest.xml.
• Java: Содержит файлы исходного кода Java, в том числе тест JUnit кода.
• res: Содержит все ресурсы без кода, такие как XML-макеты, строки
пользовательского интерфейса и растровых изображений.
Android структура проекта на диске отличается от этого представления. Чтобы
увидеть реальную структуру файла проекта, выберите проект из
выпадающего меню Project (на рисунке 1, это показывает, как Android).
Вы также можете настроить вид файлов проекта, чтобы сосредоточиться на
конкретных аспектах вашей разработки приложений.

42.

Андроид - проект

43.

IDE структура
• Панель инструментов позволяет выполнять широкий спектр действий,
в том числе запуск приложения и запуск Android инструментов.
• Панель навигации позволяет перемещаться по проекту и открывать
файлы для редактирования. Это обеспечивает более компактное
представление структуры видимого в окне проекта.
• Окно редактора, где можно создавать и изменять код. В зависимости
от типа текущего файла, редактор может измениться. Например, при
просмотре файла макета, редактор отображает редактор Layout.
• Панель инструментов окна проходит вокруг внешней стороны окна
IDE и содержит кнопки, которые позволяют развернуть или свернуть
отдельные окна инструментов.
• Инструментальные окна дают вам доступ к конкретным задачам, как
управление проектами, поиск, управление версиями, и многое
другое. Вы можете расширить их и свернуть их.
• В строке состояния отображается состояние вашего проекта и самого
IDE, а также каких-либо предупреждений или сообщений.

44.

Комбинации клавиш для некоторых
полезных окон инструментов.
Окно инструментов
Проект
Alt + 1
Контроль версий
Alt + 9
Run
Shift + F10
Отлаживать
Shift + F9
Android-монитор
Alt + 6
Вернуться в редакцию
Esc
Скрыть все Окна инструментов Ctrl + Shift + F12
Если вы хотите, чтобы скрыть все панели инструментов, окна инструментов и вкладки
редактора, нажмите View > Enter Distraction Free Mode (Отвлечение в свободный режим).
Для выхода из режима Отвлечение в Свободный режим , выберите View > Exit Distraction Free
Mode.
Вы можете использовать Скорость поиска для поиска и фильтрации в большинстве окон
инструментов в Android Studio. Чтобы использовать функцию быстрого поиска, выберите
окно инструмента, а затем введите поисковый запрос.

45.

Завершение кода
Android-студия имеет три типа завершения кода, который вы можете
получить доступ с помощью сочетания клавиш.
Комбинации клавиш для завершения кода.
Отображает основные предложения для переменных, типов, методов,
выражений и так далее.
Если вы вызываете базовое завершение два раза подряд, вы видите
больше результатов, в том числе private-члены и статические члены.
Control + Пробел
Отображает соответствующие параметры на основе контекста.
Смарт завершение для ожидаемого типа данных.
Если вы вызываете Смарт Завершение два раза подряд, вы видите
больше результатов, в том числе цепей.
Ctrl + Shift + Пробел
Завершает текущее выражение для вас, добавив недостающие скобки,
скобки, фигурные скобки, форматирование и т.д.
Ctrl + Shift + Enter
Можно также выполнить быстрые исправления, нажав Alt + Enter.

46.

Завершение кода

47.

Система сборки Gradle
Android-студия использует Gradle в качестве основы системы сборки, с большим количеством
Android-специфических возможностей, предоставляемых Android плагин для Gradle.
Эта система сборки работает как интегрированный инструмент из меню Android Studio и
независимо друг от друга из командной строки.
Вы можете использовать функции системы сборки, чтобы сделать следующее:
• Настройка - настроить и расширить процесс сборки.
• Создание нескольких файлов APK для вашего приложения, с различными функциями,
используя один и тот же проект и модули.
• Повторное использование кода и ресурсов через sourcesets.
Используя гибкость Gradle, вы можете достичь всего этого, не изменяя исходные файлы ядра
вашего приложения.
Android-студия строит файлы с помощью build.gradle.
Они простые текстовые файлы, которые используют синтаксис Groovy для настройки сборки с
элементами предоставленных Android плагин для Gradle.
Каждый проект имеет один файл сборки верхнего уровня для всего проекта и отдельных файлов
сборки уровня модуля для каждого модуля.
При импорте существующего проекта, Android Studio автоматически создает необходимые файлы
сборки.

48.

Термины
• Bundle Объект-песочница
-контейнер, в который можно загрузить различные типы и строки и затем получить эти значения
обратно. Используется для передачи данных при перезагрузке активности, передаче в другую
активность и т.д.
• contentDescription
• Android Studio постоянно ругается на отсутствие данного атрибута android:contentDescription у
многих компонентов. Отсутствие атрибута не является ошибкой, а только предупреждением. Если
вы добавите атрибут, то его значение будет зачитано вслух, если пользователь активировал
инструменты для воспроизведения текста в настройках специальных возможностей.
• Context
Абстрактный класс, предоставляющий доступ к ресурсам и другим вещам.
• Gravity
Выравнивание элементов. В Android есть два сходных атрибута выравнивания: android:
gravity и android: layout_gravity.
• Intent -Намерение.
Механизм для описания одной операции - выбрать фотографию, отправить письмо, сделать звонок,
запустить браузер и перейти по указанному адресу.
В Android-приложениях многие операции работают через намерения. Подробнее...
• URI
Специальный класс для работы адресами - путь к файлу, ресурсу, координатам и т.д.
• Weight
Определяет вес элемента.

49.

Основные компоненты Android
Activity (Активность, Деятельность) — представляет собой экран пользовательского интерфейса,
который представлен классом Activity и разметкой в виде XML-файла (разметку можно создать и
программно, но теперь так не делают). Android-приложение способно состоять из нескольких
форм (Activity) и может переключаться между ними во время выполнения приложения
Intents (Намерения) — асинхронные сообщения, которые позволяют приложению запросить
функции из других служб или действий. Приложение может делать прямые запросы службе или
действию (явное намерение) или запросить у Android зарегистрированные службы и приложения
(неявное намерение). Для примера, приложение может запросить через Intent приложение
Контакты для получения данных или запустить браузер при нажатии ссылки в тексте вашего
приложения.
Views (Представление, Вид, Элемент управления, Компонент) — пользовательский интерфейс,
создаваемый виджетами классов. Это знакомые нам элементы управления: кнопки, текстовые
поля, флажки, переключатели и т.п.
Services (Службы) — выполняют фоновые задачи без предоставления пользовательского
интерфейса (например, проигрывание музыки). Они могут уведомлять пользователя через
систему уведомлений Android.
Content Provider (Контент-провайдер) — предоставляет данные приложениям. С помощью
контент-провайдера ваше приложение может обмениваться данными с другими приложениями.
Broadcast Receiver (Приемник широковещательных сообщений/запросов) — принимает
системные сообщения и неявные намерения, может использоваться для реагирования на
изменение состояния системы. Приложение может регистрироваться как приемник
определенных событий и может быть запущено, если такое событие произойдет.

50.

Создание приложения
Чтобы создать приложение, нам нужно в Android Studio создать проект. При
создании проекта, в нем создается модуль.
В этом модуле мы рисуем экраны приложения и пишем код. И при запуске этого
модуля мы получаем готовое приложение. Поэтому модуль по сути и является
приложением. А проект - контейнер для модуля.
Т.е. в самом простом случае структура проекта такова:
Есть проект, и в нем есть модуль. При запуске проекта запускается модуль и мы
получаем Android-приложение, которое создано в этом модуле.
В этом случае: один проект = одно Android-приложение (один модуль).

51.

В одном проекте может быть
несколько модулей
• Здесь в первом проекте созданы два модуля, а во втором проекте –
три модуля.
• При запуске какого-либо проекта необходимо будет указать, какой
именно модуль вы хотите запустить. И каждый модуль является
отдельным Android-приложением.
• Т.е. в этом случае: один проект = несколько Android-приложений
(несколько модулей).

52.

Запуск проекта
В левой части app – это модуль. По умолчанию при создании проекта создается
модуль app. Нам он не интересен, т.к. мы будем создавать свои модули. Удалять
его вам не нужно.

53.

Создадим в проекте свой модуль
• Чтобы создать модуль – в меню выбираем File -> New module
• Тип модуля выбираем Phone and Tablet Application

54.

Атрибуты модуля
Application/Library name – непосредственно имя приложения, которое будет отображаться в
списке приложений в смартфоне. Пишем тут FirstProject.
Module name – это название модуля. Т.е. это название будет отображаться слева в списке
модулей, там, где сейчас есть app. Package name – имя пакета отредактируем вручную, нажав
edit справа. Оставим там ru.startandroid и добавим точку и имя модуля.
В Minimum SDK выбирайте API 21.
Далее выберите Blank Activity
Finish и ждем

55.

Структура приложения
• Файл AndroidManifest.xml – манифест или конфиг-файл приложения
• В папке java и ее подпапках будет весь, написанный нами, код
приложения
• Папка res используется для файлов-ресурсов различного типа.
• Если проводить аналогию с Windows, то приложение состоит из окон,
называемых Activity.
• В конкретный момент времени обычно отображается одно Activity и
занимает весь экран, а приложение переключается между ними.
• В качестве примера можно рассмотреть почтовое приложение.
В нем одно Activity – список писем, другое – просмотр письма, третье –
настройки ящика. При работе вы перемещаетесь по ним.
• Содержимое Activity формируется из различных компонентов,
называемых View. Самые распространенные View - это кнопка, поле
ввода, чекбокс и т.д.

56.

Приложение
Необходимо заметить, что View обычно размещаются в ViewGroup. Самый
распространенный пример ViewGroup – это Layout.
Layout бывает различных типов и отвечает за то, как будут расположены его
дочерние View на экране (таблицей, строкой, столбцом …)

57.

View
• Слева видим список View, разделенный на группы.
Здесь отображены все View-элементы, которые вы
можете использовать в своих приложениях.
• Обратим внимание на белый экран. Мы видим, что на
экране сейчас присутствует элемент с текстом Hello
world! Чтобы узнать, что это за View нажмите на этот
текст.
• Справа во вкладке Component Tree вы видите все
элементы, которые описаны в этом layout-файле.
• Видим, что выделенный нами элемент – это TextView.
Это элемент, который умеет отображать текст. Обратите
внимание, что он вложен в элемент RelativeLayout – это
один из видов ViewGroup.

58.

Основные ссылки
1.
2.
3.
4.
5.
6.
https://developer.android.com/
https://ru.wikipedia.org/wiki/Android
https://tech-geek.ru/category/android/
http://developer.alexanderklimov.ru/
http://developer.alexanderklimov.ru/git.php
https://tech-geek.ru/fuchsia-os/
English     Русский Rules