Папки в Android-смартфоне и что они означают — android.mobile-review.com
24 января 2017
Константин Иванов
По материалам androidauthority.com
Файловые менеджеры на Android могут быть удобным инструментом для организации хранения данных в вашем смартфоне, но сама структура Android (или ее кажущееся отсутствие) c непривычки может показаться несколько запутанной. Данные приложений, картинки, музыка – и доступ к этому всему из одной корневой папки – это несколько иной подход к иерархической структуре, чем то, к чему привыкли пользователи ПК и Mac, и подход этот дает пользователям намного больше возможностей, чем iOS.
В Android вы не сможете получить доступ к глубоко спрятанным системным файлам через обычный файловый менеджер или с помощью подключения к ПК. Но это не значит, что вы можете удалить по своей прихоти любой файл, какой захотите. Давайте посмотрим, как организованы типичные папки в памяти устройства, для чего они нужны и что из этого вы можете удалить, а что нет.
Иерархия памяти устройства на Android
Поскольку Android – это операционная система на базе Linux, в вашем телефоне файловая система также организована по принципу Linux. В этой системе на каждом устройстве есть шесть основных разделов: boot, system, recovery, data, cache и misc. Карты памяти microSD также имеют собственную иерархию памяти. Устройства, несущие на борту Android 7.0 Nougat, получили возможность непрерывного обновления за счет того, что в пару к системному разделу создается второй и один из них в фоне обновляется, а при перезагрузке происходит переключение, позволяющее обновленной системе заработать.
Вот краткое описание того, что содержится в каждой папке.
- boot – Эта папка содержит ядро, виртуальный диск и др., то есть то, что требуется для загрузки телефона, когда вы его включаете.
- system – Папка system содержит файлы операционной системы (также известные как образ системы), которые включают в себя также графический интерфейс Android и предустановленные приложения.
- recovery – Альтернативная возможность загрузить ОС, программы из папки recovery позволяют пользователю делать бэкапы других папок и восстанавливать их.
- data – Папка data сохраняет информацию пользователя, от контактов и сообщений до приложений и музыки, и вот к этому разделу вы имеете доступ через файловый браузер. После сброса до заводских настроек этот раздел стирается.
- cache – Android хранит здесь часто используемые данные и компоненты приложений. Этот раздел может быть стерт для устранения определенных проблем и автоматически восстановлен и обновлен со временем.
- misc – Этот раздел содержит другую важную информацию о настройках системы, такую как конфигурация USB, настроек сети вашего оператора и другие аппаратные настройки, которые в графическом интерфейсе отображаются в виде переключателей вкл./выкл.
Без root–прав пользователи Android могут иметь доступ только к разделу с данными, который открывается вам, когда вы подключаете устройство к своему ПК или используете файловый браузер. Если память вашего телефона может быть расширена при помощи карты, память карты также включается в этот раздел с данными, доступными через ПК или просмотрщик файлов.
Обычно у вас есть доступ только данным приложений, которые хранятся в разделе пользовательских данных. Для доступа к остальной памяти вам потребуются root-права
Приложения и папки в разделе данных
Итак, бегло окинув взглядом основные папки, мы отметили, что у нас нет доступа к загрузочным файлам, файлам восстановления и или системным файлам Android, когда мы просто просматриваем файлы при помощи браузера. Из чего следует утешительный вывод: нельзя просто так взять и вызвать своими действиями крах системы. Совсем другая ситуация возникает, когда у вас есть root-права. Так или иначе, с тем, что хранится в данном разделе, надо быть поаккуратнее: определенные приложения могут задействовать данные, которые здесь сохранены, и перемещение или удаление их может повлечь за собой нестабильную работу системы.
Теперь давайте посмотрим, что находится в разделе данных на вашем устройстве. Для того, чтобы это было возможно, в телефонах с Android версий Marshmallow или Nougat есть свой файловый менеджер, который дает доступ ко всему разделу. Эту опцию можно найти в меню Настройки- Память-Накопитель-Другое. Ряд аппаратов на более старых версиях Android могут иметь, а могут не иметь собственный файловый менеджер, зависит от производителя.
В качестве альтернативы есть множество сторонних приложений, доступных в Play Store, которые выполняют ту же самую роль, например, FX File Explorer или Total Commander.
Можно также управлять вашими файлами с вашего ПК при помощи подключения по USB. Стоит только удостовериться, что ваш телефон находится в режиме MTP (Передача файлов), чтобы вы могли видеть все свои файлы.
Получить доступ к памяти вашего устройства можно при помощи ПК или напрямую через файловый браузер
Если у вас есть ощущение, что память устройства выглядит переполненной и папок слишком много, приглядитесь к ним. Вы увидите многочисленные папки, связанные с приложениями, возможно, даже остатки от тех приложений, что вы уже удалили. Как правило, лучше не трогать никакие папки приложений, но если вы помните, что приложение было удалено, а папка от него осталась, ее удаление вреда не причинит. Скорее всего, она пустая или в ней остались какие-то бесполезные лог-файлы.
Даже если вы не устанавливали большого количества приложений, по умолчанию этот раздел с пользовательскими данными может содержать ряд папок – в них хранятся ваши контакты, музыка, картинки и все остальное. Вот самые основные папки, не связанные со сторонними приложениями, которые вы можете найти.
- Android – это место, куда по умолчанию сохраняются кэш приложений и данные. Эту папку не рекомендуется удалять, если вы не хотите потерять данные приложений. Удаление этой папки может привести к некорректной работе некоторых из них.
- Alarms, Ringtones, Notifications – как видно из названий, в этих папках хранятся аудиофайлы для будильников, рингтонов и уведомлений, которые могут быть использованы как дефолтными, так и сторонними приложениями.
- Cardboard – здесь хранятся данные для ряда приложений VR, а если таковых нет, она остается пустой.
- DCIM – здесь лежат фотографии, которые вы делали при помощи своего основного приложения камеры. Также вы можете увидеть такую папку и на карте microSD, если вы сохраняете фотографии и на нее.
- Downloads – здесь находится все, что скачано вами в веб-браузере, например, в Chrome или Firefox.
- Pictures, Music, Movies, Video – Это папки, которые по умолчанию используются вашими медиаприложениями. Некоторые приложения позволяют вам назначать другие папки, но большая часть медиаплееров по умолчанию будет использовать эти директории. Скриншоты чаще всего сохраняются в папке с картинками.
- Podcasts – Эта папка используется рядом приложений, чтобы отделять подкасты от остальных музыкальных файлов. Если вы не пользуетесь приложениями для прослушивания подкастов, она будет пустой.
Итак, какие папки мне можно (или нужно) удалять?
Не уверен – не удаляй. Это справедливо для всех папок приложений, и трогать их не стоит, за исключением тех случаев, когда вы точно знаете, что хотите сделать. Добавлять и удалять файлы из любых папок с медиа абсолютно безопасно, но постарайтесь в порыве наведения порядка не снести саму папку. Если вы видите, что папка пуста, например, ничего нет в папке Alarms, вы, можете подумать, что она и сама не нужна. Но, с другой стороны, папка не занимает много места. И возможно, она потребуется какому-либо приложению впоследствии, поэтому так ли вам необходимо ее удалять?
Со временем встроенная память вашего устройства будет содержать гораздо больше папок, чем было перечислено выше. Вы будете устанавливать и удалять все большее число приложений. Поэтому наводить порядок в своем устройстве никогда не повредит, ну, разве что вы вообще редко перемещаете файлы в своем телефоне, скачиваете и удаляете их. И еще, удаление пустой папки не освободит вам дополнительного места в памяти.
Теперь, когда вы получили более полную картину того, что это за папки хранятся в памяти вашего устройства, вам будет проще управлять своими файлами, не боясь «сделать что-нибудь не то».
Структура и назначение файлов и папок в Android
По умолчанию Google не оснащает девайсы под управлением Android полноценным файловым менеджером, поскольку это противоречит политике компании. Доступ к различным файлам осуществляется с помощью соответствующих приложений – фото, видео, текстовый редактор и т. д. Но рано или поздно необходимость доступа непосредственно к файлам всё же возникает.
Работа со структурой папок и файлов в Android.Содержание
- 1 Понимание файловой системы
- 2 Как управлять файлами и использовать файловую систему на Android
- 2.1 Как получить доступ к встроенному файловому менеджеру Android
- 2.
2 Сторонний менеджер
- 3 Как добавить свои собственные мелодии и звуки уведомлений
- 3.1 Шаг 1. Загрузка аудио на устройство
- 3.2 Шаг 2. Скопируйте звуковые файлы в соответствующую папку
- 3.3 Шаг 3. Перезагрузите смартфон
- 4 В какой папке находятся контакты и другие данные
Понимание файловой системы
В какой папке находятся контакты и другие данные на Android? Формат файловой системы Android не похож на оболочку Windows. Вот как организована внутренняя память здесь:
- Память устройства – это память, с которой вы будете работать. Здесь вы сможете использовать и изменять любые файлы. Как проводник Windows или Mac. Здесь хранятся данные некоторых приложений – фотографии, видео, кэш игр или интернет-браузера и т. д.
- SD-карта – на многих устройствах Android также есть слоты для SD-карт. Вы можете подключить SD-карту к компьютеру или другому устройству, загрузить на неё файлы и затем вставить в смартфон. Если вы используете устройство на Marshmallow и SD-карту, отформатированную для использования в качестве внутреннего накопителя, она не будет отображаться в файловом менеджере отдельно, а вместо этого станет частью вашего устройства.
- Root – в Android есть специальная корневая папка, в которой хранятся данные операционной системы, конфиденциальная информация и т. д. Большинство файловых менеджеров не могут вносить здесь изменения из соображений безопасности. Если только у вас нет доступа root и файлового менеджера, способного его использовать. Получение root и доступ к системным данным требуют знаний об устройстве системы и назначении её компонентов, поэтому новичкам лучше не рисковать.
Память устройства будет содержать несколько папок, созданных Android. Некоторые из них генерируются и используются приложениями для хранения кэш-файлов, поэтому не следует их изменять или удалять. Но если удалить только их содержимое, можно освободить немало места. Как найти директории загрузок или Bluetooth? Вот они:
- Все фотографии с камеры телефона сохраняются в этой папке, как и на других цифровых камерах. Они отображаются в утилитах «Галерея» или «Фото», но физически находятся здесь. Это касается и хранения видеофайлов.
- Bluetooth – говорит само за себя;
- Download. Здесь располагаются загрузки браузера. Их можно свободно изменять, удалять или перемещать. Скачанные файлы можно экспортировать на любой накопитель.
- Movies, Music, Pictures, Ringtones, Video. Это папки, предназначенные для хранения ваших личных медиафайлов. Необходимы для быстрого доступа и синхронизации Android-смартфона с ПК.
- папка System хранит все системные настройки и данные всех приложений смартфона.
Вы можете просматривать эти папки из любого файлового менеджера. Один щелчок по файлу отобразит список установленных приложений, которые его поддерживают. Вы можете работать с хранящимися здесь данными напрямую, открывая их как на ПК.
Как управлять файлами и использовать файловую систему на Android
Прозрачность и функциональность файловой системы Android является одним из её преимуществ перед iOS. Она позволяет вам легко работать с файлами, открывая их в любом приложении… если вы знаете, как это сделать и куда устанавливаются новые приложения. Android по умолчанию оснащён портированным файловым менеджером. Некоторые производители предварительно устанавливают собственные, более мощные утилиты. В противном случае для полноценного управления файловой структурой Android понадобится стороннее приложение. Вот что вам нужно знать.
Как получить доступ к встроенному файловому менеджеру Android
В устройствах Android 6.x (Marshmallow) или новее есть встроенный файловый менеджер, он просто скрыт в настройках. Откройте Настройки-Память-Другое, и вы получите полный список всех файлов и папок в памяти смартфона. Приложение также можно вывести отдельным ярлыком на рабочий экран. В версии Nougat Android 7 файловый менеджер является частью приложения «Загрузки», но по сути это одно и то же. Здесь отображаются определённые типы файлов, такие как изображения, видео, музыка и загрузки. Чтобы получить доступ к полной файловой системе телефона, зайдите в Настройки-Память-Другое.
Сторонний менеджер
Но встроенный менеджер довольно слаб по сравнению с некоторыми вариантами, доступными в Google Play. Для более эффективного управления файлами установите один из доступных файловых менеджеров. Solid Explorer – один из самых популярных файловых менеджеров в Play Market. Он имеет мощные встроенные функции, такие как доступ к облачной учётной записи и возможность запуска двух окон в ландшафтном режиме (на любом устройстве!). Хорошо работает поддержка клиентов и часто выходят обновления. Через 2 недели бесплатная пробная версия закончится, и за дальнейшее использование придётся заплатить 2 доллара.
ES File Explorer – один из лучших root-файл менеджеров, доступных в Google Play Store. Одной из основных особенностей утилиты является использование Корзины, где хранятся недавно удалённые данные. Это бесплатное приложение не только содержит все основные функции управления файлами, но также имеет возможность управлять любыми приложениями на рутированном смартфоне. Возможности утилиты:
- доступ, сортировка, передача, переименование, копирование и вставка, удаление, резервное копирование или восстановление любых файлов и папок на устройствах Android с root;
- сжимайте документы, распаковывайте сжатые данные;
- зашифруйте данные паролем;
- загрузите мультимедиа в облачные сервисы.
Root Browser File Manager – мощный и эффективный проводник с внушительным функционалом. Особенности:
- Измените возможности доступа на смартфоне или других устройствах;
- отправляйте файлы по отдельности или партиями;
- создавайте папки и изменяйте их на своё усмотрение;
- сделайте полную копию, удалите, переименуйте и даже переместите данные на другое устройство;
- сохраните файлы в любом месте на устройстве.
File Manager + позволяет управлять файлами и папками на устройстве, NAS и в облачном сервисе. Управляйте файлами как в локальной папке, так и в облачном хранилище. Поддерживает все действия проводника, такие как просмотр, поиск, навигация по структуре папок, копировать/вставить, вырезать/удалить, переименовать, распаковывать и сортировать. Полный контроль над файлами мультимедиа, документами и APK. Доступ к удалённому или совместному хранилищу, например, к NAS и FTP-серверу. Проанализируйте локальное хранилище, чтобы удалить ненужные файлы.
Если вам необходим доступ к записям календаря или заметкам, необходимо отталкиваться от используемого приложения. Все файлы данных утилит находятся в папке /data/. В File Explorer от NextApp есть новые способы передачи файлов между Android и компьютером, встроена поддержка нескольких Windows, что позволяет одновременно просматривать два окна, а также поддержка большинства форматов файлов и документов, в которых хранятся приложения. Доступ к сетевому компьютеру, включая FTP, WebDAV и SMB. Просмотр аудиоконтента, плейлистов, альбомов и исполнителей.
Как добавить свои собственные мелодии и звуки уведомлений
Гибкая операционная система Android позволяет использовать множество настроек, и одним из наиболее популярных методов персонализировать свой смартфон является установка собственных мелодий и звуков уведомлений. Для этого сначала необходимо разобраться с файловой структурой и правильно определить место, где хранятся рингтоны.
Шаг 1. Загрузка аудио на устройство
Для начала вам нужно скачать мелодию звонка или звук уведомления прямо на ваше устройство Android или перенести её с компьютера на внутреннее хранилище. Android поддерживаются форматы MP3, M4A, WAV и OGG, поэтому практически любой аудиофайл, который вы можете скачать, будет работать.
Шаг 2. Скопируйте звуковые файлы в соответствующую папку
После того, как вы загрузили звуковой файл, вам нужно переместить его в нужную папку. Здесь необходимо использовать сторонний файловый менеджер. Рассмотрим процедуру на примере ES File Explorer. После установки проводника откройте его и перейдите в папку «Download» во внутренней памяти или на SD-карте (в зависимости от настроек девайса). Выделите файл длинным нажатием, затем в меню нажмите Вырезать. Нажмите кнопку «Назад» один раз, чтобы вернуться в предыдущий каталог. Здесь откройте папку Ringtones, затем нажмите «Вставить». Если на вашем устройстве нет папки «Ringtones», просто создайте её.
Шаг 3. Перезагрузите смартфон
После переноса рингтона в нужную папку перезагрузите телефон или планшет, чтобы Android мог увидеть файл. Откройте «Настройки» и перейдите к «Звук и уведомление». Выберите «Рингтон» или «Мелодия уведомления по умолчанию», найдите в списке стандартных сигналов свой и установите его в качестве мелодии звонка. Если вы используете SD-карту, получить доступ к каталогу Android можно также и через cardreader и ПК. При этом могут обнаружиться новые каталоги, которые не отображаются в проводнике Android. Тем более в том случае, если вы используете одну и ту же SD-карту на нескольких устройствах.
В какой папке находятся контакты и другие данные
Доступ к этим документам можно получить только с использованием root и стороннего файлового менеджера. Файл с контактами называется contacts.db или contacts2.db, и располагается по пути:
/data/data/com.android.providers.contacts/databases/
Это файл базы данных, поэтому углубляться в его редактирование не стоит. Чтобы экспортировать контакты в файл и сохранить его на карте памяти или ПК, воспользуйтесь встроенными инструментами. Откройте «Контакты», затем «Меню», выберите «Экспорт» и отметьте нужные контакты, затем выберите «Экспорт на карту памяти» и нажмите ОК. В папке storage/sdcard1 появится документ с расширением .vcf. перенесите его на другое устройство или ПК. Чтобы восстановить контакты, зайдите в меню «Контакты», выберите «Импорт из внутренней памяти». Укажите путь, по которому хранятся контакты на вашем Android и дождитесь окончания копирования.
Текстовые сообщения и MMS также хранятся в паке data:
/data/data/com.android.providers.telephony/ databases/mmssms.db
Для их сохранения или переноса на другой девайс понадобится специальное ПО. Например, SMS Backup & Restore или другое подобное. Такой софт работает по одному принципу – запустите утилиту – Backup SMS – укажите путь для сохранения и дождитесь окончания операции. После этого скопируйте файл на ПК или другое устройство. Восстановить SMS можно с помощью той же утилиты. Выберите Restore SMS, укажите путь где хранятся смс и дождитесь окончания восстановления.
Управление данными и файлами в Android напоминает навигацию по каталогам Windows или Linux. Только здесь необходимо получить специальные разрешения на изменение системных данных – root-права.
структура, назначение папок в файловой системе
Структура файловой системы Android в обычном режиме скрыта от пользователя. Доступ к различным данным осуществляется через соответствующие приложения: галерею мультимедии, контакты, текстовые редакторы и другие. Чтобы вносить изменения в системные настройки и работать непосредственно с файлами, нужно воспользоваться файловым менеджером. Перед внесением изменений необходимо разобраться в тонкостях устройства файловой системы Андроид.
Содержание
- Компоненты
- Что и где находится
- Структура папки data
- Подозрительные папки
- Заключение
Компоненты
Файловая система Андроид-устройств организована несколько иначе, чем привычная Windows. В корневой каталог можно попасть из файлового менеджера (обычно он называется «Проводник», «File Commander», «Total Commander»). Далее появятся доступные разделы памяти, данные в них организованы следующим образом:
- Память устройства.
Папки в ней выглядят так же, как и в Виндовс: в них содержатся файлы разного формата, их можно изменять, удалять и создавать по желанию владельца.
- SD-карта. Внешние накопители не обязательны, однако пользуются большим спросом. В памяти они выделены в отдельный раздел, при желании его можно сделать место установки новых приложений или переместить уже скачанные.
- Root. Корневая папка, в которой сохраняется информация о системных настройках и их изменениях. Для ее открытия необходимо иметь root-права, не каждая программа-менеджер может получить к ней доступ.
При недостатке места встает вопрос об удалении мусора из памяти смартфона. Обычно для того используют специальные приложения, но они не всегда эффективны. Чтобы провести очистку корректно, нужно понять, какие папки можно удалить на Андроиде, а какие трогать нельзя.
Что и где находится
Открывая менеджер системы на андроид-устройствах, неопытный пользователь удивится обилию папок. По названию некоторых можно понять об их содержимом, с другими придется сложнее. Чтобы не совершить ошибок в работе с файлами, желательно ознакомиться с основными элементами каталога:
- Boot. Важная папка, изменять не рекомендуется: в ней содержатся файлы, связанные с ядром системы и виртуальным диском.
- System. Содержит информацию обо всех системных настройках и вносимых изменений.
- Cache. Здесь хранятся временные файлы, создаваемые при работе программ.
- Misc. В эту папку сохраняется информация о настройках сотового оператора, установленных конфигурациях и других параметров.
- Recovery. Этот раздел создается для резервного копирования данных.
- Data. Осуществляет хранение пользовательских данных: фото, видео, загрузок и других.
По умолчанию владелец может работать только с последней папкой, для других нужны специальные права. Обычно пользователю нужны именно файлы из Data, с ними удобно работать даже в встроенном менеджере.
Совет! Если по каким-то причинам неудобно просматривать корневой каталог на экране смартфона, это можно сделать через ПК. Достаточно подключить через USB-шнур устройство и выбрать режим передачи файлов.
Структура папки data
Как отмечалось выше, в этот раздел памяти собраны все файлы, созданные или скачанные пользователем. Над ними можно совершать различные действия: удалять, копировать, изменять или перемещать. Для удобства нахождения они разделены в несколько папок:
- Documents. Содержит документы, созданные в редакторе смартфона.
- Downloads. Здесь сохраняется вся скаченная информация по умолчанию.
- Bluetooth. В эту папку копируются все переданные с помощью Блютуза файлы.
- Podcasts.Папка создается в случае прослушивания подкастов.
- Video, Music, Movies.
Хранение мультимедии, автоматически отображаются в списках соответствующих для их чтения программ.
- Ringtones, Alarms, Notifications и другие. Предназначены для сохранения звуков будильника, рингтона и уведомлений.
Многим пользователей волнует DCIM – что это за папка и почему весит так много. Ответ прост – в нее сохраняются все сделанные снимки и видео. Поэтому ее содержимое легко уменьшить, перенеся элементы на ПК или внешний накопитель.
Подозрительные папки
Некоторые владельцы смартфонов сталкиваются с наличием в корневом каталоге элемента с непонятным названием. Если встретилась папка Dianxin на андроиде, что это такое, разобраться нетрудно. Это продукт китайской прошивки, а точнее, ее пользовательской оболочки. В нее система помещает все файлы, связанные с процессорами и данным работы смартфона. Ее размер может быть большим из-за обилия информации, удалять ее обычным способом бессмысленно – она восстановится вновь.
Многие принимают ее за вирус, ведь обнаруживается эта папка чаще всего случайно. Для полного удаления Dianxin из каталога нужно зайти например в настройки ЕС проводника и снять галочку с пункта «Оповестить о разрешениях приложений». После этого удалить саму папку и перезагрузить устройство.
Также редко, но можно встретить папку chartboost на android, но что это – объяснить сложнее. Она является результатом показа рекламы на устройстве. Обычно она сопровождает игры для детей, это показы баннеров – такой способ монетизации выбрали разработчики. Обнаружить этот элемент непросто, обычно он находится в скрытом режиме на SD-карте. Вреда от него нет, но места в памяти может быть занято немало – до нескольких гигабайт!
Попробовать решить проблему можно двумя способами:
- Запретить запись в файл, оставить только чтение или удалить его. Это делается в настройках самой папки.
- Создать пустой файл без расширения (дубликат), удалив папку со старыми данными.
Если удалить Chartboost таким образом не получится, можно установить файловые менеджеры и применить их. В любом случае, пользы от этой папки нет, она только расходует трафик (реклама появляется при подключении к Интернету) и занимает место.
Заключение
Знание устройства файловой системы позволит быстро работать с каталогом папок в проводнике.
Без root-прав доступ есть только к «безопасным» изменениям, к системным параметрам подобраться без них нельзя. Перед удалением или изменением содержимого памяти смартфона необходимо удостовериться, что это не навредит устройству.
Руководство по архитектуре приложений | Разработчики Android
В этом руководстве собраны передовые методы и рекомендации. Архитектура для создания надежных высококачественных приложений.
Примечание: На этой странице предполагается базовое знакомство с Android Framework. если ты новичок в разработке приложений для Android, ознакомьтесь с основами Android курс, чтобы начать и узнать больше о понятиях, упомянутых в этом руководстве.
Пользовательский опыт мобильного приложения
Типичное приложение для Android содержит несколько приложений компоненты, в том числе виды деятельности, фрагменты, сервисы, контент провайдеры и трансляция приемники. Вы объявляете большинство этих приложений компоненты в манифесте вашего приложения. Затем ОС Android использует этот файл, чтобы решить, как интегрировать ваше приложение в общий пользовательский опыт устройства. Учитывая, что типичное приложение для Android может содержать несколько компонентов и что пользователи часто взаимодействуют с несколькими приложениями за короткое время. со временем приложения должны адаптироваться к различным типам рабочих процессов, управляемых пользователями. и задачи.
Имейте в виду, что мобильные устройства также ограничены в ресурсах, поэтому в любое время операционная система может убить некоторые процессы приложения, чтобы освободить место для новых.
Учитывая условия этой среды, компоненты вашего приложения могут
запускаться индивидуально и вне очереди, а операционная система или пользователь
может уничтожить их в любой момент. Поскольку эти события не находятся под вашим контролем,
вы не должны хранить или хранить в памяти какие-либо данные приложения или состояние в вашем приложении
компонентов, и компоненты вашего приложения не должны зависеть друг от друга.
Общие архитектурные принципы
Если вам не следует использовать компоненты приложения для хранения данных и состояния приложения, как вы должны разработать свое приложение вместо этого?
По мере роста размеров приложений Android важно определить архитектуру, которая позволяет приложению масштабироваться, повышает надежность приложения и делает его легче протестировать.
Архитектура приложения определяет границы между частями приложения и обязанности, которые должна иметь каждая часть. Для удовлетворения указанных потребностей выше, вы должны разработать архитектуру своего приложения, чтобы следовать нескольким конкретным принципы.
Разделение ответственности
Наиболее важным принципом, которого следует придерживаться, является разделение
обеспокоенность. Распространенной ошибкой является написание всего кода в
Деятельность
или Фрагмент
. Эти классы на основе пользовательского интерфейса должны
содержат только логику, которая обрабатывает взаимодействие пользовательского интерфейса и операционной системы. Сохраняя
эти занятия максимально скудны, можно избежать многих проблем, связанных с
жизненный цикл компонентов и улучшить тестируемость этих классов.
Имейте в виду, что у вас нет реализации Деятельность
и Фрагмент
;
скорее, это просто связующие классы, которые представляют контракт между
ОС Android и ваше приложение. ОС может уничтожить их в любое время по желанию пользователя.
взаимодействия или из-за системных условий, таких как нехватка памяти. Чтобы предоставить
удовлетворительный пользовательский опыт и более управляемый опыт обслуживания приложений,
лучше свести к минимуму вашу зависимость от них.
Создание пользовательского интерфейса из моделей данных
Еще один важный принцип заключается в том, что вы должны создавать свой пользовательский интерфейс из моделей данных, предпочтительно стойкие модели. Модели данных представляют данные приложения. Они независимо от элементов пользовательского интерфейса и других компонентов вашего приложения. Это означает что они не привязаны к жизненному циклу пользовательского интерфейса и компонентов приложения, но по-прежнему будут уничтожается, когда ОС решает удалить процесс приложения из памяти.
Постоянные модели идеальны по следующим причинам:
Если вы основываете архитектуру своего приложения на классах модели данных, вы делаете свое приложение более проверяемый и надежный.
Единый источник достоверности
Когда в вашем приложении определен новый тип данных, вы должны назначить Единый источник
Истины (ССОТ) к нему. SSOT является владельцем этих данных, и только SSOT
может модифицировать или мутировать его. Для этого SSOT предоставляет данные с помощью
неизменяемый тип, а для изменения данных SSOT предоставляет функции или
получать события, которые могут вызывать другие типы.
Этот шаблон имеет множество преимуществ:
- Он централизует все изменения определенного типа данных в одном месте.
- Защищает данные, чтобы другие типы не могли их изменить.
- Это делает изменения в данных более отслеживаемыми. Таким образом, ошибки легче обнаружить.
В автономном приложении источником достоверных данных приложения является обычно база данных. В некоторых других случаях источником истины может быть ViewModel или даже пользовательский интерфейс.
Однонаправленный поток данных
Часто используется принцип единого источника достоверности
в наших руководствах с шаблоном однонаправленного потока данных (UDF). В UDF состояние течет только в одном направлении. События , которые изменяют поток данных в
противоположное направление.
В Android состояние или данные обычно поступают из типов с более высокой областью действия. иерархии к более низким. События обычно инициируются типы с меньшей областью действия, пока они не достигнут SSOT для соответствующего типа данных. Например, данные приложения обычно передаются из источников данных в пользовательский интерфейс. Пользователь такие события, как нажатия кнопок, передаются из пользовательского интерфейса в SSOT, где данные приложения изменяются и отображаются в неизменном типе.
Этот шаблон лучше гарантирует согласованность данных, менее подвержен ошибкам, проще в отладке и обладает всеми преимуществами шаблона SSOT.
В этом разделе показано, как структурировать приложение в соответствии с рекомендациями. практики.
Примечание: Рекомендации и лучшие практики, представленные на этой странице, могут быть применены к широкому спектру приложений, чтобы позволить им масштабироваться, улучшать качество и надежность и упростить их тестирование.
Принимая во внимание общие архитектурные принципы, упомянутые в предыдущем раздел, каждое приложение должно иметь как минимум два уровня:
- Слой пользовательского интерфейса , отображающий данные приложения на экране.
- Уровень данных , который содержит бизнес-логику вашего приложения и предоставляет Данные Приложения.
Вы можете добавить дополнительный уровень под названием уровень домена для упрощения и повторного использования взаимодействия между пользовательским интерфейсом и слоями данных.
Рисунок 1. Схема типичной архитектуры приложения. Примечание: Стрелки на диаграммах в этом руководстве представляют зависимости между классы. Например, уровень предметной области зависит от классов уровня данных.Уровень пользовательского интерфейса
Роль уровня пользовательского интерфейса (или уровня представления ) заключается в отображении приложения
данные на экране. Всякий раз, когда данные изменяются, либо из-за взаимодействия с пользователем
(например, нажатие кнопки) или внешний ввод (например, ответ сети),
Пользовательский интерфейс должен обновиться, чтобы отразить изменения.
Уровень пользовательского интерфейса состоит из двух элементов:
- Элементов пользовательского интерфейса, которые отображают данные на экране. Вы строите эти элементы, используя Представления или функции Jetpack Compose.
- Держатели состояния (такие как ViewModel классы), которые содержат данные, предоставляют их пользовательскому интерфейсу и обрабатывают логику.
Чтобы узнать больше об этом слое, см. Слой пользовательского интерфейса страница.
Уровень данных
Уровень данных приложения содержит бизнес-логика . Бизнес-логика
то, что придает ценность вашему приложению — оно состоит из правил, которые определяют, как ваше приложение
создает, хранит и изменяет данные.
Уровень данных состоит из репозиториев , каждое из которых может содержать от нуля до многих источников данных . Вы должны создать класс репозитория для каждого типа
данные, которые вы обрабатываете в своем приложении. Например, вы можете создать MoviesRepository
класс для данных, связанных с фильмами, или PaymentsRepository
класс для данных
связанные с платежами.
Классы репозитория отвечают за следующие задачи:
- Предоставление данных остальной части приложения.
- Централизация изменений данных.
- Разрешение конфликтов между несколькими источниками данных.
- Абстрагирование источников данных от остальной части приложения.
- Содержит бизнес-логику.
Каждый класс источника данных должен нести ответственность за работу только с одним
источником данных, который может быть файлом, сетевым источником или локальной базой данных. Данные
исходные классы являются связующим звеном между приложением и системой для данных
операции.
Чтобы узнать больше об этом слое, см. слой данных страница.
Уровень домена
Уровень домена — это необязательный уровень, который находится между пользовательским интерфейсом и уровнями данных.
Уровень предметной области отвечает за инкапсуляцию сложной бизнес-логики или простая бизнес-логика, которая повторно используется несколькими ViewModels. Этот слой необязательно, потому что не все приложения будут иметь эти требования. Вы должны использовать это только при необходимости — например, чтобы справиться со сложностью или обеспечить возможность повторного использования.
Рисунок 4. Роль уровня предметной области в архитектуре приложения. Классы на этом уровне обычно называются вариантами использования или интеракторами . Каждое использование
case должен нести ответственность за одну функциональность . Например, ваш
приложение может иметь класс
GetTimeZoneUseCase
, если несколько ViewModels полагаются на время
зоны для отображения соответствующего сообщения на экране.
Чтобы узнать больше об этом слое, см. слой домена страница.
Управление зависимостями между компонентами
Классы в вашем приложении зависят от других классов для правильной работы. Ты может использовать любой из следующих шаблонов проектирования для сбора зависимостей конкретный класс:
- Внедрение зависимостей (DI): Зависимость инъекции позволяют классам определять свои зависимости без построения их. Во время выполнения другой класс отвечает за предоставление этих зависимости.
- Сервисный локатор: Шаблон локатора сервисов предоставляет реестр, в котором классы могут получить свои зависимости вместо их построения.
Эти шаблоны позволяют масштабировать код, поскольку они предоставляют четкие шаблоны. для управления зависимостями без дублирования кода или усложнения.
Кроме того, эти шаблоны позволяют быстро переключаться между тестовым и
производственные реализации.
Мы рекомендуем следовать шаблонам внедрения зависимостей и использовать Hilt библиотека в приложениях для Android. Рукоять автоматически создает объекты, обходя дерево зависимостей, предоставляет гарантирует время компиляции для зависимостей и создает контейнеры зависимостей для Классы фреймворка Android.
Общие рекомендации
Программирование — это творческая область, и создание приложений для Android не является исключением. Есть много способов решить проблему; вы можете передавать данные между несколько действий или фрагментов, извлекать удаленные данные и сохранять их локально для автономного режима или обрабатывать любое количество других распространенных сценариев, которые нетривиальны. приложения сталкиваются.
Хотя следующие рекомендации не являются обязательными, в большинстве случаев после
они делают вашу кодовую базу более надежной, тестируемой и удобной в сопровождении в долгосрочной перспективе. пробег:
Не хранить данные в компонентах приложения.
Избегайте назначения точек входа вашего приложения, таких как действия, службы и широковещательные приемники — как источники данных. Вместо этого они должны только координировать с другими компонентами для извлечения подмножества данных, относящихся к этому точка входа. Каждый компонент приложения довольно недолговечен, в зависимости от желания пользователя. взаимодействие со своим устройством и общее текущее состояние системы.
Уменьшить зависимость от классов Android.
Компоненты вашего приложения должны быть единственными классами, которые зависят от платформы Android.
SDK API, такие как Context
или Тост
. Абстрагирование других классов в вашем
приложение вдали от них помогает с тестируемостью и снижает
связь
внутри вашего приложения.
Создайте четко определенные границы ответственности между различными модулями в
ваше приложение.
Например, не распространяйте код загрузки данных из сети по несколько классов или пакетов в вашей кодовой базе. Точно так же не определяйте несколько несвязанные обязанности, такие как кэширование данных и привязка данных, в одном и том же учебный класс. Следуя рекомендуемой архитектуре приложения, помочь вам в этом.
Выставляйте как можно меньше из каждого модуля.
Например, не поддавайтесь искушению создать ярлык, открывающий внутреннюю деталь реализации из модуля. Вы можете выиграть немного времени в краткосрочной срок, но тогда вы, вероятно, многократно возьмете на себя технический долг, поскольку ваш кодовая база развивается.
Сосредоточьтесь на уникальном ядре вашего приложения, чтобы оно отличалось от других приложений.
Не изобретайте велосипед, снова и снова записывая один и тот же шаблонный код.
Вместо этого сосредоточьте свое время и энергию на том, что делает ваше приложение уникальным, и позвольте
Библиотеки Jetpack и другие рекомендуемые библиотеки обрабатывают повторяющиеся
шаблон.
Подумайте, как сделать каждую часть вашего приложения тестируемой по отдельности.
Например, наличие четко определенного API для получения данных из сети делает легче протестировать модуль, который сохраняет эти данные в локальной базе данных. Если вместо этого вы смешиваете логику из этих двух модулей в одном месте, либо распределяете вашего сетевого кода во всей вашей кодовой базе, он становится гораздо более трудно — если не невозможно — эффективно тестировать.
Типы отвечают за свою политику параллелизма.
Если тип выполняет длительную блокировку, он должен быть ответственным для перемещения этого вычисления в правильный поток. Этот конкретный тип знает тип вычислений, которые он выполняет, и в каком потоке он должен выполняться. Типы должны быть безопасными для основного потока, то есть их можно безопасно вызывать из основного потока. не блокируя его.
Сохраняйте как можно больше актуальных и свежих данных.
Таким образом, пользователи смогут пользоваться функциями вашего приложения, даже когда их устройство находится в автономный режим. Помните, что не всем вашим пользователям нравится постоянное высокоскоростное подключения, а даже если они это сделают, они могут получить плохой прием в людных местах. места.
Преимущества архитектуры
Наличие хорошей архитектуры, реализованной в вашем приложении, дает множество преимуществ для проектные и инженерные группы:
- Улучшает ремонтопригодность, качество и надежность всего приложения.
- Позволяет масштабировать приложение. Больше людей и больше команд могут внести свой вклад в одинаковая кодовая база с минимальными конфликтами кода.
- Это помогает при адаптации. Поскольку архитектура обеспечивает согласованность вашего проекта, новые члены команды могут быстро освоиться и быть более эффективными в меньшее количество времени.
- Проверить проще.
Хорошая архитектура поощряет более простые типы, которые вообще проще проверить.
- Ошибки можно исследовать методично с помощью четко определенных процессов.
Инвестирование в архитектуру также напрямую влияет на ваших пользователей. Они приносят пользу от более стабильного приложения, и больше возможностей за счет более производительного инженерная команда. Тем не менее, Архитектура также требует предварительного времени инвестиции. Чтобы помочь вам оправдать это время перед остальной частью вашей компании, возьмите посмотрите на эти тематические исследования, где другие компании делятся своими истории успеха при наличии хорошей архитектуры в своем приложении.
Примеры
Следующие примеры Google демонстрируют хорошую архитектуру приложения. Исследуй их чтобы увидеть это руководство на практике:
- Теперь в Android
- Образцы архитектуры
- Джетньюс
- iosched, приложение Google I/O
- Подсолнечник
- Трекер
Операционная система Android | Базовая структура операционной системы Android
Операционная система Android является системой с открытым исходным кодом. Многие говорят, что это Linux, но это не совсем так. Хотя у него есть ядра, похожие на ядра Linux, это единственное, что похоже. Сегодня мы углубимся во внутренности операционной системы Android, то есть процессы, фреймворк и другие подобные структуры. Итак, давайте начнем с самых основ и заглянем во внутренний корень операционной системы Android.
После выпуска iPhone и Windows Lumia Series, то есть телефонов, связанных с Microsoft Windows, Google захотела сделать то же самое. Но они хотели что-то с открытым исходным кодом. Основная причина этого заключалась в том, что любой мог отладить его, изменить любые изменения по своему усмотрению. Затем пришла идея Linux. Linux — это операционная система с полностью открытым исходным кодом, широко принятая сообществом во всем мире. Это одна из тех операционных систем, которая используется даже больше, чем Windows или Mac OSX. Кроме того, в Linux есть возможность запускать почти все, что можно запустить на Mac или Windows. Таким образом, Google решил разработать операционную систему для мобильного телефона с той же базовой внутренней оболочкой, что и у Linux, чтобы она была совместима практически со всем, а внешняя оболочка развивалась по мере необходимости и так, как это требуется.
Операционная система Android как проект с открытым исходным кодом (AOSP)
Android имеет возможность свободно модифицировать, изобретать и внедрять собственные драйверы и функции устройств. Теперь, если говорить о пяти различных уровнях операционной системы Android. Он выглядит следующим образом:
Как вы можете видеть на изображении выше, первый уровень — это Application Framework, второй — прокси-серверы Binder IPC, третий — системные службы Android, четвертый — HAL или полный форма является аппаратным уровнем абстракции, а последняя — ядром Linux. Теперь, как я уже говорил ранее, вы можете видеть, что единственная часть Linux, из которой состоит операционная система Android, — это ядро Linux. Теперь давайте рассмотрим их все один за другим.
Android Application Framework
Эта App Framework используется разработчиками приложений для Android. Эта часть Android как минимум связана с аппаратным уровнем. Приложения для Android написаны на языке Java. После программирования приложения инструменты Android SDK помогают скомпилировать данные и файлы ресурсов, такие как файлы XML, файлы jar, файлы манифеста и другие изображения и прочее, в один архивный пакет с расширением «.apk». Этот apk-файл можно использовать для установки приложения одним щелчком мыши на устройствах Android. Теперь, поскольку операционная система Android ведет себя как среда Linux, поведение приложения здесь такое же. Каждое приложение рассматривается как отдельный пользователь от другого и работает на своей собственной виртуальной машине. Это делает запрограммированный код приложения изолированным, а также предотвращает его заражение от других, если это явно не указано. Каждое другое приложение имеет свой собственный идентификатор пользователя, а каждый другой процесс имеет свою собственную виртуальную машину.
Платформа приложений Android работает по принципу наименьших привилегий. Принцип наименьших привилегий означает, что всякий раз, когда необходимо запустить новое приложение, но нет доступной памяти, система Android автоматически закроет старое приложение, которое не нужно запускать в фоновом режиме. Это одна из лучших составляющих безопасности операционной системы Android. Этот принцип позволяет каждому приложению иметь только тот доступ, который необходим для выполнения его работы. Таким образом, приложение не может получить разрешение на то, для чего оно не предназначено. Это, в свою очередь, создает очень безопасную среду внутри самой операционной системы Android.
Binder IPC известен как Binder Inter-Process Communication. Этот интерфейс позволяет программисту заставить приложение взаимодействовать с другими приложениями. Чаще общаются не приложения, а процессы. Binder IPC помогает запускать несколько процессов одновременно на параллельном уровне. Эта реализация связывателя получена через ядро операционной системы Android. Теперь возникли вопросы, почему связыватель должен оставаться в ядре и почему он не может работать из механизмов Linux IPC? Основная причина этого заключается в том, что связующее устройство избегает использования ненужного выделения пространства, в отличие от других механизмов IPC в системе Linux. Если вы слышали о термине «магия в питоне», то именно так Binder IPC будет выглядеть для разработчика приложений, поскольку он полностью скрыт от них и просто кажется, что он работает, в отличие от высокоуровневой среды, где вам нужно заставить его работать явно. Это фактически позволяет высокоуровневой структуре взаимодействовать со службами операционной системы Android.
Системные службы операционной системы Android
Служба представляет собой скомпилированный фрагмент кода, который долгое время работает в фоновом режиме операционной системы Android, не предоставляя никакого интерфейса. Любое приложение, будь то пользовательское или системное, может запустить службу, но она все равно будет работать в фоновом режиме, даже если приложение закрыто.
Однако существует два типа служб:
1. Запущенные службы
Запущенные службы обычно запускаются, когда их вызывает приложение. Однако служба типа Started обычно выполняет только одну операцию и ничего не возвращает.
2. Связанные службы
Связанные службы предлагают интерфейс связи клиент-сервер. Связанная служба работает до тех пор, пока не запустится приложение переднего плана, а затем она останавливается после уничтожения активности приложения.
Системные службы Android предоставляют необходимую информацию пользовательским приложениям для их правильной работы. И эта связь между системными службами и пользовательскими приложениями осуществляется с помощью Binder IPC от ядра. Сейчас это может удивить, но не все приложения для Android написаны на Java. Некоторые из них написаны на C и C++. Те приложения, которые должны находиться в тесном контакте с оборудованием, написаны на C и C++. Основная причина этого заключается в том, что большую часть времени системные службы должны находиться в постоянном контакте с оборудованием. Это делает важным, чтобы скомпилированный фрагмент кода был чрезвычайно быстрым. А когда дело доходит до аппаратного ускорения и высокой производительности, C намного быстрее, чем Java или любой другой язык.
Аппаратные службы, которые постоянно используются, например: датчики приближения, акселерометр или сенсорный экран, должны быть написаны на C. Другое оборудование, такое как камера или звук, в основном использует вызовы JNI. Таким образом, если вы когда-нибудь заметите, сенсорные экраны всегда будут быстрее, чем запуск камеры или воспроизведение песни через музыкальный проигрыватель.
При создании системной службы обратите внимание, что службы, как правило, выполняются в основном процессе, а не создают отдельный процесс. Короче говоря, если ваш код будет выполнять какую-либо работу с интенсивным использованием процессора и графического процессора, например, игры с высоким разрешением, вам следует предпочесть создавать новые потоки в той же службе; в противном случае всегда будет высокая вероятность появления диалогового окна «Приложение не отвечает».
Уровень аппаратной абстракции
HAL или Уровень аппаратной абстракции специально разработан для поставщиков. Разработчикам приложений тут почти нечего делать. Этот слой помогает вставлять функциональность без каких-либо изменений в системе. Каждая другая система имеет другой дизайн HAL, поскольку они созданы для конкретных устройств. HAL состоит из двух типичных структур: модуля и устройства.
Структура модуля в HAL хранится в виде общей библиотеки в формате .so, которая состоит из основных метаданных, таких как номер версии, автор, разработавший модуль, и тому подобное. Структура устройства — это фактическое аппаратное обеспечение продукта. Подобно структуре модуля, но структура устройства определяет более полную версию общей информации об оборудовании, которая содержит указатели и другие подобные вещи, характерные для каждого оборудования.
В Linux приложения взаимодействуют с базовым оборудованием через системные вызовы. Но в операционной системе Android приложения взаимодействуют с оборудованием через Java API.
Ядро Linux
Компиляция ядра Linux для операционной системы Android аналогична его компиляции для базовой ОС Linux. Разница лишь в том, что версия для Android немного более продвинутая, чем для Linux. Основная причина заключается в том, что ядро Android состоит из дополнительных функций, таких как пробуждение, двойное нажатие для разблокировки и другие подобные функции, встроенные в мобильное операционное устройство. Такие функции, как wakelock, важны, поскольку ядро будет работать на переносном устройстве, и оно должно быть немного более агрессивным в управлении памятью и батареей; в отличие от базового Linux, где управление энергопотреблением не является проблемой. Эти дополнительные требования наводятся в ядре, а не в системе, поскольку они не должны влиять на встроенные драйверы.
Всякий раз, когда вы слышите, как кто-то говорит «это Linux», они обычно имеют в виду ядро, поскольку оно является самой базовой и в то же время самой важной частью любой операционной системы. Основная причина, по которой Android основан на ядре Linux, заключается в том, что его исходный код является открытым. Любой может пойти дальше и модифицировать ядро Linux без каких-либо аппаратных ограничений или даже каких-либо лицензионных отчислений.
Разница между Linux и Android
Итак, теперь мы, наконец, подошли к самому запутанному этапу этого блога: Linux против Android. Люди обычно считают Android дистрибутивом Linux, но я бы сказал, что они правы только на 50%. Всякий раз, когда загружается операционная система Android, она в основном загружает ядро, как и любой другой дистрибутив Linux, но остальная часть программного обеспечения полностью отличается от программного обеспечения Linux. Приложения Linux не будут работать на Android и наоборот, если они не скомпилированы в среде chroot. Библиотеки, присутствующие в типичном дистрибутиве Linux и Android, полностью отличаются друг от друга. По сути, вы не можете получить доступ к корневому терминалу в Android, как в случае с Linux. Это основная причина, по которой люди обычно устанавливают Busybox, SuperSU и его двоичные файлы после рутирования, чтобы иметь более подробный доступ к ядру и оболочке из командной строки. В Android нет оболочки по умолчанию, но вы можете получить ее, установив эмулятор терминала из магазина Google Play. Эмулятор терминала выглядит так:
Среда выполнения Android работает на виртуальной машине Dalvik. Эта виртуальная машина Dalvik на самом деле является интерпретатором языка программирования Java. Вся среда выполнения написана на Java в Android, и, поскольку все приложения Android написаны на Java, приложениям становится намного проще и удобнее работать в виртуальной среде. А так как все приложения и даже среда выполнения написаны на Java, любому разработчику становится намного проще настраивать каждую часть операционной системы. Обычно она разрабатывалась как однопользовательская операционная система (в отличие от леденцов и зефира, где может быть несколько пользователей). Чтобы упростить задачу, позвольте мне представить ее в такой форме. В конце концов, приложения — это не что иное, как процессы Linux, и именно так они обычно работают. А так как выше я сказал, что каждое приложение имеет свой собственный процесс, ядру становится проще создавать отдельный UID для каждого процесса и обрабатывать файлы приложения и память без каких-либо дополнительных усилий.
На самом деле это нечто большее, чем основы операционной системы Android, о которых я упоминал выше. У него есть основной процесс, известный как «Зигота», и он превосходен в том, что делает. Этот процесс фактически запускается с командами инициализации при загрузке андроида. Я не буду вдаваться в подробности, но я думаю, что основ операционной системы Android на самом деле достаточно, чтобы начать работу с Android. Чтобы получить больше информации, вы можете посетить source.android.com и developer.android.com, которые являются официальными веб-сайтами Google для любого обновления для Android.
Рекомендуемые статьи
Вот несколько статей, которые помогут вам получить более подробную информацию об операционной системе Android, поэтому просто перейдите по ссылке.
- Карьера в разработке Android
- iPhone против Android
- Функции операционной системы
- Архитектура Android
Архитектура Android — подробное объяснение
Содержание
show
- Архитектура Android
- Компоненты Android
- 1.
Linux Kernel
- 2. Платформа/Нативные библиотеки
- 3. Время выполнения Android
- 4. Прикладная рамка
- 5. Приложения
- Заключение
- Дополнительные ресурсы

