- Android-смартфон с включённой отладкой по USB (минимальная версия ОС — сверьтесь с документацией AVault);
- ПК с Windows/macOS/Linux и Android SDK Platform Tools (adb);
- USB-кабель с передачей данных (не «charging only»);
- APK-файл AVault из официального источника — ссылку и контрольную сумму берите там же;
- 1–2 ГБ свободного места на телефоне и столько же на ПК;
- tar и openssl на ПК (в Linux/macOS есть по умолчанию, на Windows — через WSL или Git Bash).
adb — Android Debug Bridge, консольная утилита, которая отправляет команды телефону по USB и умеет копировать файлы. Всё, что ниже, делается без root именно через неё.
adb devices — на экране телефона подтвердить отпечаток ключа.adb shell df -h /data.adb version
adb devices
Ожидаемый вывод — версия ADB и строка с серийным номером и статусом device:
Android Debug Bridge version 1.0.41
List of devices attached
R58M12ABCDE device
Если вместо device стоит unauthorized — на телефоне не нажали «Разрешить отладку». Если список пуст — проверьте кабель и режим USB «Передача файлов».
Пример: adb shell df -h /data возвращает строку вида /data 108G 42G 66G 39% — свободных 66 ГБ, места достаточно.
Отдельно проверьте, что прошивка не блокирует сторонние приложения: на китайских оболочках агрессивная экономия батареи и запрет автозапуска убивают фоновую запись. Как это отключается — разобрано в гайде Как отключить рекламу, рекомендации и новостные подсказки на китайских Android-смартфонах без root.
Что сделать: установить APK через adb, затем выдать приложению разрешение на микрофон и проверить, что оно реально выдано.
Зачем: без RECORD_AUDIO приложение запускается, но пишет пустые файлы; установка через adb удобнее тем, что сразу видно результат в консоли, а не «Приложение не установлено» на экране.
Сначала узнайте точное имя пакета — оно может отличаться от названия на иконке:
adb install -r ~/Downloads/avault.apk
adb shell pm list packages | grep -i -E 'vault|call'
Ожидаемо: Success, затем строка package:com.<разработчик>.avault — это и есть <пакет AVault> для дальнейших команд.
Выдайте разрешение и проверьте фактический статус:
adb shell pm grant <пакет AVault> android.permission.RECORD_AUDIO
adb shell dumpsys package <пакет AVault> | grep -i record_audio
Успех — строка android.permission.RECORD_AUDIO: granted=true.
Как проверить: запустите приложение и убедитесь, что оно не просит микрофон повторно. Часть разрешений (например, доступ к журналу звонков) через adb не выдаётся — их выдают только на экране телефона; полный список нужных AVault разрешений сверьте с документацией приложения.
Пример: если после pm grant в dumpsys осталось granted=false, значит разрешение не объявлено в манифесте или уже отозвано политикой прошивки — откройте экран разрешений вручную.

Что сделать: выгрузить папку с записями на ПК, упаковать в архив и зашифровать его паролем, затем настроить регулярную передачу зашифрованного файла на свой сервер или в облако.
Зачем: файлы записи звонков — это персональные данные собеседников. Архив в облаке без шифрования читается кем угодно, у кого есть доступ к бакету; шифрование делает содержимое бесполезным без пароля.
Сначала найдите каталог записей (типовой путь для данных приложения — /storage/emulated/0/Android/data/<пакет AVault>/files; точный путь сверьте с настройками AVault или документацией):
adb shell ls /storage/emulated/0/Android/data/<пакет AVault>/files
adb pull /storage/emulated/0/Android/data/<пакет AVault>/files ./records_raw
Затем шифрование — AES-256-CBC с ключом, выведенным из пароля через PBKDF2 (PBKDF2 — медленное преобразование пароля в ключ, которое затрудняет перебор):
export REC_PASS='<ваш-длинный-пароль>' # пароль храните вне каталога с архивом
tar -czf records.tar.gz -C ./records_raw .
openssl enc -aes-256-cbc -pbkdf2 -iter 200000 -salt \
-in records.tar.gz -out records.tar.gz.enc -pass env:REC_PASS
sha256sum records.tar.gz.enc > records.tar.gz.enc.sha256
Как проверить: во-первых, тип файла — file records.tar.gz.enc должен вернуть data (а не gzip compressed data). Во-вторых, пробное расшифровывание без записи на диск:
openssl enc -d -aes-256-cbc -pbkdf2 -iter 200000 \
-in records.tar.gz.enc -pass env:REC_PASS | tar -tzf - | head -3
Ожидаемый вывод — список файлов внутри архива, например ./call_2025-05-12_10-14.m4a. Параметры -pbkdf2 -iter 200000 при расшифровке должны совпадать с шифрованием, иначе получите bad decrypt.
Пример: если в самом AVault есть встроенное шифрование записей, включите его и проверьте результат тем же способом — файл в папке не должен открываться плеером, а file должен показывать data. Наличие и название такой опции сверьте с документацией.
Перенос на собственный сервер — одна команда плюс проверка целостности на приёмнике:
rsync -av records.tar.gz.enc records.tar.gz.enc.sha256 \
<пользователь>@<ваш-сервер>:/srv/records/
ssh <пользователь>@<ваш-сервер> 'cd /srv/records && sha256sum -c records.tar.gz.enc.sha256'
Успех — records.tar.gz.enc: OK. Только после этого удаляйте локальную копию. Если своего сервера нет, а держите данные на домашней машине, схема хранения и синхронизации разобрана в гайде Как вести семейный бюджет на своём сервере: установка Actual Budget и синхронизация с Android — принцип «свой сервер + шифрованный канал» там тот же.
| Этап | Команда | Ожидаемый результат | |
|---|---|---|---|
| Выгрузка | `adb pull …` | `1 file pulled, 0 skipped` | |
| Шифрование | `openssl enc …` | появился `records.tar.gz.enc` | |
| Проверка типа | `file records.tar.gz.enc` | `data` | |
| Расшифровка | `openssl enc -d … \ | tar -tzf -` | список `.m4a`/`.amr` файлов |
| Отправка | `rsync …` | `records.tar.gz.enc: OK` |

