如何组织多平台phonegap/cordova开发的代码

如何组织多平台phonegap/cordova开发的代码,cordova,Cordova,对于phonegap应用程序的wwwasset文件夹,是否有人有一个合理、干净的方法,在拥有iOS和Android包装器项目的情况下,拥有一个单一副本 我意识到我可以用符号链接做一些疯狂的事情,但是它不能解决cordova.js中的交换问题 我还意识到我可以为xcopy等编写一个构建脚本,这可能是我必须要做的,但我只是想知道其他人都在使用什么解决方案?编辑以提供cordova推荐的方法: 从Cordova 3.X开始,新版本支持此工作流。它允许您创建Cordova项目,在单个/www/文件夹中编

对于phonegap应用程序的
www
asset文件夹,是否有人有一个合理、干净的方法,在拥有iOS和Android包装器项目的情况下,拥有一个单一副本

我意识到我可以用符号链接做一些疯狂的事情,但是它不能解决
cordova.js
中的交换问题


我还意识到我可以为
xcopy
等编写一个构建脚本,这可能是我必须要做的,但我只是想知道其他人都在使用什么解决方案?

编辑以提供cordova推荐的方法:

从Cordova 3.X开始,新版本支持此工作流。它允许您创建Cordova项目,在单个
/www/
文件夹中编辑应用程序资产,并使用命令行工具将更改从应用程序级别
/www/
传播到各个平台特定的资产位置(比如Android的
res/www/
或iOS的
/www/
)我在回答中谈到了这一点:

我以前的答案仍然相关:

IBM Worklight提供此功能。您可以在
/common/
文件夹中创建应用程序代码,然后可以将特定于设备的代码(如果需要)放置在相应的
/Android/
/iPhone/
等文件夹中。您可以在此处免费下载开发者版:


我肯定还有其他产品,如IBM Worklight。我知道Cordova邮件列表上有一些NetBeans开发人员。我肯定还有其他消费产品(如果您找到任何产品,请编辑此答案并列出!)

我有一个通用的“PhoneGap”文件夹和VS解决方案,然后在“iOS”和“Android”子目录中,为每个平台提供一个单独的代码库,以及所有相关的Xcode和Eclipse工作区。这是任何特定于设备的调整,或者通过模拟器进行测试,都可以轻松完成

到目前为止,这很简单

我想我决定不使用符号链接是因为OSX上的问题?我不太记得了

当时我正在使用TFS,因此我编写了一个控制台应用程序,在运行时,它会将TFS中挂起的更改复制到您配置的任何子目录中。这意味着所有3个代码库都将一起更新。我决定不自动执行此步骤,而是让用户通过运行控制台应用程序来控制是否复制了它们的更改。该应用程序可以在需要时添加、编辑或删除现有文件,我还可以忽略一个“黑名单”,其中包括
cordova.js

没花太长时间就完成了,MSDN文档是合理的:

以下是一个片段:

var teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://dev:8080/tfs/MyCollection"));
versionControlServer = teamProjectCollection.GetService(typeof(VersionControlServer)) as VersionControlServer;
var pendingSets = versionControlServer.QueryPendingSets(new string[] { "$/" }, RecursionType.Full, workspaceInfo.Name, workspaceInfo.OwnerName);

if (pendingSets.Length > 0)
{
    var allPendingChanges = pendingSets[0].PendingChanges;
}

...
以下是名称空间:

using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

我没有项目的包装器。我通常做的是在Subversion上对www文件夹进行版本设置。然后我在www中有一个文件夹,其中的文件会根据iOS或Android的不同而变化,比如cordova.js或javascript配置文件。但除此之外,我并没有做更多的工作。有趣的是,Worklight不是电话构建在Cordova之上。Cordova==PhoneGap。Worklight提供了许多您可能不需要或不使用的额外功能,但其核心就像使用Eclipse构建PhoneGap应用程序。您可以访问相同的API和所有内容。我能为您看到的唯一真正的缺点是,替换Cordova版本似乎不需要支持,但我相信你可以破解。抱歉,但worklight绝对不是phonegap。首先,它甚至不接近免费。其次,phonegap只是worklight中的一块砖。对于只想组织一个简单的phonegap应用程序的人来说,这太过分了。是的,我同意。worklight包括phonegap/cordova,但提供了更多功能最重要的是非传统性。我不是有意暗示它们是等效的。Worklight只是一款使用Cordova的产品,我相信还有很多其他产品也使用Cordova。