Краткое описание: Как создать APK и отдельные библиотеки (под которыми я подразумеваю набор классов (и в идеале - ресурсы) в той или иной форме, такие как JAR, AAR или DEX файлы), но не включают те библиотеки в АПК; вместо этого приложение загружает их во время выполнения?
Detail
Итак, мой главный вопрос: как создать такое приложение (например, Gradle). Как указать, какие классы входят в файлы JAR или DEX? Я создаю модуль Android Studio для каждого файла DEX, в который я хочу закончить?
Близкий вопрос заключается в том, как Java-код должен затем загружать внешние библиотеки и получать доступ к их классам во время выполнения. Для последнего я надеюсь, что подход, показанный в доступе к классам приложения из файла dex загрузчиком классов, будет работать.
Я пробовал инструкции в https://developer.android.com/studio/projects/android-library.html, но это создает APK, который включает библиотеку зависимостей.
Я также пробовал Multidex (https://developer.android.com/studio/build/multidex.html), но это, похоже, не оставляет разработчику никакого контроля над тем, какие классы зайдите в файл DEX и, кроме того, упакуйте их все в один APK. AFAICT не может контролировать загрузку этих файлов DEX во время выполнения.
Фон
Здесь есть возможность " проблема X-Y", поэтому мне лучше объяснить фон.
Я создаю приложение для клиента. Он не будет распространяться через магазин приложений, поэтому у него не будет доступа к нормальному механизму обновлений. Вместо этого клиент хочет, чтобы приложение могло обновить себя, загрузив новые компоненты самостоятельно, чтобы заменить старые компоненты, без необходимости вручную загружать новый APK вручную. Основной мотив здесь заключается в том, что обновления должны быть легкими для нетехнических пользователей. Если приложение может контролировать процесс обновления, оно может сделать его гладким и ориентированным на пользователя.
Кроме того, приложение будет использоваться в тех областях, где доступ в Интернет ограничен и дорог, поэтому клиент хочет иметь возможность выпускать обновления приложений в небольших кусках (например, 2 МБ), а не заставлять пользователя повторно загружать все приложение для получения небольшого обновления.
Один из аспектов требований, которые я должен упомянуть в случае, если это имеет значение, заключается в том, что библиотеки, которые должны быть загружены во время выполнения, должны жить на карте microSD. Это также может помочь в распространении обновлений без доступа в Интернет.
Текущее состояние приложения заключается в том, что он написан примерно на 50%: то есть была выпущена пара более ранних версий, но теперь приложение необходимо изменить (изменить) для удовлетворения вышеуказанных требований, а также других,