Android gradle项目可以合并库xml资源

时间:2017-09-19 13:13:47

标签: android xml gradle merge aar

首先,我动态生成一些android库,其中包含src / main / res / xml / config.xml中的xml文件,其中包含库特定数据。

接下来,当我构建我的Android应用程序时,生成的库作为依赖项,我希望生成的apk包含与所有librairies xml配置文件合并的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 个答案:

答案 0 :(得分:0)

我认为你的建议方式不可能。另一个值得探索的方法是将XML文件创建为具有唯一名称的资产(例如assets/plugin-(plugin-name).xml)。

这有两个属性可以在编译时和运行时实现:

  • 由于文件名是唯一的,您最终会在资产目录中拥有一个不会被覆盖的文件集合(按照您的示例,可以是assets/plugin-Plugin1.xmlassets/plugin-Plugin2.xmlassets/plugin-Plugin3.xml ),
  • 因为它们位于资产目录中,所以can be listed

通过这种方式,您可以在运行时获得与您正在寻找的相似的效果。唯一值得一提的是在你创建的每个插件中包含一个合适的Proguard规则文件,如果你缩小你的APK,我知道你的插件将在运行时通过反射进行实例化。