2014-09-05 65 views
1

根据我见过的文档,开发人员在构建项目之前应该运行cordova platform add FOO。这在构建的管理中似乎有点不足;我认为项目支持的平台信息应包含在项目本身中。在科尔多瓦有没有一种方法来声明式添加平台?

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

我错过了什么,或者我完全脱离了这里?

也许一种解决方法是实现一个钩子,该钩子通过一系列支持的平台进行循环并运行cordova platform add $array_item,与示例钩子referenced by the documentation中的010_install_plugins.js脚本非常相似。 before_build是否是一个合理的人选?我是科尔多瓦新手,所以如果有理由,这种方法没有意义,我很乐意听到他们的消息。

回答

0

截至目前,科尔多瓦不支持这一点。但是,难道你不能通过使用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,你可以检查项目了(假设你安装的软件开发工具包,等等),然后执行build.sh而非cordova build...。如果适当的/platforms/<platform>目录不存在,平台将被添加,但如果它确实存在,它将被简单地跳过。它需要一些保持最新的支持平台的列表,并且它会混乱你的项目的根目录,但直到Cordova在本地支持这样的东西时,它可能是需要考虑的事情。

+0

这并不像我想要的那样优雅,但我想这样的效果一样好。无论如何,就像你说的那样,新开发者必须已经安装了SDK等,所以这个功能本身并不能解决让新开发人员迅速建立的问题。另一方面,大部分的环境设置都可以在shell脚本中完成,所以也可以用shell脚本来抽象'cordova build'。不是超级声明式的,但在一定程度上取决于shell脚本的结构。 感谢您的想法。 – GinkgoFJG 2014-09-09 20:10:41

0
  1. 现在(当前版本是Cordova 3.5)没有办法以声明方式指定平台。 Cordova团队积极讨论了此功能,并且为此做了一些工作。这并不是计划在科尔多瓦4.0之前实施,可能会在2014年底或2015年初发货。

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