Если вы хотите заложить хорошую основу для разработки под Android, первым делом нужно понять общую архитектуру Android. Чтобы понять архитектуру Android, вы должны подумать о том, как спроектирована и построена операционная система Android, как она разделена на уровни и как она устроена для функционирования в целом. В этой статье мы рассмотрим архитектуру Android, что поможет нам лучше понять, как работают компоненты Android, а также их взаимосвязь друг с другом.
Во-первых, давайте посмотрим, что такое архитектура Android.
Не знаете, что делать дальше?
За 3 простых шага вы можете БЕСПЛАТНО найти персонализированную дорожную карту карьеры в области разработки программного обеспечения
Развернуть в новой вкладке
Архитектура Android
Операционная система Android для устройств с сенсорным экраном ставит ряд проблем, которые необходимо решить при его разработке. Итак, в каком-то смысле архитектура платформы Android состоит из набора программных компонентов, предназначенных для поддержки большого количества устройств на базе Android. Эта мобильная операционная система основана на многоуровневой архитектуре программных стеков, включающих ядро Linux, среду выполнения, вспомогательные библиотеки, структуру приложений, а также набор приложений. При построении такой сложной системы необходимо уделить особое внимание структуре, чтобы убедиться, что все компоненты Android Architect не конфликтуют друг с другом. Архитектура Android полностью защищает многие компоненты от сбоев, сохраняя при этом их независимые функции. Некоторые из преимуществ многоуровневой архитектуры Android можно обобщить следующим образом:
- Благодаря многоуровневой архитектуре Android различные проблемы будут разбиты на части и решаться на разных уровнях.
- Разработчики программного обеспечения для Android могут избежать низкоуровневых проблем при каждой разработке, используя многоуровневую архитектуру.
Вместо этого они могут сосредоточиться на обеспечении ценности для бизнеса, связанной с уровнем, над которым они работают, а не над деталями.
- Разработчикам, работающим над разработкой приложений, не нужно беспокоиться о фактической реализации платформы приложения. Такие обязанности лягут на разработчиков системы, ответственных за реализацию структуры приложения.
- Поскольку Android имеет многоуровневую структуру, можно применять обновления, включающие исправления ошибок или улучшения для каждого уровня независимо. Сохранение независимых изменений внутри слоев имеет решающее значение для обеспечения того, чтобы их эффекты не переплетались друг с другом.
- Разработчики на разных уровнях операционной системы могут работать вместе, не мешая друг другу. Это особенно важно при обновлении и публикации новых версий операционной системы.
Компоненты Android
Чтобы удовлетворить потребности каждого устройства Android, архитектура Android содержит другое количество компонентов, чем архитектура iOS. Систему Android можно определить как набор программных стеков, состоящий из нескольких компонентов. Важно отметить, что среди всех компонентов архитектуры Android ядро Linux отвечает за обеспечение основных функций операционной системы для смартфонов, а также DVM (виртуальная машина Dalvik), которая действует как платформа для запуска приложений Android. Компоненты, составляющие архитектуру Android, следующие:
- Ядро Linux
- Библиотеки платформы
- Среда выполнения Android
- Android Framework
- Приложения
Теперь давайте рассмотрим каждое из них более подробно: , или как бы мы его ни называли в нашем контексте, является одним из наиболее важных компонентов архитектуры Android, который находится в корне (нижнем слое) всей системы. Он управляет всеми драйверами, необходимыми во время работы устройства Android, такими как драйверы камеры, драйверы дисплея, аудиодрайверы, драйверы Bluetooth и драйверы памяти, среди прочих. Среди основных особенностей ядра Linux можно выделить следующие:
- Безопасность: Ядро Linux обеспечивает безопасность между приложением и хост-системой.
- Управление памятью: Эффективно управляет памятью, что позволяет нам разрабатывать собственные приложения, не беспокоясь о распределении памяти.
- Управление процессами: Эффективно управляет рабочим процессом и распределяет ресурсы, когда это требуется процессам.
- Сетевой стек: Способен эффективно и действенно управлять сетевыми коммуникациями.
- Многозадачность: Одной из основных особенностей Linux является поддержка вытесняющей многозадачности. Будучи многозадачной операционной системой с асинхронным выполнением, она позволяет нескольким процессам одновременно использовать одни и те же процессоры (ЦП) и другие ресурсы. ЦП предназначен для выполнения только одной задачи за раз.
Android сильно изменился с момента своего первого выпуска, и ядро Linux, на котором он работает, также развивалось вместе с ним. Ниже приведена таблица, в которой подробно описаны различные версии ядра Linux.
Android Version | Linux Kernel Version | |||||||
---|---|---|---|---|---|---|---|---|
1.5 Cupcake | (2.6.27) | |||||||
1.6 Donut | (2.6.29) | |||||||
2.0/1 Eclair | (2,6,29) | |||||||
2.2.x Froyo | (2,6,32) | |||||||
2.3.x Gingerbread | (2,6,35) | (2,6,35) | (2,6,35) | (2,6,35) | 9047(2,6,35) | 9047(2,6,35) | 9047(2,6,35) | 9047(2,6,35) |
4.0.x Мороженое Сан | (3.0.1) | |||||||
4.1.x Jelly Bean | (3.0.31) | |||||||
4.2.x Jelly Bean | (3.4.0) | |||||||
4.3 Jelly Bean | (3.4 .39) | |||||||
4.4 Kit Kat | (3.10) | |||||||
5.x Lollipop | (3.16.1) | |||||||
6.![]() | (3.18.10) | |||||||
7.0 Nougat | 3.18.48 4.4.0 | |||||||
7.1 Нуга | ||||||||
8.0 Oreo | 3.18,72 4.4.83 4.9.44 | |||||||
8.1 | 3.18.70 4.4.88 4.9.56 | 3.18.70 4.4.88 4.9.56 | 3.18.70 4.4.88 4.9.56 | 3.18.70 4.4.88 4.9.56 | 3.18,70 4.4.88 4.9.56 | 3.18,70 4,88 4.9,56 | 3.18,70 4.4,88 4,1,1482 | 3.18, .61 |
10.0 Q | 4.9.191 4.14.142 4.19.71 |
2. Платформа/собственные библиотеки
уровня ядра Linux. Библиотека предоставляет устройству набор инструкций, которые позволяют ему надлежащим образом обрабатывать различные типы данных. В рамках разработки Android требуются собственные библиотеки, и большинство из этих библиотек имеют открытый исходный код. Это набор основных библиотек C/C++, а также библиотек на основе Java, которые поддерживают разработку под Android, таких как Graphics, Libc, SSL (Secure Socket Layer), SQLite, Media, Webkit, OpenGL (Open Graphic Library), Surface Manager и т. д. Вот некоторые сведения о некоторых ключевых библиотеках Android, доступных для разработки под Android.
- Медиатека, используемая для воспроизведения, записи и редактирования аудио- и видеоформатов.
- Библиотека диспетчера поверхностей, обеспечивающая функции управления отображением.
- Коллекция OpenGL (открытая графическая библиотека) и SGL (масштабируемая графическая библиотека), используемая для создания 2D- и 3D-графики.
- SQLite обеспечивает поддержку базы данных, а FreeType обеспечивает поддержку шрифтов.
- SSL (Secure Socket Layer) обеспечивает безопасность в Интернете, а WebKit обеспечивает поддержку браузера.
3. Среда выполнения Android
Среда выполнения Android является неотъемлемой частью Android. Он содержит такие компоненты, как основные библиотеки и DVM (Dalvik Virtual Machine). Среда выполнения Android вместе с библиотеками обеспечивает работу наших приложений и является основой для платформы.
- Как и JVM (виртуальная машина Java), виртуальная машина Dalvik (DVM) — это виртуальная машина, которая используется для выполнения приложений на Android.
Android использует DVM для оптимизации времени автономной работы, использования памяти и производительности. Благодаря специальному дизайну и оптимизации он может упростить одновременный запуск нескольких экземпляров на устройстве Android. Для работы с потоками и низкоуровневым управлением памятью он использует ядро Linux. Это приводит к более высокой производительности, а также к меньшему использованию памяти.
- Среда выполнения Android предоставляет основные библиотеки, которые позволяют разработчикам приложений Android разрабатывать приложения Android на языке программирования Java.
4. Среда приложений
Среда приложений, стоящая над собственными библиотеками и слоем среды выполнения, предоставляет нам интерфейсы прикладного программирования (API) и службы более высокого уровня. Платформа приложений Android предоставляет классы, интерфейсы и утилиты, которые используются для разработки приложений Android. В эту структуру также включен уровень аппаратной абстракции Android (HAL), который позволяет приложению взаимодействовать с аппаратными драйверами устройств и управлять как пользовательским интерфейсом, так и ресурсами. Его общая цель — предоставить услуги, с помощью которых мы можем создать определенный класс и сделать этот конкретный класс доступным для помощи при создании приложений. Платформа Android включает в себя следующие высокоуровневые сервисы, которые могут быть полезны для разработки мобильных приложений в соответствии с нашими предварительными условиями:
- Диспетчер действий: Играет решающую роль в управлении всеми аспектами жизненного цикла приложений и стека действий.
- Поставщики содержимого: Эти поставщики позволяют приложениям публиковать данные в Интернете и делиться ими с другими приложениями.
- Диспетчер ресурсов: Помогает получить доступ к встроенным ресурсам, не связанным с кодом, таким как строки, настройки цвета и макеты для пользовательских интерфейсов.
- Диспетчер уведомлений: Разрешает приложениям показывать оповещения и уведомления пользователям через пользовательский интерфейс приложения.
- Система просмотра: Он служит базовым классом для виджетов и обрабатывает события.
5. Приложения
Среди уровней архитектуры Android приложения находятся на самом верху. Предварительно установленные на устройстве приложения, такие как контакты, музыка, магазин приложений, камеры, галереи и т. д., а также приложения, загруженные из магазина Google Play, такие как социальные приложения, игры, профессиональные приложения и т. д. будет установлен только на этом слое. Приложения запускаются в среде выполнения Android, используя классы и службы, предоставляемые инфраструктурой приложения. Типичный пользователь Android взаимодействует с этим уровнем в основном для выполнения основных функций, таких как доступ к веб-браузеру, телефонные звонки, просмотр галерей и т. д. Ниже приведены несколько примеров некоторых стандартных приложений, которые предварительно установлены на каждом устройстве:
- SMS Client App
- Dialer
- Clock
- App Store
- Веб -браузер
- Контактные менеджер
- Калькулятор
- Music и т.
Д.
Заключение
В этой статье мы подробно описали архитектуру Android и ее различные уровни, включая ядро Linux, соответствующие библиотеки, среду выполнения Android, структуру приложений и приложения Android.