Cordova PhoneGap 3.4中暂存文件夹的目的?仅识别对此文件夹中index.html的更改?
我们注意到,在使用PhoneGap 3.4创建项目后,Xcode的项目导航器中出现了一个Cordova PhoneGap 3.4中暂存文件夹的目的?仅识别对此文件夹中index.html的更改?,cordova,Cordova,我们注意到,在使用PhoneGap 3.4创建项目后,Xcode的项目导航器中出现了一个Staging文件夹。使用PhoneGap 3.2或更低版本创建项目时,此暂存文件夹未出现。PhoneGap文档非常糟糕,我们无法找到该文件夹存在的原因 更重要的是,正常的index.html文件似乎不再被识别,只有Staging文件夹中对index.html的更改才能被识别。为什么会这样?我也被它绊倒了,找不到任何解释。我刚才一直在胡思乱想 简短结论: “暂存”文件夹包含分发到iOS应用程序包中的www资产
Staging
文件夹。使用PhoneGap 3.2或更低版本创建项目时,此暂存
文件夹未出现。PhoneGap文档非常糟糕,我们无法找到该文件夹存在的原因
更重要的是,正常的
index.html
文件似乎不再被识别,只有Staging
文件夹中对index.html
的更改才能被识别。为什么会这样?我也被它绊倒了,找不到任何解释。我刚才一直在胡思乱想
简短结论:
“暂存”文件夹包含分发到iOS应用程序包中的www资产。暂存文件夹完全被文件夹my_cordova_project/www/(所有平台的通用www代码)和my_cordova_project/merges/ios/(Xcode项目的特定www代码)中的文件覆盖。这两个文件中的内容将被编辑。my_cordova_project/www/的内容在所有平台上都保持不变,由cordova build
命令组织。从Cordova 3.3开始,似乎Xcode构建用于。。。命令不足以完成整个过程,您还需要调用cordova build
命令以正确同步所有文件夹
长答案: 文件夹:
my_cordova_项目/平台/ios/www/
是否在Xcode中“映射”到
/我的xcode项目/staging/www/
您可以通过使用Finder临时更改文件名并观察Xcode中的树来检查这一点 文件夹:
my_cordova_项目/www/
是否在Xcode中“映射”到
/我的xcode项目/www/
然后考虑CORDOVA的合并概念,它允许为特定平台分发特定的WWW文档(参见)。通过将它们放入my_cordova_project/merges/文件夹并使用命令行
cordova build
命令,可以实现这一点。看来,cordova build
不仅仅是第一次创建应用程序。如果启动构建并观察Xcode中的树,您将看到/my\u Xcode\u project/staging/文件夹被my\u cordova\u project/www/(并被merges文件夹专门化)完全覆盖
这尤其符合以下引用:
警告:使用CLI构建应用程序时,除非您知道自己在做什么,或者文档中另有规定,否则不应编辑/platforms/目录中的任何文件。在准备构建应用程序或重新安装插件时,此目录中的文件通常会被覆盖
当我使用PhoneGap的早期版本时,www内容在每个平台项目中存储和编辑,因此您必须将www从一个平台复制到另一个平台。如今,只有一个www文件夹由cordova build
自动分发到所有平台。它非常方便,可以通过merges文件夹针对特定平台进行调整
因此,cordova构建的影响也可以在eclipseadt中观察到,甚至可以在crossover中观察到。只要在/my\u Xcode\u project/www/中的Xcode中更改一些内容,运行cordova build
,在Eclipse ADT中刷新树,您就会发现您的更改是分布式的
另一方面,令人费解的是,Xcode的buildforrunning命令没有将所有/my_Xcode_project/www/复制到/my_Xcode_project/staging/www/中。这只能通过cordova build
命令完成。然而,如果你检查一个制作好的应用程序,你会发现/my_xcode_project/staging/www/中的文件,因此如果你编辑/my_xcode_project/www/,你也必须调用cordova build
。在进行任何更改之后,在xcode中构建/运行之前,你应该sudo cordova build
这将导致Cordova使用您的资产的“staged”(即组装用于生产)版本更新/staging文件夹,该版本具有一些Cordova magic之类的特定于设备的插件。将/staging与/www进行比较,您会注意到前者中有一些额外的文件。实际上,“staging”文件夹的内容会在您的设备上执行
myAwesomeProject/www ---copy---> Staging/www
Cordova的build命令将内容从“myAwesomeProject/www”文件夹复制到“Staging/www”文件夹。这些命令是:
sudo cordova build ios //ios build
sudo cordova build android //android build
小心!请记住,build命令不仅将内容复制到“Staging”文件夹,而且还构建整个应用程序,包括本机ios/android代码。所以,这需要很长时间。对于较小的更改,我通常手动将更改的文件复制到“Staging”文件夹,并在iOS环境下使用XCODE构建和运行应用程序 我也遇到过同样的情况。在我的环境中,myProject/www/目录不会复制到myProject/Staging/www/目录。因此,我直接在Staging/www/directory中编辑文件。你确定sudo
吗?你真的需要sudo
吗?如果托管文件夹不属于root用户或任何其他超级用户,则不需要。