Где андроид хранит приложения
Papa-jobs.ru

Ремонт телефонов

Где андроид хранит приложения

Где приложения хранят свои данные

Андрей Подкин

При использовании приложений под 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 все выглядит немного иначе. Там файловая структура задана древовидной архитектурой. Если вы хотя бы один раз заходили при помощи файлового менеджера в каталог своего Andro >Хочу обратить внимание читателей на то, что Windows обычно не реагирует на регистр. Большие буквы там, маленькие, смешанные – все это компьютеру просто до лампочки. Но попробуйте задать 4-ем папкам в Andro >Когда на телефоне идет загрузка какого-то файла через Интернет, они сохраняются в разделе cache . Сюда же попадают и файлы обновлений “по воздуху”. Они, кстати, имеют название “ update.zip ”.

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

В app-lib можно найти дополнительные библиотеки файлов и конфигураций, которые предназначены для работы того или иного отдельного приложения. Примечание: чаще всего app-lib встречается именно в новых версиях Andro >В операционной системе есть Java-машина, называемая Dalvik. Она играет роль своеобразного двигателя, поскольку запускает приложения и следить за их работой. Так вот, для функционирования Java-машины предусмотрен каталог dalvik-cache .

Интересно и удивительно увидеть внутри папки data еще одну “ дату ”. Но вы не пугайтесь: этот каталог используется системой для хранения индивидуальных настроек каждого отдельного приложения.

Читать еще:  Увеличиваем скорость загрузки в uTorrent

Раздел system хранит в себе тоже настройки. Но уже глобального плана. Например, настройки блокировки устройства, аккаунтов на нем, синхронизации данных на аппарате.

В data находятся не только папки, но и отдельные файлы. Это gesture.key, например. Он отвечает за алгоритм блокировки.

Каталог efs есть не на всех версиях ОС Andro >Кстати, иногда раздел system перекликается с разделом preload , в котором сохраняются дополнительные папки и файлы.

Раз уж затронули эту тему, то объясню, какими функциями занят каталог system . Мы сейчас говорим о том, что идет отдельно, а не входит в состав раздела data. Так вот, в каталоге system есть несколько ответвлений.

Например, app . Тут расположились именно системные приложения и программы, а также сервисы. Примечание: в новых версия редакции Andro >priv-app .

Каталоги bin и xbin отвечают за содержание файлов и ссылок на исполняющие бинарные алгоритмы. В общем-то, как и на обыкновенном персональном компьютере. Внутри xbin можно найти файл под именем su (от слов Super User). Как вы уже могли догадаться, этот файл отвечает з а права супер-пользователя (Root-права).

Camerdata содержит в себе сборки конфигураций, необходимых для стабильной и правильной работы камеры.

В etc можно найти файлы, отвечающие за загрузку операционной системы. Они же обеспечивают и работу стандартных служб.

Init.t создана для содержания скриптов, влияющих на работу ОС. К слову о каталоге etc : в нем есть файл hosts , имеющий право на блокировку переадресации веб-адресов.

Для нормальной работы интернета на мобильном устройстве система должна получить максимум информации о точках доступа. В Andro >apns.conf , расположившемся в папке etc . Тут же есть и файл gps.conf . Как вы думаете, за что отвечает он? Разумеется, за навигацию по системе GPS.

Ну а мы двигаемся дальше. В system содержится каталог fonts , в котором можно найти системные шрифты.

Папка framework продемонстрирует, какие “процессы” происходят внутри нашей операционной системы.

Каталог lib и подкаталог modules объясняют, какие библиотеки приложений и сервисов используются в системе, а также какие драйверы (заметьте, не модули!) для этого применяются.

Никогда не горел желанием послушать дополнительно системные звуки. Но такую возможность предоставляет каталог media . Загрузочная анимация хранится тут же, в архиве bootanimation.zip .

Мы уже начали разговаривать о мультимедиа-файлах. Тогда давайте разберемся, покончим с этим. Голосовые движки системы хранятся в каталоге tts .

Конечно же, системные настройки прописываются в отдельный файл. Его найти можно системно разделе. Он носит имя build.prop .

Теперь, когда с системным разделом разобрались, пойдем дальше. На очереди – раздел proc. Он может поведать классную историю о том, какое ядро работает в аппарате и какие настройки конфигурации оно имеет.

В раздел mnt операционная система всегда монтирует карты памяти, а также внутреннюю память. Отметим, что они имеют виртуальный характер.

