Android gradle проект может объединять библиотеки XML-ресурсов
Сначала я динамически генерирую несколько библиотек Android, которые содержат файл xml в файле src / main / res / xml / config.xml, который включает специфичные для библиотеки данные.
Затем, когда я создаю свое приложение для Android с сгенерированными библиотеками в качестве зависимостей, я ожидаю, что сгенерированный apk содержит файл конфигурации xml, объединенный со всеми файлами конфигурации librairies xml, но это не так.
Плагины Манифесты Android объединены в один файл, есть ли что-то, что нужно сделать, чтобы он работал одинаково для файлов XML? Это вообще возможно?
Каждый плагин имеет файл конфигурации, который содержит, например:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugins>
<feature name="Plugin1">
<param name="package" value="com.example.Plugin1"/>
</feature>
</plugins>
и я ожидаю, что apk содержит файл конфигурации xml с содержимым для 3 плагинов:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugins>
<feature name="Plugin1">
<param name="package" value="com.example.Plugin1"/>
</feature>
<feature name="Plugin2">
<param name="package" value="com.example.Plugin2"/>
</feature>
<feature name="Plugin3">
<param name="package" value="com.example.Plugin3"/>
</feature>
</plugins>
Спасибо
1 ответ
Я не думаю, что это возможно, как вы предлагаете. Альтернативой, которую стоит изучить, будет создание файлов XML в виде ресурсов с уникальными именами (например, assets/plugin-(plugin-name).xml
).
У этого есть два свойства, которые сделали бы это возможным во время компиляции и во время выполнения:
- поскольку имена файлов уникальны, в итоге вы получите набор файлов в каталоге ресурсов, который не будет перезаписан (следуя вашему примеру, можно
assets/plugin-Plugin1.xml
,assets/plugin-Plugin2.xml
,assets/plugin-Plugin3.xml
), - поскольку они находятся в каталоге ресурсов, они могут быть перечислены.
Благодаря этому вы можете получить эффект, аналогичный тому, что вы ищете во время выполнения. Единственное добавление, которое стоит упомянуть, - это включение подходящего файла правил Proguard в каждый создаваемый плагин, если вы минимизируете свой APK, так как я понимаю, что ваши плагины будут созданы во время выполнения путем отражения.