繁体   English   中英

在Cordova中,有没有一种方法可以声明性地添加平台?

[英]In Cordova is there a way to add platforms declaratively?

根据我所看到的文档,开发人员应该在构建项目之前运行cordova platform add FOO 这似乎在构建管理中有点不足; 我认为有关项目支持的平台的信息应包含在项目本身中。

如果我要聘请新开发人员,她应该能够克隆项目存储库并构建项目,而不必询问/猜测支持哪些平台。 由于platform目录下的代码是自动生成的,因此建议不要对其进行版本控制,但是我不知道其他任何地方都存在的此信息(即,受支持平台的列表)。 此类数据似乎属于config.xml。

我是否缺少某些东西,或者我在这里完全不在基地?

也许一种解决方法是实现一个挂钩,该挂钩循环通过一系列受支持的平台并运行cordova platform add $array_item与文档引用的示例挂钩中的010_install_plugins.js脚本非常相似。 before_build钩子是否适合这样做? 我是Cordova的新手,因此,如果由于某种原因这种方法不可行,我将不胜感激。

  1. 目前(当前版本为Cordova 3.5)无法以声明的方式指定平台。 科尔多瓦团队积极讨论了此功能,并为此进行了一些工作。 计划不早于Cordova 4.0实施此功能,否则可能会在2014年底或2015年初交付。

  2. before_build钩子不是正确的位置,因为在执行构建和运行钩子之前,请再次检查cordova build ...命令已安装平台的列表。

到目前为止,Cordova不支持此功能。 但是,您不能通过使用Shell脚本来接近所描述的内容(带有钩子)吗?

# horrible-javascript-like-shell-script-pseudo-code:
var supportedPlatforms = [ 'ios', 'android', ... ];
for ( platform in supportedPlatforms ) {
  if ( !pathExists ( pathTo ( platform ) ) ) {
    var ret = shellExec ( 'cordova platform add %s', platform );
    # do something with return code if desired...
  }
}
# if all good, proceed with the build
shellExec ( 'cordova build %s', commandLineArguments ); 

假设上面的名称为build.sh ,您可以检出项目(假设您已安装SDK等),然后执行build.sh而不是cordova build... 如果不存在适当的/platforms/<platform>目录,则将添加该平台,但是如果存在,则将直接跳过该平台。 它需要进行一些维护以使支持的平台列表保持最新,并且会使项目的根目录有些混乱,但是在Cordova原生支持此类功能之前,可能需要考虑一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM