как создать APK и отдельные библиотеки, которые приложение загружает динамически

Краткое резюме: Как создать APK и отдельные библиотеки (под которыми я подразумеваю наборы классов (и в идеале ресурсы) в некоторой форме, например, файлы JAR, AAR или DEX), но не включать эти библиотеки в APK; вместо этого приложение загружает их во время выполнения?

подробность

Поэтому мой главный вопрос - как создать такое приложение (например, конфигурация 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%: то есть выпущено несколько более ранних версий, но теперь приложение необходимо изменить (реструктурировать), чтобы оно соответствовало вышеуказанным и другим требованиям.

Ответы на вопрос(2)

Ваш ответ на вопрос