Чтобы освободить внутреннюю память смартфона, пользователям Huawei часто требуется перенести тяжелые приложения на внешний накопитель. В современных версиях EMUI 10+ и HarmonyOS 2+ стандартный пункт меню «Перенести на SD-карту» доступен не для всех игр, а только если разработчик разрешил такую установку в манифесте APK. Если кнопка неактивна, система блокирует миграцию данных на уровне прошивки.

Ситуация усложняется тем, что многие современные модели (серии P40, Mate 40, Nova 8 и новее) используют проприетарные карты памяти NM Card вместо стандартных microSD, а бюджетные линейки часто лишены слота расширения вовсе. Перед началом работы проверьте наличие физического слота и совместимость формата накопителя в спецификации конкретной модели на официальном ресурсе.

Почему стандартный перенос может не сработать

Главная причина — политика Google и Huawei по безопасности данных. Приложения с флагом android:installLocation="internalOnly" жестко привязаны к защищенному разделу /data/app. Это касается большинства онлайн-игр (Genshin Impact, PUBG Mobile, Call of Duty Mobile), банковских клиентов и системных утилит. Попытка форсировать перенос без прав суперпользователя приведет к ошибке установки или потере прогресса.

Кроме того, скорость чтения/записи карты памяти критична. На классах ниже UHS-I U3 (V30) текстуры будут подгружаться с задержкой, а в открытых мирах — появляться «пропадания» геометрии. Рекомендую использовать накопители с классом Application Performance Class 2 (A2), гарантирующие минимальные IOPS для случайных операций.

⚠️ Внимание: Форматирование SD-карты как «внутренней памяти» (Adoptable Storage) в EMUI скрыто или убрано производителем. Пытаться вернуть его через ADB-команды sm set-force-adoptable true рискованно: при выходе из строя карты вы потеряете доступ ко всем данным телефона, включая системные настройки.

Способ 1: Нативный перенос через настройки (если доступно)

Этот метод работает для автономных игр и приложений, не требующих постоянной синхронизации с сервером. Алгоритм действий идентичен для EMUI и HarmonyOS.

  • 📱 Откройте Настройки → Приложения → Все приложения.
  • 🔍 Найдите нужную игру в списке и тапните по названию.
  • 💾 Нажмите Память → Изменить → выберите SD-карта.
  • ⏳ Дождитесь завершения процесса (может занять несколько минут для больших файлов).

После завершения значок приложения в лаунчере может обновиться. Запустите игру для проверки целостности кэша. Если игра требует дополнительную загрузку ресурсов (OBB), они часто остаются во внутренней памяти по пути /Android/obb/ — это нормальное поведение движков Unity и Unreal Engine.

☑️ Чек-лист перед переносом игры

Выполнено: 0 / 4

Способ 2: Использование ADB для принудительного переноса (без Root)

Android Debug Bridge позволяет обойти ограничение манифеста для приложений, у которых installLocation установлен в auto или preferExternal, но системный UI скрывает кнопку. Требуется ПК с установленными драйверами Huawei HiSuite и включенной отладкой по USB.

  1. Включите «Режим разработчика» (7 тапов по номеру сборки) и «Отладку по USB».
  2. Подключите телефон к ПК, в терминале выполните adb devices (должен отобразиться серийный номер).
  3. Узнайте пакетное имя игры: adb shell pm list packages | findstr "game_name".
  4. Выполните команду переноса: adb shell pm move-package com.developer.gamename.

Команда вернет Success или код ошибки. Частая ошибка MOVE_FAILED_INSUFFICIENT_STORAGE означает, что на карте недостаточно места или файловая система FAT32 не поддерживает файлы >4 ГБ (нужен exFAT). Ошибка MOVE_FAILED_DOESNT_EXIST — пакет не найден или уже на SD.

Как отформатировать карту в exFAT на телефоне

Вставьте карту → Настройки → Память → SD-карта → Меню (три точки) → Форматировать → Выберите exFAT. Внимание: все данные на карте будут удалены. Резервное копирование обязательно.

Способ 3: Link2SD и права Root (для продвинутых)

Если загрузчик разблокирован и установлен Magisk, утилита Link2SD создает символические ссылки (symlinks), перенося папки /data/data/pkg и /data/app/pkg на второй раздел SD-карты (ext4). Это единственный рабочий способ заставить работать «непереносимые» онлайн-игры с внешнего накопителя.

