Как на андроиде переключить память на карту. Как на "Андроиде" поменять местами память? Что нужно сделать

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

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

К счастью, мы знаем решение, как поменять местами встроенную память и память SD карты.

Как поменять местами внутреннюю память и память SD-карты на Android

Решение достаточно простое. Вам нужно получить Root права на устройстве, чтобы запустить Xposed installer. Дальше мы будем использовать модуль Xposed XInternalSD или PR Swap SD, чтобы поменять местами память. Ниже более подробно об этом.


Вот и все! Теперь системные API файлы для хранения данных изменены, и устройство видит внешнюю SD-карту в качестве внутреннего хранилища.

Еще вы можете использовать приложение PR Swap SD, чтобы поменять местами память.

Готово! Вам удалось поменять местами память на Android. Как видите, инструкция достаточно простая, но необходимо быть внимательным во время установки Xposed installer. Вы можете поменять местами память, чтобы увеличить количество доступной памяти, а также повысить скорость работы устройства.

Возможности девайса можно серьезно расширить, если заменить внутреннюю память Android на карту памяти. Это позволит инсталлировать на планшет или иной гаджет гораздо больше приложений, но основным требованием для выполнения данного апдейта является наличие root-прав на устройстве. Рассмотрим способы, позволяющие использовать SD-карту в качестве системной памяти аппарата, а также связанные с этим условия.

Риски и условия замены внутренней памяти гаджета на SD-карту

Перед повторением описываемых ниже действий пользователь должен учесть несколько важных моментов:

  1. Срок службы SD-карты сильно сократится вследствие частого повторения циклов чтения/записи при запуске приложений.
  2. Скорость работы гаджета может заметно упасть, если использовать карту MicroSD низкого класса.
  3. При допущении ошибки при редактировании системного файла телефон может в следующий раз не загрузиться - придется его перепрошивать.

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

Использование утилиты Root Browser и редактирование файла vold.fstab

Чтобы поменять местами память, из Google Play потребуется установить Root Browser.

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


В Андроид sdcard обозначает внутреннюю память, а extsd - внешнюю, т. е. SD-карту. Заменой этих строк мы фактически поменяли местами эти виды памяти. В некоторых системах эти куски кода могут выглядеть иначе, например, так:

Заменить их нужно следующим образом:

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

Второй способ увеличения памяти при помощи Link2SD

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

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

Деление карты девайса на разделы при наличии кастомного Recovery

Каждое устройство на Android имеет режим восстановления, но описываемый ниже способ подойдет только для девайсов не со стандартным, а с . Если вы никогда не слышали о CWM, переходите ко второму варианту разбиения накопителя. Далее расскажем, как решить поставленную задачу, если в вашем режиме восстановления устройства есть пункт Partition SD Card:

Разбиение MicroSD-карточки через компьютер

Подключите карту к лэптопу или ПК. Для этого можно использовать картридер или иное оборудование, главное, определяться оно должно как накопитель, а не медиа-устройство MTP. Далее:


Как и обещал в комментариях к заметке «Deployment Manager или куда ещё можно задеплоить файлы », покопался ещё немного в файловой системе (а точнее в Иерархии каталогов). Основой для этой статьи стал вопрос от Дмитрия Кузьменко , очень надеюсь, что смог ответить на него в необходимом объёме. Немного поговорим об OC Android, производителях устройств работающих под управлением этой операционки, а также я покажу несколько вариантов получения списка доступных устройств хранения информации.


Продолжение для Android 4.4.* тут: Android 4.4 и запись на внешнюю карту памяти...

Upd (17.02.14). На основе комментариев внесены правки в приложения.
Upd2 (17.02.14). Обнаружено ложное срабатывание 3-го варианта, особенность пофиксил. Немного улучшил поиск.

Upd (30.03.14). Третий способ работает на версиях Android ниже 4.3. Для версий выше 4.3 код не напишу, т.к. не имею устройств с такой версией Android для анализа новой структуры.
Upd (21.04.14). Проверил код на Delphi XE6