Что сделать: сделать тестовый звонок, убедиться, что файл появился и не пустой, прогнать полный цикл «расшифровка → воспроизведение» и только потом считать настройку завершённой.
Зачем: типичная ошибка — настроить перенос по пустому каталогу и узнать об отсутствии записей через неделю.
adb shell ls -lt /storage/emulated/0/Android/data/<пакет AVault>/files | head -5
adb shell du -h /storage/emulated/0/Android/data/<пакет AVault>/files
Как проверить: после звонка длительностью 30–60 секунд в верхней строке списка должен появиться свежий файл, а его размер — быть заметно больше нуля. Если ffprobe установлен, длительность проверяется точно:
ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 call_2025-05-12_10-14.m4a
Ожидаемый вывод — число секунд, близкое к длительности разговора, например 54.312000.
Полный цикл проверки:
1. Позвонить на телефон с другого номера, поговорить 30 секунд, положить трубку.
2. Выполнить adb pull каталога записей.
3. Зашифровать архив командами из Шага 2.
4. Расшифровать в отдельный каталог и открыть файл плеером — слышно обе стороны (насколько это поддерживает ваша модель и версия ОС; совместимость сверьте с документацией AVault).
5. Сверить sha256sum локального и серверного файла — значения совпадают.
Успех выглядит так: файл есть, он не нулевой, после расшифровки воспроизводится, контрольные суммы на ПК и сервере идентичны, исходная папка на телефоне очищена после подтверждения.
Проблема. Установка APK обрывается на телефоне Xiaomi/Redmi.
adb: failed to install avault.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]adb install -r avault.apk. После подтверждения на экране телефона ожидайте Success.Проблема. Запись создаётся, но весит 0 байт или обрывается через минуту.
java.io.FileNotFoundException: /storage/emulated/0/Android/data/<пакет AVault>/files/call_2025-05-12_10-14.m4a: open failed: EACCES (Permission denied)adb shell pm grant <пакет AVault> android.permission.RECORD_AUDIO, проверить granted=true, затем в настройках телефона снять ограничение батареи для AVault и разрешить автозапуск. Проверка — новый тестовый звонок и adb shell du -h <файл> с ненулевым размером.Проблема. Архив не расшифровывается.
bad decrypt 40B7F3A1:error:1C800064:Provider routines::bad decrypt-iter, -pbkdf2) при шифровании и расшифровке.sha256sum -c records.tar.gz.enc.sha256, ожидается OK. Если и это не сходится, файл повреждён при передаче — копируйте заново.Вы установили AVault через adb, выдали разрешение на микрофон, настроили шифрование архива с записями и проверку целостности при переносе. Дальше имеет смысл поставить rsync в расписание (cron или «Планировщик заданий») и раз в месяц проверять восстановление архива из резервной копии.
Нужен ли root, чтобы записывать звонки на Android?
Нет, установка и работа AVault выполняются без root — все шаги выше используют только adb и обычные разрешения. Какие именно типы звонков и на каких прошивках поддерживаются, сверьте с документацией приложения: политика Android в отношении записи звонков различается по версиям ОС.
Где AVault хранит файлы записей?
Чаще всего в каталоге данных приложения на внутреннем накопителе; точный путь сверьте в настройках AVault или документации, а затем проверьте через adb shell ls. Если каталог пуст, запись не велась — смотрите разрешения и ограничения батареи.
Можно ли восстановить запись без пароля?
Нет. Архив зашифрован AES-256, ключ выводится из пароля через PBKDF2; без пароля останется только набор байтов. Храните пароль отдельно от архива, иначе шифрование теряет смысл.
Как перенести записи, если нет ПК?
Можно выполнить те же операции на самом телефоне в Termux — там доступны tar, openssl и rsync. Пошаговая установка окружения описана в гайде Как запустить Linux на Android без root: Termux, PRoot и ИИ-инструменты.