Примерно этим же занимается и каталог storage . Однако если mnt производит операции с виртуальными составляющими, то storage монтирует только реальную память и реальные внешние накопители.

Как эта информация пригодится пользователям?

Опираясь на полученные ранее знания, мы уже можем совать свой в нос чужие (системные) дела. Причем делать это относительно безопасно, если не будем порываться удалить конфигурационные файлы. Я это к тому, что зная, например, для чего предназначен раздел data, мы можем отыскать необходимый файл того или иного приложения, чтобы что-то с ним сделать.

Получение списка приложений в Andro >

Android SDK предоставляет много средств для работы с системой. В том числе он позволяет получать список приложений, которые установлены на устройстве. Это может быть полезно, когда нужно получить сведения о сторонних приложениях (размер APK, путь до приложения, имя пакета и т.д.). Например, в наших приложениях получение списка, содержащего сторонние приложения, играет большую роль: в GreenBro с помощью этого списка выводятся сведения о приложениях, а также выполняются различные действия.

В Менеджере системных приложений и APK Extractor же список приложений необходим, чтобы удалять приложения и извлекать APK из приложений соответственно.

В этой статье мы рассмотрим, как можно получать список приложений, установленных на устройстве, а также как происходит установка приложений на устройство.

Класс PackageManager

PackageManager предоставляет API, который фактически управляет установкой, удалением и обновлением приложений. Когда мы устанавливаем файл APK, PackageManager анализирует этот APK и выводит результат.

Получить экземпляр класса PackageManager можно с помощью метода getPackageManager(). PackageManager предоставляет методы для запросов к установленным пакетам и соответствующим разрешениям.

Где хранятся файлы APK на Android?

В зависимости от типа данных, на Androiid файлы могут храниться в следующих местах:

  • Предустановленные и системные приложения (Камера, Браузер и т.д.) хранятся в /system/app/
  • Установленные пользователем приложения хранятся в /data/app/
  • PackageManager создаёт каталог /data/data/ / для хранения базы данных, файлов с предпочтениями, нативных библиотек и кеша.

Как PackageManager хранит информацию о приложении?

Менеджер пакетов хранит информацию о приложении в трёх файлах, расположенных в /data/system.

packages.xml

Этот XML-файл содержит список разрешений и пакетыприложения. Он хранит две вещи: разрешения и пакет. Например:

Разрешения хранятся в теге

. Каждое разрешение имеет три атрибута: name, package и protection. Атрибут name это имя разрешения, которое мы используем в AndroidManifest.xml. Атрибут package указывает на пакет, которому принадлежит разрешение, в большинстве случаев это “android”. Атрибут protection указывает на уровень безопасности.

содержит 10 атрибутов и несколько подтегов.

Атрибут Описание
name Имя пакета
codePath Путь установки APK
nativeLibraryPath Нативная библиотека, расположенная по умолчанию в /data/data/ /lib
flag Хранит флаги ApplicationInfo
ft Время в шестнадцатtричном формате
lt Время установки в шестнадцатеричном формате
ut Время последнего обновления в шестнадцатеричном формате
version Код версии из AndroidManifest.xml
sharedUserId Идентификатор пользователя Linux, который будет использоваться совместно с другими приложениями.
userId Идентификатор пользователя Linux

Подтеги же здесь следующие:

  • представляет собой информацию о сигнатуре, атрибут count – количество тегов .
  • это ключ сертификата, атрибут index представляет собой глобальный индекс сертификата.

содержат разрешения, которые разработчик установил в AndroidManifest.xml

packages.list

Это простой текстовый файл, содержащий имя пакета, идентификатор пользователя, флаги и каталог data.

package-stopped.xml

Этот файл содержит список пакетов, которые были остановлены. Остановленные приложения не могут принимать широковещательные сообщения.

Получаем список приложений

Рассмотрим получение списка установленных приложений на примере GreenBro.

При запуске приложения запускается AsyncTask, внутри которого получаем экземпляр PackageManager и затем копируем в список List все данные об установленных приложениях.

Метод getInstalledApplications() принимает в качестве параметра флаг GET_META_DATA, который определяет, что нам нужные метаданные каждого пакета.

Результатом является список объектов ApplicationInfo для каждого установленного приложения. Класс ApplicationInfo предоставляет подробную информацию о пакете, собранную из тега в AndroidManifest.xml, нам оттуда нужны лишь самые важные данные.

Поэтому в цикле проверяем каждый объект из полученного списка и записывать данные в собственный класс AppInfo, чтобы затем использовать в основном потоке.

