根据我见过的文档,开发人员应该在构建项目之前运行cordova platform add FOO
。这似乎是构建管理中的一个缺点;我认为有关项目支持的平台的信息应该包含在项目本身中。
如果我要引进一个新的开发人员,她应该能够克隆项目存储库并构建项目,而不必询问/猜测支持哪些平台。由于platform目录下的代码是自动生成的,因此建议不对其进行版本控制,但我不知道其他任何地方存在的这些信息(即支持的平台列表)。看起来这种数据属于config.xml。
我错过了什么,或者我完全偏离了这里?
可能一种解决方法是实现一个循环遍历受支持平台数组并运行cordova platform add $array_item
的钩子,就像示例钩子010_install_plugins.js中的referenced by the documentation脚本一样。 before_build挂钩是否合适?我是Cordova的新手,所以如果有理由这种方法没有意义,我会很高兴听到他们。
答案 0 :(得分:0)
现在(当前版本是Cordova 3.5)没有办法以声明方式指定平台。 这个功能由Cordova团队积极讨论,并且已经做了一些工作来实现这一目标。计划在2014年底或2015年初之前发布的Cordova 4.0不会提前实施。
before_build
hook不是正确的地方,因为cordova build ...
命令在执行构建和运行挂钩之前再次检查已安装平台的列表。
答案 1 :(得分:0)
截至目前,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本地支持此类内容之前,可能需要考虑这一点。