cordova的多个config.xml文件

14

我正在建立一个 Cordova 应用程序,我允许不同的客户进行品牌定制。我想知道是否有一种方法可以拥有一个默认的 config.xml 文件,并有第二个文件来覆盖默认的品牌值。我需要覆盖很多值,然而一些更明显的是:

  • widget 的 id 和 version 属性
  • 名称
  • 描述
  • 作者
  • 图标(如何覆盖多个相同的标签?)
  • 启动画面

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


无能为力,我也在寻找解决方案。最终可能需要一个小脚本,将客户端配置文件复制/合并到config.xml中,然后使用该配置文件运行cordova。客户端配置文件包含客户端特定图像的路径、名称和描述。一个简单的node.js脚本可以通过XSLT合并这两个XML文件。 - philk
你找到解决方案了吗?还是你最终只是写了脚本? - LuKenneth
1
我写了这个脚本。 - philk
2个回答

1

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

以下是我的解决方案:

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

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

3. 使用命令 cordova create... 创建新的应用程序实例。

4. 在每个实例中,将 config.xml 的模板复制到现有文件上,并根据特定实例进行修改。

5. 要么将目录上面的 www 文件夹复制到其中,要么将 project_root 中的 www 文件夹删除并在目录上面创建到 www 文件夹的符号链接。

现在您拥有了独立的应用程序实例,所有实例都共享相同的 www 内容,但具有自定义的 config.xml 文件。

示例目录结构:

App_Name
  \config.xml
  \www
  \{project_instance_1}
    \{config replaced}
    \www -> ../www
  \{project_instance_2}
    \{config replaced}
    \www -> ../www

1
我目前为每个品牌应用使用单独的项目,但是如果我想添加/更新全局配置选项,则必须编辑每个config.xml,并非常小心地不要漏掉任何一个。我的目标是拥有一个主配置文件,然后是第二个仅包含该品牌配置的文件,而不是维护许多完整的配置文件。 - trex005
1
听起来很复杂。不知道为什么Cordova CLI没有包含一个参数来指定使用的 config.xml。这将使每个客户端都有一个配置文件变得容易。 - philk

1
你可以使用 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
希望能对您有所帮助,
祝好!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接