Здесь с помощью метода getPackageInfo() класса PackageManager мы получаем общую информацию о приложении по заданному имени пакета. После эта информация объединяется с информацией, полученной от getInstalledApplications() и сохраняется в объекте AppInfo со следующими полями:

  • title – название приложения
  • packageName – имя пакета
  • sourceDir – полный путь до APK приложения
  • publicSourceDir – путь до общедоступных частей sourceDir
  • versionName – имя версии
  • isSystem – определяет, является ли приложение системным
  • size – размер приложения (в удобной форме)
  • longSize – размер приложения в long
  • dataDir – полный путь к каталогу data
  • nativeLibraryDir – путь до нативных библиотек
  • modified – дата последнего изменения
  • firstInstallTime – дата установки
  • lastUpdateTime – дата последнего обновления
  • enabled – определяет, включено ли приложение

Чтобы узнать название приложения, можно также воспользоваться PackageManager, как показано ниже.

Проверка же на то, является ли приложение системным, тоже достаточно проста и показана ниже.

В конце работы AsyncTask возвращает результат обратно в основной поток. Вот и всё, мы загрузили себе список всех установленных на устройстве приложений и можем продолжить с ним работу.

Получение списка приложений в Android : 2 комментария

Подскажите пожалуйста, в конструкции:
final PackageManager pm = context.getPackageManager();
List apps = new ArrayList();
List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
Чем является “context”?

Это локальная переменная, Вы можете передавать контекст из активити или фрагмента

Android с нуля: как хранить данные приложения локально

Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)

Когда доходит до сохранения данных приложений локально, разработчики Android определённо избалованы выбором. Помимо прямого доступа к внутренним и внешним областям хранения Android-устройства, платформа Android предлагает базы данных SQLite для хранения реляционных данных и специальные файлы для хранения пар ключ-значение. Более того, приложения для Android также могут использовать сторонние базы данных, которые предлагают поддержку NoSQL.

В этом уроке я покажу вам, как использовать все эти параметры хранения в приложениях для Android. Я также помогу вам понять, как выбрать наиболее подходящий вариант хранения данных.

Вам проще учиться по видео? Почему бы не посмотреть наш курс:

1. Хранение пар ключ-значение

Если вы ищете быстрый способ хранения нескольких строк или номеров, вам следует рассмотреть возможность использования файла настроек (preferences). Активити и службы Andro >getDefaultSharedPreferences() класса PreferenceManager , чтобы ссылаться на объект SharedPreferences , который может быть использован и для чтения, и для записи в файл настроек по умолчанию.

Чтобы начать запись в файл настроек, вы должны вызвать метод edit() объекта SharedPreferences , который возвращает объект SharedPreferences.Editor .

Объект SharedPreferences.Editor имеет несколько интуитивных методов, которые можно использовать для хранения новых пар ключ-значение в файле настроек. Например, вы можете использовать метод putString() , чтобы поместить пару ключ-значение со значением типа String . Аналогично, вы можете использовать метод putFloat() , чтобы поместить пару ключ-значение, чьё значение типа float . Следующий пример кода создаёт три пары ключ-значение:

После того, как вы добавили все пары, вы должны вызвать метод commit() объекта SharedPreferences.Editor , чтобы сохранить их.

Чтение из объекта SharedPreferences гораздо проще. Всё, что вам нужно сделать, так это вызвать соответствующий метод get*() . Например, чтобы получить пару ключ-значение, чьё значение является String , вы должны вызывать метод getString() . Вот фрагмент кода, который извлекает все значения, которые мы добавили ранее:

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

Обратите внимание, что файлы настроек ограничены только строками и примитивными типами данных. Если вы хотите сохранить более сложные типы данных или двоичные данные, вы должны выбрать другой вариант хранения.

2. Использование базы данных SQLite

Каждое приложение для Android может создавать и использовать базы данных SQLite для хранения больших объемов структурированных данных. Как вы уже знаете, SQLite не только лёгкая, но и очень быстрая. Если у вас есть опыт работы с системами управления реляционными базами данных и вы знакомы как с SQL, что является сокращением для Structured Query Language, и JDBC, что является сокращением для Java Database Connectivity, это может быть предпочтительным вариантом хранения.

Чтобы создать новую базу данных SQLite или открыть уже существующую, вы можете использовать метод openOrCreateDatabase() внутри своей активити или службы. В качестве аргументов вы должны передать имя своей базы данных и режим, в котором вы хотите её открыть. Наиболее часто используемый режим MODE_PRIVATE , который гарантирует, что база данных доступна только для вашего приложения. Например, вот как вы можете открыть или создать базу данных с именем my.db:

