February 04, 2026
Новое в BSR в 2026 году: SFTP, обновление устаревших функций
Началось всё с того, что с 1 января 2026 года перестали действовать корневые SSL сертификаты сервиса Dropbox, использовавшиеся в старом Dropbox SDK. У всех клиентов пропала возможность выгружать файлы на Dropbox. Учитывая, что Google Drive сломался ещё раньше, а выгрузка на SD карты, внешние папки, и запись в общее хранилище вообще не работала - BSR едва не превратился в бесполезный кирпич.
Хорошо, что теперь есть ChatGPT и с его помощью любая сложная задача становится простой.
Первым делом необходимо было перейти на современную версию Android Studio (Otter 3 Feature Drop). Старый проект в новой версии перекомпилировать было не так просто, нужно было обновить многие файлы конфигурации Gradle, вылазили малопонятные ошибки, с которыми разобраться мог только ChatGPT.
После обновление проекта в целом, чтобы он хотя бы компилировался в новой Android Studio, заменить Dropbox SDK на современную версию было в целом не сложно, но потребовало обновления ещё целого ряда библиотек. Таким образом, проблема с выгрузкой Dropbox была решена. За одно я решил применить просьбу одного пользователя о времени записи 2, 5, 10, 20 минут. Выпустил обновление 2.75, чтобы у людей снова стал работать Dropbox.
Раз дело так хорошо пошло, я решил сразу разобраться и с другими накопившимися за годы проблемами:
- Выгрузка на SD карты
- Выгрузка на Google Drive
- Выгрузка по SSH/SFTP
- Ошибка при записи в общее хранилище - вообще самая частая ошибка, в BSR по умолчанию стояла галочка «Записывать в общее хранилище», а в новых Андроидах попытка записи в общее хранилище вызывала ошибку, на которую все жаловались.
Запись в общее хранилище
Как оказалось, решить эту проблему было не сложно. В новых Андроидах взамен возможности записывать в любую папку общего хранилища (как было на старых Андроидах) приложения получили закрытые папки приложений в общем хранилище, путь к папке приложения выглядит примерно так /storage/emulated/0/Android/data/ru.ag38.backgroundsoundrecorder/files/
Другие приложения всё равно не видят эту папку, то есть данные приложения всё равно приватны, и эта папка действует так же как скрытая папка приложения. Но всё же разница есть - если подключить телефон к компьютеру по USB, эту папку видно как Android/data/ru.ag38.backgroundsoundrecorder/files/ и следовательно все невыгруженные записи можно легко извлечь из телефона по USB, минуая вот эту сложную процедуру.
Выгрузка в общие папки и на SD карты
Следующее, над чем хотелось поработать - это наладить выгрузку на Google Drive. ChatGPT сначала сказал, что та методика (Storage Access Framework), которую я использовал для выгрузки на SD карты и в общие папки, может быть использована для выгрузки на Google Drive без прямого обращения к Google Drive API. Как оказалось - это не так, по крайней мере на моём телефоне. Выгрузить на Google Drive через SAF не получилось - выбрать можно было только файловые папки из памяти телефона. Решил всё-таки проверить как работает выгрузка на SD карты, и обнаружил, что выбор папки для выгрузки не сохраняется. Фактически, выгрузка на карты работала только один раз, и при следующем запуске приложения приходилось выбирать папку заново. ChatGPT помог решить эту проблему - сказал сразу что куда нужно добавить, чтобы запрос на доступ к папке был перманентным. Проверил, теперь работает надёжно. Выбираете папку в общем хранилище или на SD карте - и записи будут уходить туда. После перезагрузки приложения всё так же работает.
Выгрузка на Google Drive
Было решено не оставлять проблему Google Drive на потом и всё-таки добраться до истины. ChatGPT быстро определил в чём дело - оказалось в том, что вызов API запрашивал чувствительные разрешения (drive) вместо drive_file. На стороне Google Cloud Console я это уже давно исправил, но не мог понять почему не исправилась работа приложения. Оказалось, в коде приложения тоже нужно было убрать запрос на лишние разрешения. Убрал - больше ничего почти не менял - попробовал - работает. Выгружает файлы в папку на Google Drive как раньше. Но сильно радоваться не спешу, я всё-таки владелец этого Google Account на который записано приложение, и возможно выгружать на Drive он даёт только мне. Поэтому проверьте сами, будет ли выгружать на ваши Google Drive.
Выгрузка по SFTP/SSH
Один пользователь очень хорошо попросил ($100) о добавлении такой возможности. Он опасался, что выгрузка файлов по протоколу FTP идёт по открытому каналу связи и может быть перехвачена, его это не устраивало. Что ж, опять работа для ChatGPT. Дня начала выбрали библиотеку, которую будем использовать. Был вариант SSHJ, но остановились на Apache MINA. ChatGPT прямо само написал несколько Java-классов для работы с MINA, я их просто через copy-paste вставил в код, вроде работает и вроде закладок никаких нет. Разработали с ним порядок работы с криптографическими отпечатками серверов SSH: при соединении с новым сервером спрашивать у пользователя, доверяет ли он серверу. В случае, если отпечаток сервера изменился - автоматически ничего не выгружать, сообщить об ошибке в журнал. Пользователь должен будет зайти в настройки и снова протестировать соединение. Если уверен, что не является объектом MITM-атаки, а просто например поменялся сервер на том же адресе - тогда доверять новому отпечатку. Всё проверил, погонял в разных режимах - всё прекрасно работает.
В заключение
К сожалению, в связи с занятостю на других работах и проектах не всегда есть время поработать над улучшением BSR и иногда проблемы копятся годами. Но когда всё же время на работу по BSR появляется - приложение вновь доводится до совершенства и получает возможность радовать своих пользователей стабильной и надёжной работой.
Если опять появятся какие-то проблемы или предложения - не стесняйтесь написать здесь в комментарии, или на страницу Поддержка, или в личные сообщения.


Comments 0
No comments yet
No comments yet
Comments from #{{pages.cur.fi}} to #{{pages.cur.li}}:
: