По умолчанию Google не оснащает девайсы под управлением Android полноценным файловым менеджером, поскольку это противоречит политике компании. Доступ к различным файлам осуществляется с помощью соответствующих приложений – фото, видео, текстовый редактор и т. д. Но рано или поздно необходимость доступа непосредственно к файлам всё же возникает.
Работа со структурой папок и файлов в Android.В какой папке находятся контакты и другие данные на Android? Формат файловой системы Android не похож на . Вот как организована внутренняя память здесь:
Вы можете просматривать эти папки из любого файлового менеджера. Один щелчок по файлу отобразит список установленных приложений, которые его поддерживают. Вы можете работать с хранящимися здесь данными напрямую, открывая их как на ПК.
Прозрачность и функциональность файловой системы Android является одним из её преимуществ перед iOS. Она позволяет вам легко работать с файлами, открывая их в любом приложении… если вы знаете, как это сделать и куда устанавливаются новые приложения. Android по умолчанию оснащён портированным файловым менеджером. Некоторые производители предварительно устанавливают собственные, более мощные утилиты. В противном случае для полноценного управления файловой структурой Android понадобится стороннее приложение. Вот что вам нужно знать.
В устройствах Android 6.x (Marshmallow) или новее есть встроенный файловый менеджер, он просто скрыт в настройках. Откройте Настройки-Память-Другое, и вы получите полный список всех файлов и папок в памяти смартфона. Приложение также можно вывести отдельным ярлыком на рабочий экран. В версии Nougat Android 7 файловый менеджер является частью приложения «Загрузки», но по сути это одно и то же. Здесь отображаются определённые типы файлов, такие как изображения, видео, музыка и загрузки. Чтобы получить доступ к полной файловой системе телефона, зайдите в Настройки-Память-Другое.
Но встроенный менеджер довольно слаб по сравнению с некоторыми вариантами, доступными в Google Play. Для более эффективного управления файлами установите один из доступных файловых менеджеров. Solid Explorer – один из самых популярных файловых менеджеров в Play Market. Он имеет мощные встроенные функции, такие как доступ к облачной учётной записи и двух окон в ландшафтном режиме (на любом устройстве!). Хорошо работает поддержка клиентов и часто выходят обновления. Через 2 недели бесплатная пробная версия закончится, и за дальнейшее использование придётся заплатить 2 доллара.
ES File Explorer – один из лучших root-файл менеджеров, доступных в Google Play Store. Одной из основных особенностей утилиты является использование Корзины, где хранятся недавно удалённые данные. Это бесплатное приложение не только содержит все основные функции управления файлами, но также имеет возможность управлять любыми приложениями на рутированном смартфоне. Возможности утилиты:
Root Browser File Manager – мощный и эффективный проводник с внушительным функционалом. Особенности:
File Manager + позволяет управлять файлами и папками на устройстве, NAS и в облачном сервисе. Управляйте файлами как в локальной папке, так и в облачном хранилище. Поддерживает все действия проводника, такие как просмотр, поиск, навигация по структуре папок, копировать/вставить, вырезать/удалить, переименовать, распаковывать и сортировать. Полный контроль над файлами мультимедиа, документами и APK. Доступ к удалённому или совместному хранилищу, например, к NAS и FTP-серверу. Проанализируйте локальное хранилище, чтобы удалить ненужные файлы.
Если вам необходим доступ к записям календаря или заметкам, необходимо отталкиваться от используемого приложения. Все файлы данных утилит находятся в папке /data/. В File Explorer от NextApp есть новые способы передачи файлов между Android и компьютером, встроена поддержка нескольких Windows, что позволяет одновременно просматривать два окна, а также поддержка большинства форматов файлов и документов, в которых хранятся приложения. Доступ к сетевому компьютеру, включая FTP, WebDAV и SMB. Просмотр аудиоконтента, плейлистов, альбомов и исполнителей.
Гибкая операционная система Android позволяет использовать множество настроек, и одним из наиболее популярных методов персонализировать свой смартфон является установка собственных мелодий и звуков уведомлений. Для этого сначала необходимо разобраться с файловой структурой и правильно определить место, где хранятся рингтоны.
Для начала вам нужно скачать мелодию звонка или звук уведомления прямо на ваше устройство Android или перенести её с компьютера на внутреннее хранилище. Android поддерживаются форматы MP3, M4A, WAV и OGG, поэтому практически любой аудиофайл, который вы можете скачать, будет работать.
После того, как вы загрузили звуковой файл, вам нужно переместить его в нужную папку. Здесь необходимо использовать сторонний файловый менеджер. Рассмотрим процедуру на примере ES File Explorer. После установки проводника откройте его и перейдите в папку «Download» во внутренней памяти или на SD-карте (в зависимости от настроек девайса). Выделите файл длинным нажатием, затем в меню нажмите Вырезать. Нажмите кнопку «Назад» один раз, чтобы вернуться в предыдущий каталог. Здесь откройте папку Ringtones, затем нажмите «Вставить». Если на вашем устройстве нет папки «Ringtones», просто создайте её.
После переноса рингтона в нужную папку перезагрузите телефон или планшет, чтобы Android мог увидеть файл. Откройте «Настройки» и перейдите к «Звук и уведомление». Выберите «Рингтон» или «Мелодия уведомления по умолчанию», найдите в списке стандартных сигналов свой и установите его в качестве мелодии звонка. Если вы используете SD-карту, получить доступ к каталогу Android можно также и через cardreader и ПК. При этом могут обнаружиться новые каталоги, которые не отображаются в проводнике Android. Тем более в том случае, если вы используете одну и ту же SD-карту на нескольких устройствах.
Доступ к этим документам можно получить только и стороннего файлового менеджера. Файл с контактами называется 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 могут быть удобным инструментом для организации хранения данных в вашем смартфоне, но сама структура Android (или ее кажущееся отсутствие) c непривычки может показаться несколько запутанной. Данные приложений, картинки, музыка – и доступ к этому всему из одной корневой папки – это несколько иной подход к иерархической структуре, чем то, к чему привыкли пользователи ПК и Mac, и подход этот дает пользователям намного больше возможностей, чем iOS.
В Android вы не сможете получить доступ к глубоко спрятанным системным файлам через обычный файловый менеджер или с помощью подключения к ПК. Но это не значит, что вы можете удалить по своей прихоти любой файл, какой захотите. Давайте посмотрим, как организованы типичные папки в памяти устройства, для чего они нужны и что из этого вы можете удалить, а что нет.
Поскольку Android – это операционная система на базе Linux, в вашем телефоне файловая система также организована по принципу Linux. В этой системе на каждом устройстве есть шесть основных разделов: boot, system, recovery, data, cache и misc. Карты памяти microSD также имеют собственную иерархию памяти. Устройства, несущие на борту Android 7.0 Nougat, получили возможность непрерывного обновления за счет того, что в пару к системному разделу создается второй и один из них в фоне обновляется, а при перезагрузке происходит переключение, позволяющее обновленной системе заработать.
Вот краткое описание того, что содержится в каждой папке.
Без root–прав пользователи Android могут иметь доступ только к разделу с данными, который открывается вам, когда вы подключаете устройство к своему ПК или используете файловый браузер. Если память вашего телефона может быть расширена при помощи карты, память карты также включается в этот раздел с данными, доступными через ПК или просмотрщик файлов.
Обычно у вас есть доступ только данным приложений, которые хранятся в разделе пользовательских данных. Для доступа к остальной памяти вам потребуются root-права
Итак, бегло окинув взглядом основные папки, мы отметили, что у нас нет доступа к загрузочным файлам , файлам восстановления и или системным файлам Android , когда мы просто просматриваем файлы при помощи браузера. Из чего следует утешительный вывод: нельзя просто так взять и вызвать своими действиями крах системы. Совсем другая ситуация возникает, когда у вас есть root-права. Так или иначе, с тем, что хранится в данном разделе, надо быть поаккуратнее: определенные приложения могут задействовать данные, которые здесь сохранены, и перемещение или удаление их может повлечь за собой нестабильную работу системы.
Теперь давайте посмотрим, что находится в разделе данных на вашем устройстве. Для того, чтобы это было возможно, в телефонах с Android версий Marshmallow или Nougat есть свой файловый менеджер, который дает доступ ко всему разделу. Эту опцию можно найти в меню Настройки- Память-Накопитель-Другое. Ряд аппаратов на более старых версиях Android могут иметь, а могут не иметь собственный файловый менеджер, зависит от производителя.
В качестве альтернативы есть множество сторонних приложений, доступных в Play Store, которые выполняют ту же самую роль, например, FX File Explorer или Total Commander .
Можно также управлять вашими файлами с вашего ПК при помощи подключения по USB. Стоит только удостовериться, что ваш телефон находится в режиме MTP (Передача файлов), чтобы вы могли видеть все свои файлы.
Получить доступ к памяти вашего устройства можно при помощи ПК или напрямую через файловый браузер
Если у вас есть ощущение, что память устройства выглядит переполненной и папок слишком много, приглядитесь к ним. Вы увидите многочисленные папки, связанные с приложениями, возможно, даже остатки от тех приложений, что вы уже удалили. Как правило, лучше не трогать никакие папки приложений, но если вы помните, что приложение было удалено, а папка от него осталась, ее удаление вреда не причинит. Скорее всего, она пустая или в ней остались какие-то бесполезные лог-файлы.
Даже если вы не устанавливали большого количества приложений, по умолчанию этот раздел с пользовательскими данными может содержать ряд папок – в них хранятся ваши контакты, музыка, картинки и все остальное. Вот самые основные папки, не связанные со сторонними приложениями , которые вы можете найти.
Не уверен – не удаляй. Это справедливо для всех папок приложений, и трогать их не стоит, за исключением тех случаев, когда вы точно знаете, что хотите сделать. Добавлять и удалять файлы из любых папок с медиа абсолютно безопасно, но постарайтесь в порыве наведения порядка не снести саму папку. Если вы видите, что папка пуста, например, ничего нет в папке Alarms, вы, можете подумать, что она и сама не нужна. Но, с другой стороны, папка не занимает много места. И возможно, она потребуется какому-либо приложению впоследствии, поэтому так ли вам необходимо ее удалять?
Со временем встроенная память вашего устройства будет содержать гораздо больше папок, чем было перечислено выше. Вы будете устанавливать и удалять все большее число приложений. Поэтому наводить порядок в своем устройстве никогда не повредит, ну, разве что вы вообще редко перемещаете файлы в своем телефоне, скачиваете и удаляете их. И еще, удаление пустой папки не освободит вам дополнительного места в памяти. Так что, если требуется выиграть место, лучше посмотрите, какие вы можете удалить ненужные приложения/фильмы, которые не станете пересматривать и т.п.
Теперь, когда вы получили более полную картину того, что это за папки хранятся в памяти вашего устройства, вам будет проще управлять своими файлами, не боясь «сделать что-нибудь не то».
Одной из популярных операционных систем сегодня является Android. Она установлена на миллионах мобильных устройств . Система представляет собой набор папок и файлов, которые обеспечивают ее работу. Но задумывались ли вы когда-нибудь, что сдержится в каждой папке? Некоторые имеют достаточно большой вес, поэтому рука так и тянется их удалить. Прежде чем это сделать, стоит обязательно ознакомиться, за что каждая папка отвечает, а также насколько важна для операционной системы. Также мы расскажем, какие есть способы удалить ненужную папку.
Первоочередная задача перед удалением – это выяснить, что содержит директория, ведь от этого и зависит, можно удалять ее или нет. Если вы по ошибке сотрете важные файлы, вы не только можете нарушить работу каких-либо приложений, но и привести к полной неработоспособности всю операционную систему.
Стоит отметить, что список папок может отличаться в зависимости от устройства и версии системы android . Также конкретные приложения могут создавать свои папки в памяти телефона на Андроиде. Рассмотрим, какие директории имеются в Андроид.
Cache – это папка для хранения временных файлов. В ней может находиться обновление системы. Если вы не собираетесь обновляться до более свежей версии Андроида, то файл обновления вам не нужен. Удалить эту папку можно, а в некоторых случаях даже нужно.
Data – один из крупнейших каталогов, который, как можно догадаться по названию, содержит разнообразные данные. Сюда входят данные аккаунтов, информация о сохраненных паролях, точках доступа Wi-Fi и т.п. Так как данная папка содержит множество информации, рассмотрим ее подкаталоги:
Папка efs содержит информацию о серийном номере телефона (IMEI), MAC-адресе, Bluetooth и Wi-Fi. Эту директорию удалять нельзя. Более того, рекомендуется сделать бэкап этой папки, так как ее удаление приведет к потере уникального номера вашего смартфона.
Директория etc – содержит файлы конфигурации, преимущественно используемые во время загрузки ОС, процессов различных программ, к примеру, для определения местоположения по GPS. Это одна из системных директорий, удалять которую нельзя.
Каталог lib – в нем содержатся различные библиотеки, необходимые для корректной работы функций программ и модулей. Также данная папка содержит файлы, обеспечивающие работу драйверов. Удалять ее нельзя.
Каталог mnt – содержит образы монтируемых систем. Здесь могут располагаться разделы установленной карты памяти, внутренней памяти или других виртуальных устройств. Удалять данный каталог, естественно, тоже нельзя.
Папка proc – в ней содержится вся ключевая информация касательно установленной ОС Андроид: информация о ядре, параметрах конфигурации и оборудования. Все имеющиеся файлы и папки являются виртуальными, при этом весят ноль байт. Система автоматически создает их, когда пользователь получает доступ к ним. Эту папку с правами обычного пользователя удалить нельзя.
Директория sbin – одна из ключевых папок, необходимых для работы телефона. В ней имеются исполняемые файлы всех программ, предназначенных для управления системой. Ее удалять, соответственно, нельзя.
Каталог sys содержит конфигурацию системы на данный момент . Это динамический каталог. Информация в нем постоянно меняется. Стирать эту папку нельзя.
Раздел system – «хребет» всей операционной системы, так как именно в нем расположены все файлы, без которых невозможна работа android. Каталог System (как и любые другие внутренние директории) удалять нельзя. Для ознакомления рассмотрим подробней содержимое этого каталога:
Documents – папка, в которой могут находиться разнообразные документы, в частности файлы формата.doc и.pdf. Если содержание папки вас не интересует, ее можно удалить.
Bluetooth – содержит все файлы, которые были приняты устройством через «Блютуз». Если важных данных в ней нет, она удаляется без проблем. Может быть расположена не только во внутренней памяти, но и на SD карте.
DCIM – это специальная директория для сохранения фотографий, созданных с помощью камеры вашего смартфона. Как правило, включает в себя раздел Camera, в котором располагаются все фото. Если необходимых для вас фото на телефоне нет, то ее можно удалить. Такие разделы, как Pictures, Images, Audio, Music (при отсутствии важных файлов внутри) также можно удалить.
Как можно удалить конкретную папку? Первый способ – воспользоваться стандартными функциями . Для этого необходимо:
Обратите внимание, что стандартные средства не отображают всех имеющихся папок и файлов, так как часто системные файлы скрыты. Увидеть больше поможет любой сторонний файловый менеджер, например, программа «ES Проводник». Скачать его вы можете в магазине Google Play . Приложение предлагает широкие возможности. С его помощью можно осмотреть имеющиеся папки, а также удалить некоторые из них. Для этого необходимо:
Стоит отметить, что удаление системных папок невозможно, так как пользователь имеет ограниченные права доступа. Удалить их можно только, получив специальные права суперпользователя (аналог в Windows – Администратор).
Вконтакте
Общаясь на форумах и являясь куратором нескольких тем, часто сталкиваюсь с полным непониманием новичков об устройстве андроида. «Ну, а зачем обычному пользователю знать это?» - скажете вы. И тут я с вами соглашусь, задав встречный вопрос: «А зачем тогда обычный пользователь лезет в дебри прошивок, root доступа и твиков системы, не понимая в этом ничего?». Именно это и натолкнуло меня на написание данной статьи, в которой я попытаюсь, обычным и понятным языком, донести сложные вещи.
Материал направлен, в первую очередь, на обычных пользователей. Поэтому здесь будет представлена сжатая и поверхностная информация без технических углублений и нюансов.
Внутренняя память устройства на андроиде разбита на несколько логических дисков (разделов).
Приведу только основные:
Рис.1
Bootloader – здесь находится микропрограмма (загрузчик), позволяющая запускать операционную систему, рекавери и другие сервисные режимы.
Recovery – как видно из названия, тут установлено инженерное меню восстановления или просто Рекавери.
Boot – сердце Андроид ОС, тут находится ядро, драйвера и настройки управления процессором и памятью.
System – системный раздел , в котором находятся все, необходимые для работы Android ОС, файлы, это как папка Windows на вашем диске С:\ (здесь и далее буду проводить ассоциацию с ОС Windows )
Data – раздел для установки приложений и хранения их данных. (Program files )
User – это всем известная sdcard или, проще говоря, место под пользовательские файлы (Мои документы). Здесь я вынужден сделать отступление, т.к. размещение данного раздела имеет несколько вариантов:
Рис.2
Теперь, когда мы знаем, что и где находится, давайте разберемся для чего оно там.
Начнем с Bootloader . Это загрузчик, который запускает Андроид, рекавери и т.п. Когда мы нажимаем кнопку включения, запускается загрузчик и, если нет дополнительных команд (зажатых клавиш), запускает загрузку boot . Если же была зажата комбинация клавиш (у каждого устройства она своя) то запускает, в зависимости от команды, recovery, fastboot или apx. На рисунке ниже наглядно показано, что запускает Bootloader и как взаимосвязаны разделы.
Рис.3
Как видно из рисунка №3, раздел Recovery не влияет на загрузку Андроид ОС, но зачем же он тогда нужен? Давайте попробуем разобраться.
Recovery (рекавери) по сути является маленькой утилитой на ядре Linux и загружается не зависимо от Андроид. Его штатный функционал не богат: можно сбросить аппарат до заводских настроек или же обновить прошивку (заранее скачанную на sdcard ). Но, благодаря народным умельцам, у нас есть модифицированные рекавери, через которые можно устанавливать модифицированные (кастомные) прошивки, настраивать андроид, создавать резервные копии и многое другое. Наличие или отсутствие рекавери, а также его версия не влияют на работоспособность Андроид ОС (очень частый вопрос на форумах).
Особо внимательные читатели могли заметить на Рис.3 некий Fastboot . Это интерфейс для работы напрямую с разделами внутренней памяти, при помощи командной строки . Через него можно прошить рекавери, ядро или новую версию прошивки, или же форматировать (удалить всю информацию) тот или иной раздел.
Раз уж зашла речь об интерфейсах, хочу рассказать о еще одном, довольно известном,- adb (android debug bridge ) . Это, так называемый, режим отладки и назван он так неспроста – через него можно отслеживать работу, как системы в целом, так и отдельных приложений. Но это еще не все, при помощи adb можно получить полный доступ к файловой системе устройства и изменять системные файлы или же вытянуть важную информацию, когда ваш девайс завис на загрузке. Все функции режима отладки описывать не буду т.к. моя цель донести общую информацию, а не о функциях того или иного режима.
Разобравшись с теорией, давайте запустим Андроид ОС.
Нажимаем кнопку питания - запускается Bootloader , который загружает Ядро (boot), оно, в свою очередь, запускает систему (System), ну, а она уже подгружает программы (data) и пользовательское пространство (user). (Рис.3)
А теперь перейдем в корневой каталог и посмотрим на внутренности самой Android OS:
(Рис.4)
В этой схеме я привел, только необходимые для ознакомления, директории. На самом деле их гораздо больше и на обзор только одной папки System понадобится целая статья.
И так, папка data . Как можно догадаться из названия, она как-то связана с данными, но с какими? Да практически со всеми, это и данные о синхронизации и аккаунтах, пароли к точкам доступа wifi и настройки vpn , и так далее. Среди всего прочего тут можно обнаружить папки app , data и dalvik - cache – рассмотрим их назначение:
Папка System хранит в себе системные данные и все необходимое для работы ОС. Давайте рассмотрим некоторые из этих папок:
- Знать что в какой папке это хорошо, но можно ли что-то с этим сделать?
Да! Но нужны права суперпользователя (root ) или, если проводить аналогию с Windows, права Администратора. Изначально все устройства на Андроид идут без root прав для конечного пользователя, т.е. покупая девайс, мы не являемся в нем полноценными хозяевами. Это сделано как для защиты от вредоносных программ , так и от самого пользователя – ведь, в неумелых руках, полный доступ к системе может привести к «смерти» операционной системы и последующей необходимости в перепрошивке устройства.
«Ну и в чем польза такой опасной штуки?» - спросите Вы.
Сейчас расскажу:
Данный список можно продолжать еще долго, но, думаю, данных примеров будет достаточно для представления о возможностях и широте применения root привилегий.
Это все здорово, но теперь любая программа сможет получить доступ к «сердцу» операционки и моим данным?
Нет. Вы сами решаете разрешить, тому или иному приложению, получить root доступ, или нет. Для этого существует программа Superuser или ее продвинутая сестра SuperSU. Без этой или подобной программы воспользоваться root не возможно.
Как видите, Андроид не такая уж и сложная штука. Надеюсь, после прочтения статьи, вы узнали что-то новое или получили ответ на давно интересовавший вопрос.
Засим откланиваюсь, до встречи в комментариях. 😉
В этой статье я попробую рассмотреть безопасность чуть-чуть повыше ядра, а именно: как работает безопасность в Native user space. Мы коснемся темы процесса загрузки операционной системы и рассмотрим структуру файловой системы Android. Как я уже говорил, я не очень силен в Linux, поэтому если заметите неточности, то исправляйте - меня научите и статью улучшите. Так как эта тема довольно обширная, я решил разбить её на две части. В первой части мы рассмотрим процесс загрузки операционной системы и особенности файловой системы. Всем кому интересно, добро пожаловать!Adb shell ls -al
В моем терминале для эмулятора на Android 4.2 я вижу следующий результат:
Drwxr-xr-x root root 2013-04-10 08:13 acct
drwxrwx--- system cache 2013-04-10 08:13 cache
dr-x------ root root 2013-04-10 08:13 config
lrwxrwxrwx root root 2013-04-10 08:13 d -> /sys/kernel/debug
drwxrwx--x system system 2013-04-10 08:14 data
-rw-r--r-- root root 116 1970-01-01 00:00 default.prop
drwxr-xr-x root root 2013-04-10 08:13 dev
lrwxrwxrwx root root 2013-04-10 08:13 etc -> /system/etc
-rwxr-x--- root root 244536 1970-01-01 00:00 init
-rwxr-x--- root root 2487 1970-01-01 00:00 init.goldfish.rc
-rwxr-x--- root root 18247 1970-01-01 00:00 init.rc
-rwxr-x--- root root 1795 1970-01-01 00:00 init.trace.rc
-rwxr-x--- root root 3915 1970-01-01 00:00 init.usb.rc
drwxrwxr-x root system 2013-04-10 08:13 mnt
dr-xr-xr-x root root 2013-04-10 08:13 proc
drwx------ root root 2012-11-15 05:31 root
drwxr-x--- root root 1970-01-01 00:00 sbin
lrwxrwxrwx root root 2013-04-10 08:13 sdcard -> /mnt/sdcard
d---r-x--- root sdcard_r 2013-04-10 08:13 storage
drwxr-xr-x root root 2013-04-10 08:13 sys
drwxr-xr-x root root 2012-12-31 03:20 system
-rw-r--r-- root root 272 1970-01-01 00:00 ueventd.goldfish.rc
-rw-r--r-- root root 4024 1970-01-01 00:00 ueventd.rc
lrwxrwxrwx root root 2013-04-10 08:13 vendor -> /system/vendor
Я отмечу здесь только главные директории и те, которые нам пригодятся в будущем. В Интернете можно найти описание и предназаначение других директорий. Можно заметить, что некоторые директории такие же, как и в Linux, например, /dev
, /proc
, /sys
, /mnt
, /etc
И их предназначение в основном такое же, как и в Linux. Кстати, отметьте, что мы не видим /bin
и /lib
директорий. Где они скрылись, я расскажу чуть позже.
C другой стороны можно заметить директории, которых в Linux вообще нет. Среди них нас интересуют /data
, /system
, /cache
, /init
, /init.rc
Давайте рассмотрим их назначение поподробнее.
/system
Это главная директория, где хранятся неизменяемые компоненты Android системы. Если проводить аналогию, то эта папка похожа на папку C:\windows\
, доступную только для чтения. Т.е. изменять данные в этой директории мы не можем. Как раз здесь можно найти директории /bin
и /lib
, где хранятся различные исполняемые файлы и shared libraries. Кроме того, здесь же лежат системные приложения, которые встроены в операционку и которые, по умолчанию, нельзя удалить. Содержимое этой директории формируется во время компиляции операционной системы.
/data
Т.к. /system
у нас доступна только для чтения, то должна быть директория где хранятся изменяемые данные. /data
как раз ею и является. Например, в эту директорию в /data/app
сохраняются apk файлы устанавливаемых приложений, а в /data/data
хранятся их данные (эту директорию мы подробно рассматривали в прошлой статье).
/cache
Это просто временное хранилище. Также в эту директорию сохраняются, а потом из неё запускаются системные обновления.
Чтобы понять, что такое /init файл и для чего нужны непонятные файлы с расширением *.rc, рассмотрим процесс загрузки системы.
Давайте рассмотрим несколько шагов процесса загрузки операционной системы Android. Эта картинка взята из книги «Embedded Android», там же можно найти и более детальное описание. Хотя в целом я и понимаю процесс, но для меня это больше магия:)
CPU.
Когда вы нажимаете на кнопку включения, на процессор вашего устройства начинает подаваться напряжение. Так как до этого момента процессор был выключен, и так как он не способен сохранять свое состояние без подачи напряжения, то сразу после старта он находится в некотором неинициализированном состоянии. В данном случае процессор считывает из своего специального регистра некоторый жестко зашитый адрес и начинает выполнять инструкции начиная с него. Чаще всего, этот адрес указывает на чип, в который зашит bootloader (загрузчик).
Bootloader.
Bootloader инициализирует RAM и загружает в неё Linux kernel. Кроме того Bootloader создает RAMdisk.
Linux kernel.
Ядро инициализирует различные подсистемы, встроенные драйвера и монтирует root filesystem (корневую файловую систему). После этого ядро может запускать первую программу.
На этом магия заканчивается и дальше всё становится более-менее понятно.
Int main(int argc, char **argv)
{
...
/* clear the umask */
umask(0);
/* Get the basic filesystem setup we need put
* together in the initramdisk on / and then we will
* let the rc file figure out the rest.
*/
mkdir("/dev", 0755);
mkdir("/proc", 0755);
mkdir("/sys", 0755);
mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755");
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
mount("devpts", "/dev/pts", "devpts", 0, NULL);
mount("proc", "/proc", "proc", 0, NULL);
mount("sysfs", "/sys", "sysfs", 0, NULL);
...
init_parse_config_file("/init.rc");
...
}
Вначале мы создаем и монтируем некоторые необходимые для работы директории, а потом парсим файл /init.rc
и выполняем то, что распарсили. Формат /init.rc
файла очень хорошо описан в , там же можно найти и пример. Если кратко, то этот файл представляет собой набор actions (секций - именнованная последовательность комманд). Каждая последовательность команд срабатывает по определенному trigger (триггеру). Например, следующая последовательно - это action, в которой trigger - это fs, а последовательность команд - это набор mount команд:
Исходный файл /init.rc
находится в Давайте рассмотрим некоторые основные его части, хотя я вам очень советую просмотреть его полность. После этого многие вещи вам должны стать понятны. Итак, начинается наш файл следующими строками:
Import /init.usb.rc
import /init.${ro.hardware}.rc
import /init.trace.rc
Они означают, что кроме init.rc
файла нужно также импортировать настройки из файлов init.usb.rc
, init.trace.rc
и из файла с непонятным именем init.${ro.hardware}.rc
Впрочем, ${ro.hardware}
- это просто переменная, значение которая определяет тип железа. В случае эмулятора, её значение, например, - goldfish
. Далее определяются переменные окружения:
On init
...
# setup the global environment
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /vendor/lib:/system/lib
export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system
export ANDROID_ASSETS /system/app
export ANDROID_DATA /data
export ANDROID_STORAGE /storage
export ASEC_MOUNTPOINT /mnt/asec
export LOOP_MOUNTPOINT /mnt/obb
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/mms-common.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/apache-xml.jar
...
После этого происходит инициализация переменных, необходимых для работы устройства. Если вас заинтересует эта тема, то вы легко найдете информацию о той или иной комманде. Давайте подробно рассмотрим следующий блок (который я уже приводил в этой статье):
On fs
# mount mtd partitions
# Mount /system rw first to give the filesystem a chance to save a checkpoint
mount yaffs2 mtd@system /system
mount yaffs2 mtd@system /system ro remount
mount yaffs2 mtd@userdata /data nosuid nodev
mount yaffs2 mtd@cache /cache nosuid nodev
MTD - Memory Technology Devices. Если в общих чертах, то MTD - это специальный чип с энергонезависимой (т.е. данные на этом чипе сохраняются после перезагрузки или выключения) flash-памятью (типа NOR или NAND), на который сохраняются образы дисков. В этой статье более подробно рассказывается об этом типе устройств, а также об ограничениях. Специально для этих разновидностей flash-памяти были разработаны специальные файловые системы, например, YAFFS. Одно из самых важных ограничений этих типов памяти заключается в том, что для того чтобы записать данные в сектор, куда уже записаны какие-то данные, вам надо полностью сначала стереть весь сектор. Поэтому производители стали переходить на новый тип блочной flash-памяти (eMMC), на которые можно поставить обычную ext4 файловую систему и избавиться от указанного ограничения. Т.к. я показываю пример init.rc
файла для эмулятора, где вся работа эмулируется, то в нем по умолчанию используется файловая система YAFFS2 (думаю, что это пережитки прошлого, т.к. YAFFS2 использовалась для всех устройств до Android 2.2). В реальном устройстве (это как раз один из примеров, когда необходимо использовать init.rc
файл для определенного железа) эти комманды будут перезаписаны. Например, в случае устройства herring
(Google Nexus S), в файле эта секция выглядит следующим образом:
On fs
mkdir /efs 0775 radio radio
mount yaffs2 mtd@efs /efs noatime nosuid nodev
chmod 770 /efs/bluetooth
chmod 770 /efs/imei
mount_all /fstab.herring
...
Где fstab.herring
- это , содержимое которого выглядит следующим образом:
...
/dev/block/platform/s3c-sdhci.0/by-name/system /system ext4 ro wait
/dev/block/platform/s3c-sdhci.0/by-name/userdata /data ext4 noatime,nosuid,nodev,nomblk_io_submit,errors=panic wait,encryptable=/efs/userdata_footer
Как вы могли заметить, /system
, /data
, /cache
- это просто mounting points (точки монтирования файловой системы), которые указывают либо на MTD устройства (в случае эмулятора), либо на блочные устройства (в случае настоящего устройства), куда записаны соответствующие дисковые образы (system.img, userdata.img и cache.img). Я не уверен, но думаю, что внутри смартфона находится один единственный чип с flash-памятью, разделенный на partitions (тома), в каждый из которых записан соответствующий образ. Этот чип с flash-памятью - то, что мы знаем под именем Internal storage
(внутренняя память), объем которой - один из основных параметров смартфона.
Следует заметить, что /system смонтирован read-only (только для чтения). Это означает, что содержимое данного раздела не изменяется в процессе работы устройства, а только когда вы, например, обновляете систему на вашем устройстве (используя системные обновления).
Продолжим рассматривать наш init.rc . По триггеру post-fs-data формируется базовая структура файловой системы /data раздела. Там, в общем всё понятно - набор mkdir , chown , chmod команд.
Далее init.rc запускает несколько демонов. Если вернуться к рисунку в начале статьи, то они перечислены в блоке Native daemons. На этом мы пока остановимся. Как вы могли заметить из рисунка, я не полностью рассмотрел процесс загрузки операционной системы. Некоторые непокрытые этапы я рассмотрю в следующих статья.
В данной статье вы узнаете какие папки (директории) в Android существуют, какие файлы в них находятся, за что отвечают данные папки и файлы и зачем они нужны.
У многих есть компьютер и на них установлена ОС Windows. Все прекрасно знают, что в данной ОС все распределено по дискам:
C: — на данном диске находиться система
D: — для личных файлов (диска может и не быть, если он не «разбит»)
E: — Z: — флешки, переносные жесткие диски, CD или DVD приводы.
В Windwows все рассредоточено по различным дискам. В UNIX/Linux куда входит и Android (а также BSD, куда входит Mac OS X) все выглядит все немного иначе. Файловая структура имеет древовидный вид. Возможно сейчас не понятно, но дальше с прочтением статьи будет более понятно.
Также стоит знать что Android как и в Linux, в отличие от Windows очень чувствительны к регистру. Например папка Name, NaMe, name, NAME — это 4 разных папки, тогда как Windows сможет создать только одну папку с таким именем.
Для того чтобы было более понятно о чем идет речь, рекомендуется установить файловый менеджер Root Browser.
Как было выше сказано — структура имеет древовидный вид. У любого дерева имеется корень, в UNIX/Linux он также существуют. Корень — это отправной пункт в файловой структуре, с корня система обрастает папками и файлами. Корень в UNIX/Linux отмечается как знак:
/
подробно о разделе dev
/dev/ — в данном разделе содержится информация о устройствах системы и файлов.
[свернуть]
подробно о разделе data
раздел /data/ — пользовательский раздел в котором находятся установленные приложения, личные настройки
папка /data/app — здесь находятся установленные приложения, игры.
папка /data/app-lib — дополнительные библиотеки необходимые для работы определенных приложений (присутствует в новых версиях Android).
папка /data/dalvik-cache — кеш-память, для работы Java машины Dalvik которая является «двигателем» в Android отвечающая за запуск и работу приложений.
папка /data/data — в данной папке находятся индивидуальные настройки каждого пользовательского приложения, библиотеки и другие файлы необходимые файлы для их работы.
папка /data/system/ — в данном разделе находятся глобальные настройки пользовательского окружения, синхронизация, аккаунты, блокировка.
файлы gesture.key, locksettings.db, locksettings.db-shm, locksettings.db-wa l — графический ключ , пин-код.
[свернуть]
подробно о разделе preload
раздел /preload/ — в данном разделе находятся дополнительные файлы и папки, которые зеркалируются в раздел /system/ (данный раздел имеется не во всех Android, преимущественно в Samsung).
[свернуть]
подробно о разделе system
раздел /system/ — данный раздел содержит системные папки и файлы необходимые для функционирования Android.
папка /system/app — здесь находятся системные приложения и сервисы (в новых ОС Android сервисные приложения вынесли в другую папку priv-app ).
папка /system/bin и /system/xbin — папка содержит файлы и ссылки на исполняемые бинарные файлы.
файл /system/xbin/su — файл отвечающий за Root права .
папка /system/camerdata — в данной папке находятся файлы отвечающие за работу камеры.
папка /system/etc — в данной папке находятся конфигурационные файлы необходимые при загрузке ОС а также необходимые в процессе работы различных программ.
папка /system/init.d — в данной папке находятся скрипты, которые могут влиять на работу системы.
файл /system/etc/ hosts — файл отвечающий за блокировку, переадресацию веб адресов.
файл /system/etc/ apns.conf — файл с информацией о точках доступах интернет (APN).
файл /system/etc/ gps.conf — настройки GPS.
папка /system/fonts — папка с системными шрифтами.
папка /system/framework — папка с «процессами» Android.
папка /system/lib/ — библиотеки системных приложений и сервисов.
папка /system/lib/modules — драйверы системы.
папка /system/media — папка с системными звуками и анимацией включения.
файл /system/media/bootanimation.zip — исполняемый архив с загрузочной анимацией.
папка /system/priv-app — папка с сервисами/приложениями Android.
файл /system/build.prop — конфигурационный файл с помощью которого можно изменить системные настройки.
[свернуть]
подробно о разделе proc
раздел /proc — виртуальный раздел содержащий информацию о ядре и его конфигурации.
ОС Android - операционная система для мобильных телефонов, планшетных компьютеров и нетбуков, основанная на ядре Linux. Изначально разрабатывалась компанией Android Inc., которую затем купила компания Google. Первая версия ОС Google Android вышла в сентябре 2008 года. В конце 2010 года платформа Android стала самой продаваемой ОС для смартфонов.
ОС Android - это набор открытого программного обеспечения для мобильных устройств от компании Google, в состав которого входит операционная система и комплект базовых межплатформенных приложений. Приложения для ОС Android являются программами в байт-коде для виртуальной машины Dalvik, которая является частью мобильной платформы Android.
Если представить компонентную модель Android в виде иерархии (Рис.2) , то можно выделить 4 основных уровня:
Уровень ядра Linux;
Уровень библиотек (Libraries);
Уровень среды исполнения (Android Runtime);
Уровень каркаса приложений (ApplicationFramework);
Уровень приложений (Applications).
Уровень ядра Linux. В самом низу, в основе будет располагаться ядро операционной системы.ОС Android основана на ОС Linux версии 2.6, тем самым платформе доступны системные службы ядра, такие как управление памятью и процессами, обеспечение безопасности, работа с сетью и драйверами. Также ядро служит слоем абстракции между аппаратным и программным обеспечением.
Рис.2
Уровень библиотек (Libraries)."Выше" ядра, как программное обеспечение промежуточного слоя, лежит набор библиотек, предназначенный для решения типовых задач, требующих высокой эффективности. То есть, именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации, отрисовку графики и многое другое. Библиотеки реализованы на C/C++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде.
Перечислим некоторые из низкоуровневых библиотек:
SurfaceManager - диспетчер поверхностей управляет доступом к подсистеме отображения 2D- и 3D- графических слоев.
Media Framework - библиотеки, c помощью которых система может осуществлять запись и воспроизведение аудио и видео данных, а также вывод статических изображений.
SQLite - легковесная и производительная реляционная СУБД, используемая в Android в качестве основного движка для работы с базами данных.
3D libraries - библиотеки для работы с 3D-графикой.
FreeType - библиотека, предназначенная для работы со шрифтами.
LibWebCore - ядро встроенного web-браузера.
SGL (ScalableGraphicsLibrary) - библиотека для работы с 2D-графикой.
SSL - библиотеки для поддержки одноименного криптографического протокола.
libc - библиотека стандартных вызовов языка C.
Уровень среды исполнения (Android Runtime). На этом же уровне располагается Android Runtime - среда выполнения прикладных программ. Ключевыми её составляющими являются набор стандартных библиотек и виртуальная машина Dalvik. Каждое приложение в ОС Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все работающие процессы изолированы от операционной системы и друг от друга. Архитектура Android Runtime такова, что работа программ осуществляется строго в рамках окружения виртуальной машины. Благодаря этому осуществляется защита ядра операционной системы от возможного вреда со стороны других её составляющих. Поэтому код с ошибками или вредоносное ПО не смогут испортить ОС Android и устройство на её базе. Такая защитная функция, наряду с выполнением программного кода, является одной из ключевых для Android Runtime.
Уровень каркаса приложений (ApplicationFramework). ОС Android позволяет полностью использовать API (интерфейс программирования приложений - набор готовых классов, процедур, функций, структур и констант) используемый в приложениях ядра. Архитектура построена таким образом, что любое приложение может использовать уже реализованные возможности другого приложения при условии, что последнее откроет доступ на использование своей функциональности. Таким образом, архитектура реализует принцип многократного использования компонентов ОС и приложений.
Основой всех приложений является набор систем и служб:
Диспетчер действий (ActivityManager) управляет жизненным циклом приложений и предоставляет систему навигации по истории работы с действиями.
Диспетчер окон (Window Manager) управляет окнами, и предоставляет для приложений более высокий уровень абстракции библиотеки Surface Manager.
Поставщик содержимого (ContentProviders) - это службы, которые позволяют приложениям получать доступ к данным других приложений, а также предоставлять доступ к своим данным.
Система представлений (ViewSystem) - это богатый набор представлений с расширяемой функциональностью, который служит для построения внешнего вида приложений, включающий такие компоненты, как списки, таблицы, поля ввода, кнопки и т.п.
Диспетчер уведомлений (NotificationManager) позволяет любому приложению отображать пользовательские уведомления в строке статуса.
Диспетчер пакетов (Package Manager) управляет установленными пакетами на вашем устройстве, отвечает за установку новых и удаление существующих.
Диспетчер телефонии (Telephony Manager) содержит API для взаимодействия с возможностями телефонии (звонки, смс и т.п.)
Диспетчер ресурсов (ResourceManager) предназначен для доступа к строковым, графическим и другим типам ресурсов.
Диспетчер местоположения (Location Manager), позволяющий приложениям получать обновленные данные о текущем географическом положении устройства
Уровень приложений (Applications). На вершине программного стека Android лежит уровень приложений. Сюда относится набор базовых приложений, который предустановлен на ОС Android. Например, в него входят браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов и многие другие. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. И помимо этого базового набора к уровню приложений относятся все прикладные приложения под платформу Android, в том числе и установленные пользователем.