После создания базы данных вы можете использовать метод execSQL() для запуска SQL-инструкций. В следующем коде показано, как использовать оператор SQL CREATE TABLE для создания таблицы названной user, которая имеет три столбца:

Хотя можно вставить новые строки в таблицу с помощью метода execSQL() , лучше использовать метод insert() . Метод insert() ожидает объект ContentValues , содержащий значения для каждого столбца таблицы. Объект ContentValues очень похож на объект Map и содержит пары ключ-значение.

Вот два объекта ContentValues , которые вы можете использовать с таблицей user :

Как вы могли догадаться, ключи, которые вы передаете методу put() , должны соответствовать именам столбцов в таблице.

Когда объекты ContentValues готовы, вы можете передать их методу insert() вместе с именем таблицы.

Чтобы отправить запрос в базу данных, вы можете использовать метод rawQuery() , который возвращает объект Cursor , содержащий результаты запроса.

Объект Cursor может содержать ноль или несколько строк. Самый простой способ перебрать все его строки, так это вызвать метод moveToNext() внутри цикла while .

Чтобы получить значение отдельного столбца, вы должны использовать такие методы, как getString() и getInt() , которые ожидают индекс столбца. Например, вот как вы получите все значения, вставленные в таблице user :

После того, как вы получите все результаты вашего запроса, убедитесь, что вы вызвали метод close() для объекта Cursor , чтобы освободить все ресурсы, которые он хранит.

Аналогичным образом, когда вы закончили все операции с базой данных, не забудьте вызвать метод close() для объекта SQLiteDatabase .

3. Использование внутреннего хранилища

Каждое приложение Android имеет свой собственный внутренний каталог хранения, взаимодействующий с ним, в котором приложение может хранить текстовые и двоичные файлы. Файлы внутри этого каталога недоступны для пользователя или других приложений, установленных на устройстве пользователя. Они также автоматически удаляются, когда пользователь удаляет приложение.

Прежде чем вы сможете использовать внутренний каталог хранилища, вы должны определить его местоположение. Для этого вы можете вызвать метод getFilesDir() , который доступен как для активити, так и для служб.

Чтобы получить ссылку на файл внутри каталога, вы можете передать имя файла вместе с указанным вами расположением. Например, вот как вы получите ссылку на файл alice.csv:

С этого момента вы можете использовать свои знания о классах и методах I/O (ввода/вывода) Java для чтения или записи в файл. В следующем фрагменте кода показано, как использовать объект FileOutputStream и метод write() для записи в файл:

4 . Использование внешнего хранилища

Поскольку внутреннее хранилище устройств Android обычно фиксировано и часто довольно ограничено, некоторые устройства Android поддерживают внешние носители данных, такие как съемные микро SD-карты. Я рекомендую использовать этот вариант хранения для больших файлов, таких как фотографии и видео.

В отличие от внутреннего хранилища, внешнее хранилище может не всегда быть доступно. Поэтому, перед его использованием, вы должны всегда проверять, смонтировано ли оно. Для этого используйте метод getExternalStorageState() класса Environment .

Как только вы убедитесь, что внешнее хранилище доступно, вы можете получить путь к файлу внешнего хранилища для своего приложения, вызвав метод getExternalFilesDir() и передав null в качестве аргумента. Затем вы можете использовать путь для ссылки на файлы внутри каталога. Например, вот как вы можете ссылаться на файл с именем bob.jpg в каталоге внешнего хранилища приложения:

Попросив пользователя предоставить вам разрешение WRITE_EXTERNAL_STORAGE , вы можете получить доступ для чтения/записи ко всей файловой системе во внешнем хранилище. Затем вы можете использовать известные общедоступные каталоги для хранения ваших фотографий, фильмов и других мультимедийных файлов. Класс Environment предлагает метод getExternalStoragePublicDirectory() для определения путей этих общих каталогов.

Например, передав этому методу значение Environment.DIRECTORY_PICTURES , вы можете определить путь к общедоступному каталогу, в котором вы можете хранить фотографии. Аналогично, если вы передадите этому методу значение Environment.DIRECTORY_MOVIES , вы получите путь к общедоступному каталогу, в котором могут быть сохранены фильмы.

Вот как вы можете ссылаться на файл bob.jpg в каталоге общих изображений:

Когда у вас есть объект File , вы можете снова использовать классы FileInputStream и FileOutputStream для чтения или записи на него.