Процесс требует разбивки карты на два раздела: первый — FAT32/exFAT для медиа, второй — ext4 (2-4 ГБ) для приложений. Link2SD монтирует второй раздел в /data/sdext2 при каждой загрузке через скрипт init.d или Magisk-модуль. Риск: неправильная настройка монтирования приведет к зацикливанию загрузки (bootloop), потребуется прошивка через eRecovery.

⚠️ Внимание: Разблокировка загрузчика на современных Huawei (после 2018 года) официально недоступна — коды не выдаются. Получение Root возможно только через уязвимости конкретных версий прошивки (например, CVE-2022-XXXX), что ломает SafetyNet/Play Integrity и блокирует оплату NFC, Netflix HD и банковские приложения.

Сравнение методов переноса

МетодТребует RootРаботает с онлайн-играмиРиск для системыСложность
Настройки системыНетРедкоНизкийНизкая
ADB (pm move-package)НетИногдаНизкийСредняя
Link2SD (symlink)ДаДаВысокий (bootloop)Высокая
Adoptable Storage (ADB)НетДаКритический (потеря данных)Средняя

Что делать с кэшем и OBB-файлами

Даже если основной APK ушел на SD, тяжелые кэши (файлы .obb в /Android/obb/ и кэш в /Android/data/) часто остаются во внутренней памяти. Вручную переносить их через файловый менеджер (например, Files by Google или встроенный «Файлы») можно, но при обновлении игра вернет их обратно.

Решение — использовать приложения-синхронизаторы папок (например, FolderSync или AutoSync), которые по расписанию копируют содержимое /Android/obb/com.game на SD и создают симлинк обратно (требует Root). Без Root можно только вручную чистить кэш через настройки приложения перед обновлением, чтобы не забивать «внутренку».

💡

Если игра после переноса не запускается или вылетает на черном экране — верните её во внутреннюю память, очистите кэш и данные приложения, затем попробуйте перенести снова. Часто помогает переустановка с уже вставленной картой памяти.

Особенности на планшетах MatePad и MatePad Pro

На планшетах под HarmonyOS 3/4 логика идентична смартфонам, но есть нюанс: многие модели поддерживают PC Mode (режим ПК) и внешние мониторы. Игры, перенесенные на SD, в этом режиме могут демонстрировать снижение FPS из-за ограничений контроллера памяти при одновременной работе дисплея и USB-C видео-выхода. Для стационарного гейминга лучше оставить тяжелые тайтлы во внутреннем UFS 3.1.

Также проверяйте поддержку AppGallery — некоторые игры из каталога Huawei имеют флаг «Поддержка установки на SD» в описании. Это экономит время на попытки переноса несовместимых пакетов.

💡

Главный вывод: без Root правами перенести на SD можно только те игры, чьи разработчики явно разрешили это в манифесте. Для остальных — либо ADB-хак (не гарантирован), либо Root + Link2SD (рискованно), либо покупка модели с большим внутренним хранилищем.

📊 Какой способ переноса игр на SD-карту вы используете чаще всего?
Нативный через настройки
ADB (pm move-package)
Link2SD / Root-методы
Не переношу, покупаю телефон с большей памятью

Часто задаваемые вопросы

Почему кнопка «Перенести на SD-карту» серяя/неактивна?

Разработчик игры запретил установку на внешний носитель в файле AndroidManifest.xml (параметр installLocation="internalOnly"). Это стандарт для онлайн-игр с античитом, банковских приложений и системных сервисов. Обойти без Root невозможно.

Игра перенесена, но внутренняя память не освободилась. Почему?

Переносится только исполняемый код (APK) и библиотеки (lib). Кэш, сохранения, загруженные текстуры (OBB) и данные аккаунта остаются в /data/user/0/pkg/ и /Android/obb/pkg/. Это может занимать 80-90% от размера игры.

Можно ли использовать OTG-флешку вместо SD-карты?

Технически да, через OTG-адаптер и приложения вроде StickMount (требует Root) или нативную поддержку в «Файлах» (только чтение/запись медиа). Устанавливать приложения на OTG-накопитель стандартными средствами Android нельзя — система не видит его как валидный том для установки.

Безопасно ли извлекать SD-карту, если на ней стоят игры?

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

Обновление игры сбросит перенос на SD-карту?

При обновлении через AppGallery или Google Play обновленный APK часто устанавливается обратно во внутреннюю память (в раздел /data/app/), а старый удаляется. После каждого обновления проверяйте раздел «Память» в настройках приложения и повторяйте перенос при необходимости.