Miui-память без хаоса: заметки под контролем

hraser Обновлено 25.08.2026
Биржа забирает 35%. Copyero — публикации напрямую без посредников.

Работаю тех специалистом в лаборатории мобильных прошивок, поэтому наблюдаю внутренности MIUI чаще, чем экран блокировки. Заметки в оболочке живут в каталоге /data/system/notes, используют базу SQLite с журналированием WAL, а шифрование XChaCha20 подключается лишь при активном пароле экрана.

MIUI-заметки

Быстрая фиксация мысли

Для создания записи вызываю системный виджет «Новая заметка» или открываю приложение «Заметки MIUI». Перо-иконка в правом нижнем углу открывает редактор. Голосовой ввод использует API Speech-to-Text Google, датаграммы передаются через защищённый канал gRPC. Длинное нажатие по пустому полю раскрывает меню с редким пунктом «Флеш-заметка» – микрозапись до 140 символов, которая хранится в таблице fast_memo и выгружается в оперативную память при старте приложения для мгновенной выдачи. После ввода жму «✓», скрипт JavaScript commits.js отправляет транзакцию в базу. Без доступа к root запись попадёт в резервный каталог Android/data/— миграция задействуется при сбое основного хранилища, а если текст на экране начинает самопроизвольно меняться, стоит проверить подозрительные настройки автозамены.

Стираем лишнее безвозвратно

Удаление происходит по свайпу влево или через контекстное меню «Корзина». В реальности элемент получает метку _deleted=1, а физическая очистка выполняется службой noteCleaner каждую ночь в период 02:00–02:10. Нужно освободить место немедленно — открываю «Корзина», жму «Очистить». Сервис fsck_notes вырезает запись из WAL-журнала, синхронизирует индексы B-Tree. Для параноиков доступен метод shred — подключаю ADB, перехожу в shell и выполняю:

sqlite3 /data/system/notes/notes.db «DELETE FROM note WHERE _id=###, VACUUM,» при этом похожим образом полезно помнить, как устраняется ошибка 404, когда нужный ресурс внезапно перестает находиться.

Команда VACUUM принудительно перестраивает файл, затирая битые страницы. Это надёжнее, чем обычное системное удаление.

Миграция на SD-карту

Перенос контента удобен при смене устройства либо перепрошивке. MIUI 13 умеет отдавать данные через встроенную утилиту «Резервирование». Запускаю её, отмечаю пункт «Заметки». Создаётся архив .bak в каталоге MIUI/backup/AllBackup. Для переносов на внешние накопители подключаю карту microSD, перемещаю архив в root карты. На новом телефоне открываю ту же утилиту, выбираю «Восстановить». Если microSD недоступна, задействую протокол MTP и копирую файл на ПК, затем перебрасываю по USB OTG.

При ручном способе важно учесть разницу в идентификатор пользователя (int UID). После прошивки кастома UID заметок может смениться. Решаю проблему через chown system:system *.db внутри каталога notes. Затем выставляю права 600 — без этого оболочка не прочитает базы.

В редких случаях приложение падает с java.lang.IllegalStateException: attempt to write a readonly database. Причина — битый флаг в header WAL. Удаляю файл notes.db-wal, MART создаёт новый журнал, данные остаются нетронутыми.

Подключая синхронизацию Icloud, обращаю внимание на параметр delta_sync. Он высчитывает хеш SHA-256 каждой заметки, передавая лишь изменённые блоки. Такое дифференциальное резервирование экономит трафик, но при нестабильной сети возникает состояние split-brain, когда версия в облаке расходится с локальной. Лечу конфликт, экспортируя обе версии в TXT, сравниваю через diff, потом вручную объединяю.

Завершая, рекомендую держать резервные копии в двух средах — локальной и облачной — и периодически проверять целостность через md5sum, чтобы внезапный write-amplification флеш-памяти не уничтожил идеи.