Заключение

Теперь вы знаете, как максимально использовать возможности локального хранилища, предоставляемые Android SDK. Независимо от выбранного вами варианта хранения операции чтения/записи могут потребовать много времени, если задействованы большие объемы данных. Поэтому, чтобы убедиться, что основной поток пользовательского интерфейса всегда остается отзывчивым, вы должны рассмотреть возможность запуска операций в другом потоке.

Чтобы узнать больше о сохранении данных приложения локально, обратитесь к официальному руководству API хранения данных.

Как извлечь APK-файл любого приложения для Andro >

Одним из преимуществ открытости Andro >

Извлечь APK-файл из уже установленного приложения можно несколькими путями. Традиционный предполагает поиск по файловой системе, но разработчик Павел Рекун придумал куда более легкий способ, создав специальный менеджер приложений, позволяющий в одно нажатие извлечь APK-файл из приложения в отдельную папку.

Где взять APK-файл приложения

  • Установите приложение Skit;
  • Раздайте ему необходимые привилегии;
  • Найдите в разделе установленного ПО нужное приложение;

Перейдите на его страницу и нажмите на пиктограмму компаса;

  • Теперь перейдите в приложение «Мои файлы» — «Память телефона»;
  • Найдите и откройте папку Skit. В ней будут APK-файлы приложений, которые вы извлекли.
  • Извлеченный APK-файл можно передать другим пользователям, позволив им установить бесплатно даже платное ПО, которое вы приобрели в Google Play. Несмотря на то что это не совсем легально, такой способ может прийтись кстати при использовании двух смартфонов, один из которых работает на базе китайской прошивки, не включающей в себя Google Play.

    Помимо возможности извлечь APK-файл, Skit открывает доступ к информации о разрешениях, которые получили приложения, о дате их последнего обновления, а также дополнительные подробности о разработчике. Такая информация может прийтись кстати, если вы не уверены в безопасности приложения и надежности его издателя.

    Подписывайся на наш канал в Яндекс.Дзен, чтобы ежедневно читать эксклюзивные материалы, которых нет на сайте.

    Приложение: Skit

    Разработчик: Pavel Rekun Категория: Инструменты Цена: Бесплатно Скачать: Google Play Приложением уже заинтересовались: 0 человек

    Google, что бы там ни говорили пользователи Android, очень ответственно относится к обновлениям. Поэтому редкий сервис компании обходится без апдейтов на протяжении хотя бы одного месяца. Штатные службы операционной системы и вовсе могут получить несколько патчей даже за одну неделю. Однако есть у Google и такие сервисы, которые она может не обновлять годами, исправно делая вид, что в её ассортименте нет ничего подобного, а потом, когда все уже успели их похоронить, взять и выпустить масштабное обновление. Сможете угадать, о каком сервисе идёт речь? Конечно, о Google Authenticator.

    Я всегда говорил, что выступаю за все новое. Мне нравится, когда производители пробуют свои силы и предлагают что-то необычное и перспективное. Вот только иногда они перегибают палку и начинают что-то совершенно непонятное. Особенно часто так получается, когда новое предлагают ради самого факта нового. Это относится к новому продукту от Microsoft, который пообещали выпустить еще в прошлом году, но до сих пор не могут этого сделать. Сказать, что мы сильно расстроены, нельзя, но сам факт того, что компания что-то пообещала, а потом отложила на неопределенный срок, вызывает некоторые вопросы. Из того, что действительно ждали, можно вспомнить AirPower от Apple. Впрочем, в случае с Microsoft шансы еще есть, но нужно ли нам ее новое устройство – это вопрос.

    Вспомните, сколько раз у вас было такое, что вы видели смартфон на картинке и он вам очень нравился, а потом при личной встрече наступало ощущение ”ах, вот ты какой”. Все из-за того, что для нас очень важна тактильная отдача устройства. Для производства флагманов компании тратят миллионы и десятки миллионов долларов на разработки в области дизайна и материалов. Так же важен вес и развесовка. Все это сильно отличает недорогие смартфоны от дорогих. Когда устройство стоит 5 000 рублей, к нему существенно меньше требований, а когда он стоит 90 000 и выполняет примерно те же функции, пусть и лучше, хочется уже, чтобы все было приятно. Иногда производители идут на ухищрения и предлагают другие варианты для усиления тактильных ощущений.

    3 комментария Оставить свой

    ЕS-проводником 100 лет назад так делал =)))

    Ссылка на основную публикацию
    Adblock
    detector