Android Expansion apk

Я просматривал документы APK EXPANSION FILES в андроиде, и мне было интересно, можем ли мы иметь все файлы макета в патче apk и бизнес-логике приложения в главном apk?

Я прочитал этот Android-приложение. Перерыв 50MB Barrier тоже.

Я попытался создать это, но проблема, с которой я столкнулся, заключалась в том, что имена наших виджетов должны быть в файле R.java, который генерируется автоматически. Если у меня есть файлы макета в файле патча не в главном файле, тогда я не могу обратиться, используя R. id.xxx.

Поэтому, пожалуйста, скажите мне, возможно ли это или нет?

Если это возможно, то как это можно достичь?

Я также хочу знать, каковы ресурсы или активы, которые можно добавить в patch apk.

Говоря прямо, невозможно отделить файлы макета от apk, а затем попытаться получить к нему доступ, используя R.id.whatever

Файлы расширения предназначены для хранения таких активов, как носители, документы и другие подобные статические вещи, которые использует ваше приложение, и содержимое пакета расширения хранится на общем хранилище устройства и не связано с файлом apk. Чтобы получить доступ к активам файла расширения, вы должны закодировать свое приложение, чтобы прочитать их из общего хранилища этого устройства.

Возвращаясь к вопросу сохранения файлов макета в файле расширения. Для этого вам придется написать собственный макет парсера с базовыми функциями, аналогичными LayoutInflator. Вы не можете использовать LayoutInflator для анализа любого файла макета, который не является частью apk или хранится на любом внешнем хранилище. Поэтому идея состоит в том, чтобы хранить файлы макета в файле расширения (который будет отсутствовать в apk, на общем хранилище устройств), проанализировать файл с помощью собственного анализатора и добавить представления к основному макету во время выполнения. Хотя вы не сможете получить доступ к своим представлениям с помощью R.id.whatever, но вы всегда можете использовать визуальное дерево для доступа к представлениям или при разборе представлений хранить ссылочные объекты для доступа к ним для последующего использования.

Надеюсь, это даст вам отправную точку.