Документация ReMandre v1.1
Библиотека-плагин для Android-плагинов: скачивает и безопасно загружает .so (API 29+), поднимает pip/cffi при необходимости и даёт централизованный доступ через ReLoad.loaded_modules.
Android API 29+
Безопасная загрузка библиотек с учетом жестких W^X-ограничений системы.
Bootstrap Deps
Самостоятельная установка pip, cffi и pycparser напрямую из wheel-файлов.
Access Storage
Единое защищенное хранилище всех загруженных модулей через синглтон.
2. Для кого и когда нужно
Используй ReMandre, если твой плагин попадает под следующие критерии:
- Напрямую зависит от нативной библиотеки
.so. - Должен сам скачать библиотеку, а не раздувать вес исходного APK/плагина.
- Требует возможность отключать optional-модули в UI.
- Должен стабильно работать на Android 10+ без критических падений.
3. Компоненты
ReMandreCore
Точка входа. Читает зависимости, инициирует загрузку и инъекцию в среду.
ReLoad
Синглтон. Надежно хранит loaded_modules и выбор пользователя.
ModuleGatekeeper
Осуществляет строгий контроль доступа по __id__ плагина.
NativeLinker
Продвинутый загрузчик через android_dlopen_ext или классический ctypes.
RePip
Модуль подготовки окружения, распаковки и установки зависимостей.
SafeDownloader
Отвечает за stream-download, проверку контрольных сумм и атомарную замену.
4. Интеграция в плагин
Для базовой интеграции достаточно объявить зависимости, инициировать ядро через initialize() и прочитать загруженный модуль.
5. Формат __ReqRements__
Каждая запись в словаре задаётся по строгому формату: "имя_модуля": "url - need|optional"
Критически обязательный модуль. Если скачивание не удалось, плагин вызывает ImportError и прекращает работу.
Дополнительный функционал. Пользователь может отключить его загрузку — модуль будет проигнорирован системой.
6. Что происходит при initialize()
- Ожидание полной готовности подсистемы CFFI (проверка флага
_CFFI_READY). - Чтение и валидация конфигурации
__ReqRements__у целевого плагина. - Вызов
DependencyProgressSheet, если файлы отсутствуют локально. - Безопасное скачивание через
SafeDownloader(потоковая запись + атомарность). - Линковка библиотек через
NativeLinkerи их сохранение вReLoad._storage.
7. Файловая структура
8. Работа в Safe Mode
Если ExteraConfig.pluginsSafeMode == true, ядро ReMandre блокирует все IO-операций:
NativeLinker.load()— блокирует загрузку нативного кода.RePip.bootstrap()— отменяет установку pip/cffi.ReMandreCore.initialize()— прерывает флоу без вывода ошибок.
9. Чек-лист разработчика
- ✅ Импортировать
ReMandre(через try/except). - ✅ Объявить
__ReqRements__на уровне класса. - ✅ Вызвать
ReMandreCore.initialize(self). - ✅ Извлекать либы через
ReLoad.get().loaded_modules. - ✅ Реализовать запасной вариант для Safe Mode.
10. Простыми словами
ReMandre — это продвинутый менеджер нативных зависимостей для Android-плагинов. Он берёт на себя всю грязную работу: от скачивания .so до обхода системных ограничений Android 10+ и выдачи готовой библиотеки в твой код.