Где в телефоне находится библиотека
При использовании приложений под Android иногда появляются вопросы: «А где приложение хранит созданные файлы?», «Можно ли до них достучаться?» и «Удалятся ли файлы при удалении приложения?» Давайте попробуем посмотреть, где же приложение может хранить свои данные и какие последствия это имеет для пользователя.
Внутреннее хранилище данных
Смысл следует непосредственно из названия. Внутреннее хранилище (internal storage) располагается всегда в памяти смартфона вне зависимости от того, есть ли возможность установки карты памяти (и тем более того, вставлена ли она). Эта область памяти является защищенной. Находится в системном разделе /data. По умолчанию все файлы, которые там располагаются, доступны только тому приложению, которое их создало. Разумеется, можно сделать файлы доступными для других приложений, но это надо делать специально. Если приложение не открывает файлы для доступа извне, достучаться к ним можно будет только получив root.
Назначение хранилища понятно: внутренние защищенные данные, к которым не должно быть нерегламентированного доступа. Проблемы (с точки зрения пользователя) могут быть в следующих случаях:
- Неоправданно большой объем данных. Хочется вынести данные на карту памяти, чтобы сэкономить внутреннее пространство для других нужд, а приложение не дает.
- По мнению пользователя, регламент доступа к данным должен быть другим, не таким, как предлагает приложение.
Пример: приложение «Лекции по истории России». В приложении хороший контент (и по содержанию, и по качеству звука). Но сохраняется он во внутреннюю память. На бюджетных устройствах, где этой памяти мало, становится затруднительным закачать заранее много лекций, а потом, отключившись от интернета, слушать их. Второй проблемой становится собственно регламент доступа к данным. Даже если ограничиться тематикой истории, у меня есть аудиофайлы, полученные из трех источников: данное приложение, подкасты и аудиоверсии роликов с youtube. Хочется взять и объединить навек в их земной юдоли под владычеством всесильным Властелина Мордора их все в единый плейлист, и слушать его одним аудиоплеером. Но на смартфоне без root это сделать невозможно.
Внешнее хранилище «личных» данных
С точки зрения разработчика, кроме внутреннего хранилища данных, для персональных целей приложения есть еще внешнее хранилище. Оно необязательно размещается на карте памяти. Это может быть и внутренняя память смартфона, но весь раздел с такими данными размещается в общем доступе. В корне раздела есть папка Android/data, а в ней — подпапки с именами пакетов приложений.
Плюсы такого подхода очевидны: данные доступны извне для целей пользователя. А если это карта памяти, то и емкость может быть ограничена только вашими финансами (в продаже уже можно найти карты памяти на 400 гигабайт). Минусы тоже понятны: в любой момент любое приложение (конечно, имеющее разрешение на доступ к «внешним» данным) может взять и стереть чужие файлы. Также файлы будут удалены системой при удалении приложения (или при очистке его данных).
Пример приложения: подкаст-менеджер BeyondPod (более-менее свежей версии, раньше файлы хранились по-другому). Пользователь имеет доступ к скачанным подкастам и может легко удалять их (например, в целях экономии места) или слушать их во внешнем плеере.
Общее внешнее хранилище
Располагается в корне «внешнего» раздела на одном уровне с папкой «Android». Предназначается для хранения данных, разделяемых между разными приложениями. Обычно в документации Google в качестве примера приводят картинки (фото с камеры — папка DCIM). Основная проблема данных файлов: они никогда не удаляются автоматически. Даже если приложение вы удалили.
Пример: мессенджер Telegram. После того, как вы удалили приложение, загруженные файлы никуда не исчезают. Они продолжают спокойно лежать на накопителе данных, занимая драгоценное место.
Как можно удалить файлы, не удаляя приложения
Здесь важно ввести еще одну классификацию файлов приложений. Она справедлива для внутреннего хранилища и для внешнего хранилища личных данных. Все данные делятся на два типа: собственно данные и кэш.
Данные (папка data) — некие файлы, которые, по логике Google, нужны для постоянной работы с ними. Если полностью их удалить, то приложение поведет себя точно так же, как если бы его переустановили (удалили и заново установили). Частичное удаление файлов может не привести ни к каким неприятным последствиям. Но важно понимать, какие конкретно данные вы удаляете (например, очевидно, что скачанные файлы подкастов можно удалять совершенно свободно — это не повлияет на работоспособность подкаст-менеджера).
Кэш — временные данные, которые сформированы в ходе работы приложения и нужны для ускорения этой работы. Например, данные, которые часто нужны в интернете, загружаются и в дальнейшем вместо загрузки открываются локально (разумеется, кэш может обновляться, чтобы не показывать устаревшие данные). Удалять кэш любого приложения можно совершенно спокойно, это штатная операция.
Очистка памяти и кэша вызывается из настроек приложения. Кнопка «Очистить кэш» очищает только кэш, а кнопка «Очистить данные» — и кэш, и данные приложения.
Удаление файлов приложения из общего внешнего хранилища выполняется только вручную. Более того, даже оценка того, от какого приложения эти файлы остались, тоже выполняется вручную.
Я считаю, что каждый более или менее “прошаренный” пользователь устройства на базе ОС Android должен знать, что хранится на его аппарате и в каких папках. Поэтому сегодня я хочу рассказать именно о структуре и предназначении системных каталогов.
Отличия семейства Linux/Android от Windows
Для начала пройдемся по базе. Линуксойдов и любителей поумничать просим пропустить этот раздел и идти дальше, тут мы материал излагаем максимально упрощенно.
Почти все мы пользуемся персональными компьютерами с той или иной версией операционной системы Windows. В ней информация распределяется по дискам. Обычно С это системный раздел, D предназначен для хранения данных, а каталоги от E до Z представляют собой съемные носители.
В семействе Linux все выглядит немного иначе. Там файловая структура задана древовидной архитектурой. Если вы хотя бы один раз заходили при помощи файлового менеджера в каталог своего Android устройства, то абсолютно точно представляете, как выглядит это дело.
Хочу обратить внимание читателей на то, что Windows обычно не реагирует на регистр. Большие буквы там, маленькие, смешанные – все это компьютеру просто до лампочки. Но попробуйте задать 4-ем папкам в Android имена Pack, pack и PACK – и система воспримет их как все разные.
Назначение разделов
Когда на телефоне идет загрузка какого-то файла через Интернет, они сохраняются в разделе cache . Сюда же попадают и файлы обновлений “по воздуху”. Они, кстати, имеют название “ update.zip ”.
Подробного объяснения требует папка data . В ней содержится несколько каталогов. Например, data app – в него устанавливаются игры и приложения.
В app-lib можно найти дополнительные библиотеки файлов и конфигураций, которые предназначены для работы того или иного отдельного приложения. Примечание: чаще всего app-lib встречается именно в новых версиях Android.
В операционной системе есть Java-машина, называемая Dalvik. Она играет роль своеобразного двигателя, поскольку запускает приложения и следить за их работой. Так вот, для функционирования Java-машины предусмотрен каталог dalvik-cache .
Интересно и удивительно увидеть внутри папки data еще одну “ дату ”. Но вы не пугайтесь: этот каталог используется системой для хранения индивидуальных настроек каждого отдельного приложения.
Раздел system хранит в себе тоже настройки. Но уже глобального плана. Например, настройки блокировки устройства, аккаунтов на нем, синхронизации данных на аппарате.
В data находятся не только папки, но и отдельные файлы. Это gesture.key, например. Он отвечает за алгоритм блокировки.
Каталог efs есть не на всех версиях ОС Android. В нем находятся одиночные файлы и папки, так или иначе связанные с IMEI устройства.
Кстати, иногда раздел system перекликается с разделом preload , в котором сохраняются дополнительные папки и файлы.
Раз уж затронули эту тему, то объясню, какими функциями занят каталог system . Мы сейчас говорим о том, что идет отдельно, а не входит в состав раздела data. Так вот, в каталоге system есть несколько ответвлений.
Например, app . Тут расположились именно системные приложения и программы, а также сервисы. Примечание: в новых версия редакции Android они вынесены в папку priv-app .
Каталоги bin и xbin отвечают за содержание файлов и ссылок на исполняющие бинарные алгоритмы. В общем-то, как и на обыкновенном персональном компьютере. Внутри xbin можно найти файл под именем su (от слов Super User). Как вы уже могли догадаться, этот файл отвечает з а права супер-пользователя (Root-права).
Camerdata содержит в себе сборки конфигураций, необходимых для стабильной и правильной работы камеры.
В etc можно найти файлы, отвечающие за загрузку операционной системы. Они же обеспечивают и работу стандартных служб.
Init.t создана для содержания скриптов, влияющих на работу ОС. К слову о каталоге etc : в нем есть файл hosts , имеющий право на блокировку переадресации веб-адресов.
Для нормальной работы интернета на мобильном устройстве система должна получить максимум информации о точках доступа. В Android эта информация хранится в файле apns.conf , расположившемся в папке etc . Тут же есть и файл gps.conf . Как вы думаете, за что отвечает он? Разумеется, за навигацию по системе GPS.
Ну а мы двигаемся дальше. В system содержится каталог fonts , в котором можно найти системные шрифты.
Папка framework продемонстрирует, какие “процессы” происходят внутри нашей операционной системы.
Каталог lib и подкаталог modules объясняют, какие библиотеки приложений и сервисов используются в системе, а также какие драйверы (заметьте, не модули!) для этого применяются.
Никогда не горел желанием послушать дополнительно системные звуки. Но такую возможность предоставляет каталог media . Загрузочная анимация хранится тут же, в архиве bootanimation.zip .
Мы уже начали разговаривать о мультимедиа-файлах. Тогда давайте разберемся, покончим с этим. Голосовые движки системы хранятся в каталоге tts .
Конечно же, системные настройки прописываются в отдельный файл. Его найти можно системно разделе. Он носит имя build.prop .
Теперь, когда с системным разделом разобрались, пойдем дальше. На очереди – раздел proc. Он может поведать классную историю о том, какое ядро работает в аппарате и какие настройки конфигурации оно имеет.
В раздел mnt операционная система всегда монтирует карты памяти, а также внутреннюю память. Отметим, что они имеют виртуальный характер.
Примерно этим же занимается и каталог storage . Однако если mnt производит операции с виртуальными составляющими, то storage монтирует только реальную память и реальные внешние накопители.
Как эта информация пригодится пользователям?
Опираясь на полученные ранее знания, мы уже можем совать свой в нос чужие (системные) дела. Причем делать это относительно безопасно, если не будем порываться удалить конфигурационные файлы. Я это к тому, что зная, например, для чего предназначен раздел data, мы можем отыскать необходимый файл того или иного приложения, чтобы что-то с ним сделать.
Где хранятся контакты на Android
Списки контактов можно назвать самыми чувствительными элементами на Android. Из-за какой-то системной оплошности их можно легко потерять. Поэтому стоит знать, где они хранятся, чтобы обезопасить себя от этой участи. Итак, приступим.
Чтобы найти контакты на Android, доктор прописал адрес: /data/data/com.android.providers.contacts/databases. Там ищем файл contacts.db. На некоторых версиях ОС он может называться contacts2.db. ВАЖНО: чтобы прочитать этот файл, потребуется наличие root-прав. По сути дела, contacts.db является базой данных.
Для чего нам это пригодится? Представьте ситуацию, когда внутрення память телефона еще функционирует, а сам он не включается. Зная расположение файла, мы можем произвести экспорт контактов. Также у пользователя есть возможность вручную настроить бэкап этой информации на персональный компьютер при помощи сервера. Но это уже для очень мнительных людей, которые не доверяют даже Google.
Где хранятся приложения на Android
Если ранее вы скачивали игры или программы из сервиса Google Play и устанавливали их на телефон, то найти соответствующие папки можно в разделе /data/app. Оттуда их можно свободно извлечь. Если вас интересуют системные приложения, то они находятся в другом разделе - /system/app . Почему это важно? Мы опять возвращаемся к теме бэкапов. Зная просто расположений программ и игр, мы можем делать резервные копии в любое время и в любом количестве.
Где хранятся фото и видео на Android
Не всем людям нравится отправлять фотографии и видеофайлы на персональный компьютер (или другое стороннее хранилище) при помощи стандартного приложения “Галерея”. Сделать это можно и при помощи встроенного файлового менеджера. Фотографии и видео на Android хранятся в разделе DCIM/Camera . А уж где расположен DCIM – на телефоне или карте памяти – лучше знать только вам.
В 2015 году мы уже публиковали статью о пяти лучших библиотеках, которые мы использовали в то время. Однако платформа Android значительно выросла с тех пор. Как вы знаете, в такой быстро развивающейся области, как разработка программного обеспечения, всё меняется и развивается с молниеносной скоростью. Именно поэтому мы решили, что пришло время обновить список наиболее эффективных Android-библиотек.
Давайте без долгих предисловий перейдем прямо к нашему списку. Сначала мы рассмотрим одну из самых старых, но, по моему убеждению, и одну из самых эффективных Android-библиотек.
1. Retrofit
Ко всему прочему, Retrofit предоставляет отдельный Rx-модуль. Если вы используете Rx, этот модуль вернёт Observable при обращении к API, что позволит связать его с остальной частью вашего приложения. И это лишь некоторые из множества причин, по которым мы по-прежнему любим и используем Retrofit.
2. Moshi
Moshi — это библиотека для конвертации JSON в Java и Kotlin-объекты. Многие воспринимают Moshi как GSON 3.0. Однако эта библиотека превосходит GSON в нескольких аспектах: она быстрее, она поддерживает Kotlin, она обновляется, генерирует предсказуемые исключения и не использует испорченный адаптер DateTime по умолчанию. Кроме того, используя Moshi, процесс конвертации JSON в Java-объекты (и наоборот) становится максимально простым и понятым.
Мы также любим Moshi за поддержку JSON API. JSON API — это спецификация построения API, и многие API, с которыми мы работаем, написаны с использованием этой спецификации. Moshi JSON API облегчает нашу жизнь, поскольку JSON API ответ преобразуется в значимые Java-объекты. Retrofit ещё поддерживает Moshi, и вместе они просто отлично работают.
3. Chuck
4. Glide
Вы скорее всего знаете, что загрузка изображений в Android вызывает большие трудности. Даже изменение размера изображения может обернуться катастрофой с OutOfMemoryException . Glide — это библиотека загрузки изображений, которая предоставляет качественный API, позволяющий изменять изображение как вам угодно.
Библиотека позволит вам легко загрузить удалённое изображение в ImageView, определить стабовые изображения, кэшировать и масштабировать изображения и т.д. Просто попробуйте проделать всё это без помощи Glide, и вы сразу поймёте, почему он находится в нашем списке ключевых библиотек. Glide даже поддерживает некоторые распространённые изменения по умолчанию, например, создание изображения круглой формы.
5. ThreeTen
ThreeTen — это библиотека для работы с датой и временем в Android. Это портированная версия JSR-310, который был включен в Java 8 в качестве стандартного пакета java.time.* . Мы любим эту библиотеку, потому что стандартный Android Calendar API превращает работу в сущий кошмар.
ThreeTen сильно уступает JodaTime с точки зрения количества методов и бинарного размера. API данной библиотеки также меньше, чем API JodaTime. Если вы уже используете JodaTime, то, вероятно, вам не стоит переходить на ThreeTen. Тем не менее, я настоятельно рекомендую попробовать ThreeTen, если вы только начинаете работать над новым проектом.
6. Timber
Timber — мощная, но простая библиотека логирования, построенная на базе Android-класса Log . С её помощью вы сможете легко включать и выключать отображение логов. Также библиотека предлагает отличную поддержку логирования форматированных строк и исключений. Благодаря этим преимуществам Timber и входит в наш список ключевых библиотек, которые мы используем практически на всех Android проектах.
7. Room
Room — это официальный ORM для Android, и этот статус оправдывается рядом причин. Эта библиотека отличается удобным API, похожим на Retrofit. Room также в значительной степени опирается на аннотации и стандартный SQL-синтаксис.
Кроме того, Room по умолчанию включает в себя поддержку Rx и LiveData , поэтому вы сможете использовать его, как вам захочется. Основное преимущество Room перед различными ORM — простота. Многие ORM имеют гораздо более сложный API, для использования которого вам потребуется тщательно изучить всю документацию. Благодаря стандартному SQL-синтаксису Room предельно доступен для понимания, что позволяет приступить к работе сразу, не тратя много времени на чтение документации.
8. RxJava
RxJava — это Java-реализация ReactiveX API, которая позволяет связывать асинхронные задачи и события в наблюдаемые (англ. observable) последовательности. Пользователи рассчитывают на то, что современные приложения способны отображать данные в режиме реального времени. Другими словами, они хотят, чтобы информация обновлялась автоматически. Именно в этом аспекте вам и пригодится RxJava.
При получении данных в реальном времени становится чрезвычайно сложно объединить несколько запросов API, переключать потоки и обрабатывать ошибки. Именно здесь RxJava отменно проявляет себя, и именно по этой причине мы начали пользоваться этой библиотекой. Я согласен, что RxJava может показаться запутанной и трудной для изучения, но эта библиотека однозначно заслуживает вашего времени. Даже после перехода на Kotlin, мы продолжили использовать RxJava из-за её преимуществ. В сочетании с Kotlin API она становится ещё лучше благодаря дополнительным функциям-расширениям.
Попробуйте сделать что-то похожее на приведённый выше фрагмент с помощью простой Java. Ну же.
9. Android KTX
Android KTX — это набор расширений-обёрток для Android API в Kotlin, которые делают его более дружелюбным. Главная цель этой библиотеки — сделать Android API более удобным в использовании. Она содержит множество методов и отличных новых функций Kotlin, таких как именованные параметры, лямбда-функции и параметры по умолчанию.
Android KTX отличается наличием множества функций-расширений, и единственный способ узнать о них — погрузиться в код библиотеки, чтобы увидеть, каким образом функции улучшили Android API. Android KTX упрощает способ использования Android API, и по этой причине эта библиотека должна стать основой каждого Android приложения, написанного на Kotlin.
10. Dagger
Наш список 10 лучших библиотек был бы неполным без Dagger. Эта библиотека представляет собой полностью статичный фреймворк внедрения зависимостей во время компиляции. Dagger, так же как и RxJava, действительно сложен для понимания (мне пришлось потратить некоторое время, чтобы понять их пример CoffeeMaker), но определённо заслуживает потраченного времени и усилий.
Внедрение зависимостей (англ. dependency injection) — это способ, позволяющий добавлять небольшие компоненты к другим моделям с минимальными усилиями. Например, если у вас есть модель автомобиля, вы можете добавить к ней шины и с лёгкостью подменить имплементацию шин в будущем — не изменив при этом ни единой строчки кода в моделе автомобиля.
При разработке более сложных приложений вы точно не захотите самостоятельно выполнять задачи по внедрению зависимостей, потому что объём кода быстро увеличивается и становится слишком сложным для поддержки. Dagger избавит вас от этой проблемы, потому что он создает граф внедрения зависимостей во время компиляции посредством обработки аннотаций.
В прошлом году Google добавил отдельный модуль Android Dagger, который позволяет писать меньше шаблонного кода и упрощает внедрение зависимостей.
Заключение
Итак, вот и он: наш список 10 лучших Android-библиотек в 2018 году. Десять отличных библиотек, которые сделают процесс Android-разработки более приятным для каждого, кто решит их использовать. Хотите больше библиотек? Так вышло, что мы в нашей компании разработали несколько собственных Android-библиотек. Можете ознакомиться с ними:
Если у Вас уже давно имеется смартфон, то Вы, вероятно, установили и удалили уже намного больше приложений, чем можете запомнить. Вот как получить доступ к списку всех приложений, которые Вы установили на своих телефонах Android в течение времени.
Эта функция встроена в Google Play Store, поэтому Вы можете увидеть весь список с любого устройства, на котором используется Ваша учетная запись Google. Даже приложения, которые Вы установили на Вашем первом Android-телефоне, должны отображаться здесь (при условии, что они все еще доступны для загрузки, конечно). Кроме того, поскольку это часть Google Play Store, процесс просмотра приложений будет одинаковым на всех устройствах.
Для начала запустите Google Play Store и откройте меню. Для этого либо сделайте свайп вправо, либо коснитесь трех линий в верхнем левом углу.
Здесь нажмите «Мои приложения и игры».
По умолчанию этот список показывает все приложения, которые Вы установили в прошлом, но которые в настоящее время не установлены на устройстве, которое Вы используете. Это имеет смысл, потому что есть вкладка «Установленные», расположенная слева от вкладки «Библиотека», которая покажет Вам все, что в настоящее время установлено на устройстве.
Здесь нужно обратить внимание на несколько разных вариантов: во-первых, Вы можете выбрать сортировку списка по недавним, что покажет Вам те приложения, которые недавно были добавлены в Вашу учетную запись или в алфавитном порядке. Выбирайте.
Вы также можете удалить любое приложение из этого списка. Также стоит отметить, что если это платное приложение, то Вам не придется повторно покупать его, если Вы когда-нибудь захотите его переустановить. Он по-прежнему связан с Вашей учетной записью Google.
Читайте также: