我正在建立一个 Cordova 应用程序,我允许不同的客户进行品牌定制。我想知道是否有一种方法可以拥有一个默认的 config.xml 文件,并有第二个文件来覆盖默认的品牌值。我需要覆盖很多值,然而一些更明显的是:
- widget 的 id 和 version 属性
- 名称
- 描述
- 作者
- 图标(如何覆盖多个相同的标签?)
- 启动画面
如果 Cordova 没有这样做的方法,那么是否有一个 Linux 工具可用于此目的,可以输出单个 config.xml 文件?
我正在建立一个 Cordova 应用程序,我允许不同的客户进行品牌定制。我想知道是否有一种方法可以拥有一个默认的 config.xml 文件,并有第二个文件来覆盖默认的品牌值。我需要覆盖很多值,然而一些更明显的是:
如果 Cordova 没有这样做的方法,那么是否有一个 Linux 工具可用于此目的,可以输出单个 config.xml 文件?
最好的方法是为应用程序的每个实例创建单独的项目。
以下是我的解决方案:
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
config.xml
。这将使每个客户端都有一个配置文件变得容易。 - philk<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>
xsltproc
来解析/更改文件。
xsltproc configs/test/parser.xslt ./config.xml > output_config.xml
请注意,输出文件需要与原始文件不同,之后您可以使用mv
将输出替换为config
。
config.xml
中,然后使用该配置文件运行cordova。客户端配置文件包含客户端特定图像的路径、名称和描述。一个简单的node.js脚本可以通过XSLT合并这两个XML文件。 - philk