cordova的多个config.xml文件

时间:2015-02-06 13:50:03

标签: cordova

我正在构建一个Cordova应用程序,我允许不同的客户品牌。我想知道是否有一种方法可以使用默认的config.xml,然后让第二个文件用品牌值覆盖默认值。我需要覆盖很多值,但更明显的一些是:

  • 小部件的ID和版本属性
  • 名称
  • 描述
  • 作者
  • 图标(如何覆盖同一个标签的多个?)

如果没有Cordova方式这样做,是否有一个我可以用于此目的的linux工具可以输出我的单个config.xml文件?

2 个答案:

答案 0 :(得分:1)

实现此目的的最佳方法是为应用程序的每个实例创建一个单独的项目。

以下是我将如何解决这个问题:

1.为config.xml文件创建模板。

2.在同一目录中创建一个www文件夹(包含应用程序的文件),在该目录中为每个应用程序实例创建project_folders

3.创建应用程序cordova create...

的新实例

4.在每个实例中,将config.xml的模板复制到现有模板上,然后针对特定实例进行修改。

5.将www文件夹从project_root上方的目录复制到其中,或从www中删除project_root文件夹并创建符号链接到{ {1}}上方目录中的{1}}文件夹。

现在您有了应用程序的单独实例,它们共享相同的www内容但使用自定义project_root文件。

示例目录结构:

www

答案 1 :(得分:0)

您可以拥有一个xlst文件来更新config.xml上的特定属性。例如,我有两个捆绑软件ID(一个用于测试,一个用于原始)。因此,我每个人都需要一个不同的<widget id="<ID>">

我的文件夹结构是:

App_Name
  \config.xml
  \configs
    \original
      \parser.xslt
    \test
      \parser.xslt

每个解析器都有其特定的id,例如:

<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:widget="http://www.w3.org/ns/widgets"
  xmlns:cdv="http://cordova.apache.org/ns/1.0"
  xmlns:android="http://schemas.android.com/apk/res/android">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>

  <xsl:template match="widget:widget/@id">
    <xsl:attribute name="id">
      <xsl:value-of select="'TEST_BUNDLE'"/>
    </xsl:attribute>
  </xsl:template>
</xsl:stylesheet>

然后我可以执行一个简单的unix命令xsltproc来解析/更改文件

xsltproc configs/test/parser.xslt ./config.xml > output_config.xml

请注意,输出文件必须与原始文件不同,此后,您可以mv的输出替换config

希望有帮助,

干杯!