Upd3 (15.07.14). Обновление исходного кода, обнаружена не правильная работа (ошибка AV) на некоторых устройствах

Постараюсь изложить всю суть кратко, чтобы не получилось 10 страниц текста.

Начнём с основ.

Операционная система Android основана на ядре Linux. В Unix-подобных операционных системах существует только один корневой каталог, а все остальные файлы и каталоги вложены в него. В большинстве UNIX-подобных систем съёмные диски, флеш-накопители и другие внешние устройства хранения данных монтируют в каталог /mnt, /mount или /media (в нашем случае это папка /mnt). UNIX-подобные операционные системы также позволяют автоматически монтировать диски при загрузке операционной системы.

Определяем список доступных устройств хранения информации.

Сразу нужно сказать, что в Android API я не нашёл метода, позволяющего определить подобный список. Поэтому первое, что приходит в голову, это проверка возможных путей самостоятельно и тут появляется первое «НО». Всё было бы просто, если бы не производители устройств, которые так и хотят что-то изменить в Android, вот и в этом случае они постарались. Я поэкспериментировал и выяснил, что количество возможных вариантов путей достаточно большое и узнать их все почти невозможно, разве что начать собирать общую базу таких вариантов со всех владельцев Android устройств.

В моих экспериментах участвовали (моё только одно - SGS2:):

  • Samsung Galaxy S Plus – Android 2.3.6
  • Samsung Galaxy S2 – Android 4.1.2
  • HTC Sensation Z710e – Android 4.0.3
  • HTC One X – Android 4.2.2
  • HTC Rhyme – Android 4.0.3

Теперь давайте посмотрим, какие пути доступны на этих устройствах, нам важны путь до внутренней карты (если есть), внешней карты (если есть) и usb устройств (если есть).

Как видите пути везде разные.

Вариант #1.

Составляем массив возможных значений и в цикле проверяем каждое на доступность при помощи обычной проверки на существование папки (TDirectory.Exists ), а также на пустоту папки (TDirectory.IsEmpty ).

Я составил общий список для данных устройств и написал небольшое приложение для проверки.

Мой список (основан на 5-ти популярных устройствах):

  • /mnt/sdcard
  • /mnt/sdcard/external_sd
  • /mnt/extSdCard
  • /mnt/usb
  • /mnt/UsbDriveA
  • /mnt/UsbDriveB
  • /mnt/UsbDriveC
  • /mnt/UsbDriveD
  • /mnt/UsbDriveE
  • /mnt/UsbDriveF

Поискав подобные пути в интернете, нашёл ещё 3 возможных пункта:

  • /mnt/external_sd
  • /mnt/usb_storage
  • /mnt/external

Дополнение от Дмитрия Кузьменко :

Sony Xperia V - 4.1.2

  • /mnt/sdcard
  • /mnt/ext_card
  • /mnt/usbdisk

Ещё немного:
Sony Xperia Go - 4.1.2

  • /mnt/sdcard
  • /mnt/ext_card
  • /mnt/usbdisk
Samsung Galaxy S4 - 4.2.2
  • /mnt/sdcard
  • /mnt/extSdCard
  • /mnt/UsbDriveA
  • /mnt/UsbDriveB
  • /mnt/UsbDriveC
  • /mnt/UsbDriveD
  • /mnt/UsbDriveE
  • /mnt/UsbDriveF
Готовый массив вы найдёте в коде ниже. Вы можете оставить в комментариях информацию о путях на ваших устройствах в таком виде:

Название устройства – версия Android

Прямой путь до внутренней памяти

Прямой путь до внешней карты памяти

Прямые пути до USB устройств

Все пути начинаются с папки /mnt/.


Или скопируйте и вышлите мне файл "/etc/vold.fstab" на почту infocean @ gmail.com или в комменты (не забудьте указать модель устройства и версию Android"а). Пожалуйста, указывайте также все папки, которые есть в директории /mnt/, это очень важно.

Приложение:

Uses System.IOUtils; const pathmnt: Array of String = ("/mnt/sdcard", "/mnt/sdcard/external_sd", "/mnt/extSdCard", "/mnt/usb", "/mnt/UsbDriveA", "/mnt/UsbDriveB", "/mnt/UsbDriveC", "/mnt/UsbDriveD", "/mnt/UsbDriveE", "/mnt/UsbDriveF", "/mnt/external_sd", "/mnt/usb_storage", "/mnt/external", "/mnt/ext_card", "/mnt/usbdisk"); procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin Memo1.Lines.Clear; Memo2.Lines.Clear; for i:= 0 to Length(pathmnt) - 1 do begin if TDirectory.Exists(pathmnt[i]) AND not TDirectory.IsEmpty(pathmnt[i]) then begin Memo1.Lines.Add(pathmnt[i]); Memo2.Lines.Add("True"); end else begin Memo1.Lines.Add(pathmnt[i]); Memo2.Lines.Add("False"); end; end; end;

Вариант #2.

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

Есть такой файлик «vold.fstab », лежит тут «/etc/»(«/system/etc/»). Это один из конфигурационных файлов в UNIX-подобных системах, который содержит информацию о различных файловых системах и устройствах хранения информации. Описывает, как диск (раздел) будет использоваться или как будет интегрирован в систему.

И есть файл «mounts », лежит тут «/proc/». Содержит информацию обо всех точках монтирования, используемых в устройстве. Важно понимать, что если карта памяти не упоминается в данном файле, то она не подключена. Это означает, что файл постоянно обновляется.

Пошагово:

  1. Читаем файл «vold.fstab »
  2. Проверяем каждое устройство на доступность, при помощи чтения файла «mounts » и поиска в нём нужной строки.

В этом варианте пока не будет кода, т.к. по какой-то неведомой мне причине, у меня не получается прочитать файл «mounts». В связи с этим предлагаю третий вариант.


Вариант #3.

Объединяем первый и второй варианты. Список будем брать из файла «vold.fstab », а проверять своими силами, не открывая при этом файл «mounts ». Зачем каждый раз мучать два файла, когда можно работать только с одним.

Пошагово:

  1. Читаем файл «vold.fstab »
  2. Составляем список устройств хранения информации (половина дела сделали)
  3. Теперь в цикле пробегаемся по списку и проверяем каждый путь с помощью «TDirectory.Exists » и «TDirectory.IsEmpty »
  4. Составляем список реально доступных устройств хранения информации

Update-17.02.14: Благодаря Дмитрию Кузьменко и общим усилиям выяснили, что файл «/etc/vold.fstab» в Sony Xperia V немного отличается от остальных, поэтому были внесены изменения в исходный код приложения. Всё проверили, работает! :) Исходники везде обновил.

Update2-17.02.14: В файле "/etc/vold.fstab" иногда встречаются (на некоторых устройствах) закомментированные строчки, которые очень похожи на искомые в моём коде, в связи с этим происходило ложное срабатывание. Эту особенность я пофиксил в новой версии кода.
Также пофиксил поиск нужных строчек, теперь он более универсален!

В общем, теперь код должен нормально отрабатывать на разных устройствах. Пробуйте, отписывайтесь в комменты, прикладывайте свой файл "/etc/vold.fstab" (не забывайте указывать модель устройства и версию Android).

Update3 - 15.07.14:
Читатель блога Sergey Yakimenko , обнаружил не правильную работу (чтение файла) третьего варианта на устройствах Huawei Ascend P6 и Reellex TAB-07 , о чём сообщил в комментариях.

После личной переписки и некоторого анализа, я выяснил, что за проблемы мешали работе.

Обнаруженные и исправленные проблемы:

  1. Пробелы в начале каждой найденной строчке. Исправлено при помощи "Trim"
  2. В найденных строчках используется табуляция вместо пробелов. Исправлено заменой символов табуляции на пробелы.
Код обновлён. Сергею большое спасибо.

Приложение:

