有没有一个cordova插件可以从config.xml中读取值?

11
我希望从我的 Cordova/PhoneGap 应用程序的 config.xml 文件中在运行时读取以下值:
  • name
  • copyright
  • description
然而,惊讶地发现 API 参考指南中没有“Config”功能: http://cordova.apache.org/docs/en/3.4.0/index.html 我已经写了自己的函数来手动读取和解析该文件,但我觉得一定有更好(现成的)的方法。
开发人员应该手动解析 config.xml 来提取必要的信息吗?还是有现有的插件可以用来做这个工作?

卡在同一个问题上了:https://dev59.com/HIHba4cB1Zd3GeqPWtgY。 - jviotti
1
对于未来的搜索者:根据您的需求,您可以在JavaScript文件中放置占位符,并使用构建钩子替换它们。这个gist让我朝着正确的方向前进了。 - Hobo
3个回答

6
您可以在 iOS、WP7、WP8、Windows8 和可能的 Ubuntu 上使用以下代码。
function readConfig() {
    var xhr = new XMLHttpRequest();
    xhr.addEventListener("load", function () {
        var parser = new DOMParser();
        var doc = parser.parseFromString(xhr.responseText, "application/xml");
        alert("Description : " + 
              doc.getElementsByTagName("description").item(0).textContent);
    });
    xhr.open("get", "../config.xml", true);
    xhr.send();
}

针对 Android 平台,您需要将文件路径从 "../config.xml" 更改为 "../../android_res/xml/config.xml"

以下是来自 Cordova 邮件讨论中的相关答案: https://www.mail-archive.com/dev@cordova.apache.org/msg14313.html

此外,还有一个非官方插件可用于读取配置信息: https://github.com/apache/cordova-labs/tree/cdvtest/cordova-plugin-appsettings


1
那段代码片段在Android或Blackberry上无法运行。邮件列表中关于该代码的讨论表明编写一个本地插件来返回config.xml位置可能是最可靠的方法。有一个未解决的问题已经开放了近一年,详见开放票务 - James

3

对于不想麻烦地处理xhr查询的人,有两个插件可供使用:

1 plugin-buildinfo(仅适用于Android和IOS,但非常好用)

2 plugin-app-version(更轻量级,但支持更多平台)

要快速开始使用第二个插件,您只需将插件添加到您的项目中即可:

cordova plugin add https://github.com/whiteoctober/cordova-plugin-app-version.git

并且可以按照以下方式调用所需位置:
cordova.getAppVersion(function (version) {
    alert(version);
});

3
您可以使用以下Cordova插件:
cordova plugin add cordova-plugin-customconfigparameters

Config.xml 中添加您的自定义参数作为首选项标签:
<preference name="name" value="Ibrahim"/>
<preference name="copyright" value="Direct Direction 2017"/>
<preference name="description" value="Information Technology"/>

注意:确保首选项名称为小写(以适用于IOS)。
然后,在您的页面中使用以下脚本从Config.xml获取密钥值:
var paramkeyArray=["name","copyright","description"];
CustomConfigParameters.get(function(configData){
    console.log(configData.name);
    console.log(configData.copyright);
    console.log(configData.description);
},function(err){
  console.log(err);
},paramkeyArray);

更多细节请参见https://www.npmjs.com/package/cordova-plugin-customconfigparameters


欢迎!您可能会发现查看此指南 https://stackoverflow.com/editing-help#code 有助于格式化代码块。干杯! - Rich Churcher

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