Тема: Реализация мультиплатформенного доступа к файловым хранилищам на языке Kotlin
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задачи 5
1. Обзор 6
1.1. Предметная область 6
1.2. Существующие решения 6
1.2.1 Решения, предоставляющие интерфейс виртуальных файловых систем 7
1.2.2 Key-value решения 9
1.2.3 Решения для мультиплатформенного ввода-вывода (IO) 11
1.2.4 Вывод 12
2. Презентация решения 13
2.1. Архитектура библиотеки 13
2.1.1 Обзор функциональности и особенностей файловых хранилищ 14
2.1.2 Базовые интерфейсы виртуальной файловой системы . 16
2.1.3 Расширения 19
2.1.4 Инварианты и гарантии 21
2.1.5 Преимущества и недостатки выбранного подхода 22
2.2. Файловые хранилища, поддержанные библиотекой 23
2.2.1 SystemFS 23
2.2.2 GoogleDriveFS 24
2.2.3 SqliteFS 26
2.3. Используемые зависимости 27
2.3.1 Ktor 27
2.3.2 Зависимости на платформе Android 27
3. Детали реализации 28
3.1. Структура проекта 28
3.2. GoogleDriveFS 28
3.2.1 GoogleDriveAPI 28
3.2.2 GoogleAuthorizationRequester и его реализации . . . 30
3.3. SqliteFS 32
3.4. Тестирование 34
3.5. Прочее 34
4. Примеры использования библиотеки 35
4.1. Сборка проекта 35
4.2. Multieditor 35
4.2.1 Подключение библиотеки 35
4.2.2 Реализация бизнес-логики в общем модуле приложения 35
4.2.3 Определение списка доступных хранилищ на каждой из
целевых платформ 37
4.2.4 Реализация клиентских приложений на разных плат-формах 40
4.3. gdrive-cli 44
4.3.1 Написание логики приложения с учетом нескольких типовых ограничений на функциональность VFS 44
Заключение 46
Ссылки 47
📖 Введение
Примером такой функциональности является работа с файлами и файловыми системами. В частности, для Kotlin Multiplatform нет стандартного способа работы с файловыми хранилищами из общего кода, а значительным недостатком многих существующих решений является отсутствие поддержки браузерной платформы. Запрос от сообщества разработчиков на подобные решения подтверждается вопросами по этой теме на популярных интернет- площадках[1, 2, 3, 4, 5]. В данной работе изучается изложенная проблема и представляется решение в виде мультиплатформенной Kotlin-библиотеки, предоставляющее доступ к файловым хранилищам и поддерживающее в том числе браузерную платформу.
Структура работы. В разделе 1 осуществлен разбор предметной области и альтернативных решений данной проблемы. В разделе 2 представлена реализованная мультиплатформенная библиотека. В разделе 3 рассказывается о технических деталях её реализации. В разделе 4 представлены примеры приложений, созданных на базе данной библиотеки.
Постановка задачи
Цель работы состоит в разработке мультиплатформенной библиотеки на языке программирования Kotlin, позволяющей разработчику описывать логику работы с различными файловыми хранилищами в общем модуле мультиплатформенного проекта. Библиотека должна предоставлять интерфейс виртуальной файловой системы с иерархической структурой папок и файлов и позволять записывать и читать файлы как массивы байт. Библиотека должна быть достаточно гибкой, чтобы разработчик мог самостоятельно дополнить её функциональность (например, поддержать на базе библиотеки новое хранилище), а также иметь возможность расширения на уровне предоставляемых интерфейсов, когда от целевых хранилищ требуется поддержка особых возможностей (например, наличие у файлов атрибутов прав на чтение/запись).
От конечного продукта ожидается как минимум:
• поддержка трех платформ: JVM (для приложений, работающих в среде операционных систем Windows, Linux, и т.п.), JS (браузерные приложения), Android (мобильные приложения);
• поддержка как минимум одного облачного хранилища, доступного со всех поддерживаемых платформ.
✅ Заключение
Основным результатом данной работы является реализованная мультиплатформенная Kotlin-библиотека multifs, позволяющая описывать логику работы с виртуальной файловой системой в общем коде. Данная библиотека предоставляет поддержку трех файловых хранилищ, среди которых одно облачное, доступное на платформах JVM, Android и JS (browser). Наличие поддержки браузерной платформы является существенным преимуществом разработанного решения.
На базе созданной библиотеки реализовано два приложения, одно из которых мультиплатформенное с клиентами на трёх перечисленных платформах и поддерживающее все три файловых хранилища. Данное приложение демонстрирует возможности и процесс использования multifs с точки зрения разработчика.