Uses System.StrUtils, System.IOUtils; procedure TForm1.Button1Click(Sender: TObject); var OpenFileVold: TStringList; i: Integer; pathtemp: TStringDynArray; begin OpenFileVold:= TStringList.Create; try // Читаем файл OpenFileVold.LoadFromFile("/etc/vold.fstab"); for i:= 0 to OpenFileVold.Count - 1 do begin if (Pos("dev_mount", OpenFileVold.Strings[i]) > 0) OR (Pos("fuse_mount", OpenFileVold.Strings[i]) > 0) then begin // Update(15.07.14) // 1 - Удаляем пробелы в начале и в конце строке (избавляемся от AV) // 2 - Заменяем символы табуляции на пробелы pathtemp:= SplitString(StringReplace(Trim(OpenFileVold.Strings[i]), #9, " ", ), " "); // Проверяем первый символ строки на совпадение с символом "#" или "##", // чтобы не было ложных срабатываний if (pathtemp <> "#") AND (pathtemp <> "##") then begin if TDirectory.Exists(pathtemp) AND not TDirectory.IsEmpty(pathtemp) then begin Memo1.Lines.Add(pathtemp); end; end; end; end; finally OpenFileVold.Free; // FreeAndNil(SourceFile); end; end;

Итог: Научились получать список доступных устройств хранения информации (я использовал бы третий вариант). Текста (без кода и картинок) вышло на 3 страницы, скорее всего, заскучать не успели:)

Всем спасибо за внимание и удачной разработки.

P.s. Дополнения приветствуются.
p.s.2. Потратил немало времени на одни только эксперименты и сравнение файлов vold.fstab, mounts, с разных устройств...
p.s.3. В следующей статье, я покажу, как избавиться от проблемы обновления базы данных при обновлении приложения вручную.

Если на вашем устройстве недостаточный объем внутренней памяти, можно использовать SD-карту как внутреннее хранилище для вашего телефона Android. Данная функция, называемая Adoptable Storage, позволяет ОС Андроид форматировать внешний носитель данных как постоянное внутреннее хранилище. Информация на установленной SD-card зашифрована и не может быть в дальнейшем использована на другом устройстве.

SD Card – это очень удобный вариант для хранения фотографий, песен и видео. Даже если у вас есть большой объем внутренней памяти на Андроид-смартфоне, всегда может понадобиться большой кусок памяти для хранения длинных видеороликов, снятых камерой высокого разрешения вашего телефона.

Важно знать

Есть один недостаток, СД-чип может отставать при записи видео высокого разрешения.

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

Что такое накопительное хранилище?

Накопительное хранилище – это основной объем памяти вашего смартфона, но при необходимости его можно расширить, использовав для этого СД-карточку. Данная на Андроид называется Adoptable Storage. Это позволит использовать съемную карту microSD, установленную на телефоне Android, в качестве основного хранилища. Таким образом, вы сможете легко решить проблему, как сделать SD-карту основной памятью на Андроиде и преодолеть нехватку в пространстве, если телефон имеет небольшой внутренний объем.

Особенности использования карты как основного хранилища

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

Будет полезным

При использовании накопителя, будь то SD-флешка или USB-накопитель, важно помнить, в каком формате находится данный девайс и поддерживает ли его операционная система Android, а основных файловых форматов существует четыре типа: FAT32 или exFAT, ext4 или f2fs.

Как поменять память телефона на карту памяти андроида? Вопрос не совсем корректный, полностью выполнить замену невозможно, можно лишь как бы «нарастить» дополнительный объем.

Использование вашей SD-card в качестве основного накопителя может быть отличным решением для меломанов и любителей посмотреть сериалы по пути на работу или в длительном путешествии. Но, как зачастую это бывает, расширение памяти всегда упирается в стоимость требуемого девайса, ведь они отличаются как по скорости, так и по объему, а также по адаптируемой функции хранения информации. Вот некоторые нюансы, рассматривать которые можно с разных сторон – как в отрицательную сторону, так и в положительную:

Как использовать SD-карту в качестве внутренней памяти на Android?

Достаточно ли Вам внутреннего накопителя для хранения всех своих данных?

Как заменить внутреннюю память телефона на внешнюю sd карту на android? Конфигурирование вашей SD-карты для работы в качестве внутреннего хранилища на Android – это, по сути, довольно простой процесс. Ничего сложного в этом нет и вы далее сами в этом убедитесь.

Возможно, что функция Adoptable Storage не поддерживается вашим устройством, даже если смартфон работает под управлением Android 6.0 и выше (бывает и такое, все зависит от модели и марки смартфона). Возможно, производитель устройств отключил данную функцию. Однако существуют методы использования командной строки, которые позволяют принудительно использовать флеш-накопитель для хранения данных.

Ниже перечислены основные шаги по форматированию.


На следующем экране у вас есть последний шанс решить для себя, не хотите ли вы передумать

Важно знать

Не забудьте сделать резервную копию данных, после форматирования информация исчезнет бесследно!


После завершения процесса форматирования вы можете использовать съемную СД-шку как «временное» или «съемное» постоянное место. Но имейте в виду, что теперь будут недоступны горячая замена и извлечение, как, возможно, вы делали ранее. Поэтому не извлекайте флешку, не используя параметр Eject. Кроме того, вы можете практически удалить принятое операционкой место, что, соответственно, не рекомендуется, так как это может вызвать определенные ошибки в работе устройства. Теперь вы знаете, как сделать карту памяти основной памятью на Андроиде.

Проблема нехватки памяти – одна из основоположных как для ПК, так и для мобильных устройств. При малом количестве свободной памяти система обычно начинает подтормаживать, подвисать, работает нестабильно и ненадёжно. Особенно актуально это для Андроид-устройств, многие из которых изначально обладают довольно небольшим объёмом основной памяти (т.н. «Internal Storage»). В такой ситуации у некоторых пользователей может возникнуть идея попробовать использовать внешнюю SD-карту в качестве основной памяти на их Андроид-устройстве. В данном материале я расскажу, как SD-карту сделать основной памятью на гаджетах Андроид, и какие способы нам в этом помогут.

Разбираем, как SD-карту сделать основной памятью на Андроид

Для осуществления данной задачи вам понадобится скоростная SD-карта (желательно, 10 класса или быстрее). Карты 6, а особенно 4 и 2 классов для таких целей не пригодны, ваша система вследствие их использования существенно замедлит свою работу, что вряд ли понравится кому-то из пользователей.

Также важно понимать, что срок действия такой SD-карты вследствие активной на неё нагрузки будет существенно меньше, нежели если бы нагрузка на карту проходила в стандартном режиме.


Способ №1. Изменяем содержимое файла Vold.fstab

Первый из описанных способов предполагает изменение содержимого файла системных настроек «Vold.fstab». После осуществления указанных изменений ОС Андроид будет считать вашу SD-карту внутренней памятью устройства, при этом учтите, что ряд установленных ранее приложений могут перестать работать.

Важно знать, что данный способ работает только на рутированных устройствах, на которых установлена ОС Андроид ниже (!) , нежели версия 4.4.2. В версиях ОС Андроид 4.4.2 и выше указанный файл, скорее всего, вы попросту не найдёте.

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

Итак, для осуществления данного способа выполните следующее:

Например, это могут быть такие строки:

  • dev_mount sdcard/storage/sdcard0 emmc@xxxxxx
  • dev_mount sdcard2/storage/sdcard1 auto/xxxxxx

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

После изменений эти строки будут иметь вид:

  • dev_mount sdcard/storage/sdcard1 emmc@xxxxxx
  • dev_mount sdcard2/storage/sdcard0 auto/xxxxx

Сохраните произведёнными вами изменения, а затем перезагрузите гаджет.

Ещё один вариант как сделать карту памяти основной на андроид:


Способ №2. Используем настройки ОС Андроид 6.0 и выше

Кроме первого способа, в котором я рассмотрел, как переключить память телефона на карту памяти, существует и другой способ, работающий только на настройках ОС Андроид 6.0 (Marshmallow) или выше, и позволяющий задействовать SD-карту как основную для сохранения файлов и работы с ними. Для его реализации рекомендую сделать копию данных с вашей SD-карты (если таковые на ней имеются), так как данная карта будет отформатирована системой.