我们注意到在使用PhoneGap 3.4创建项目后,Xcode的Project Navigator中出现了一个Staging
文件夹。在使用PhoneGap 3.2或更低版本创建项目时,此Staging
文件夹未显示。 PhoneGap文档非常糟糕,我们无法找到该文件夹存在的原因。
更重要的是,似乎无法识别正常的index.html
文件,只能识别index.html
文件夹中Staging
的更改。这是为什么?
答案 0 :(得分:5)
我也偶然发现了它并没有找到任何解释。我一直在困惑。
简短的结论:
“staging”文件夹包含分发到iOS应用包中的那些www资源。暂存文件夹被文件夹 my_cordova_project / www / (所有平台的常用www代码)和 my_cordova_project / merges / ios / (Xcode的特定www代码)中的文件完全覆盖项目)。这两个内容将被编辑。 my_cordova_project / www / 的内容在所有平台上保持不变,这些平台由cordova build
命令组织。从Cordova 3.3开始,似乎Xcode build for ...命令对于整个过程来说还不够,还需要调用cordova build
命令才能正确同步所有文件夹。
答案很长:
文件夹:
my_cordova_project /平台/ IOS /网络/
在Xcode中“映射”到
/ my_xcode_project /分段/网络/
您可以通过使用Finder临时更改文件名来检查,并观察Xcode中的树。
文件夹:
my_cordova_project /网络/
在Xcode中“映射”到
/ my_xcode_project / www /
然后考虑Cordova的合并概念,允许为特定平台分发特定的www文档(参见here)。这是通过将它们放入文件夹 my_cordova_project / merges / 并使用命令行cordova build
命令来实现的。 cordova build
似乎不仅仅是为了第一次创建应用程序。如果你开始构建并观察Xcode中的树,你会发现 / my_xcode_project / staging / 文件夹被 my_cordova_project / www / 完全覆盖(并由合并文件夹)。
这特别符合here的引用:
警告:使用CLI构建应用程序时,除非您知道自己在做什么,或者文档另有说明,否则不应编辑/ platforms /目录中的任何文件。在准备构建应用程序或重新安装插件时,会定期覆盖此目录中的文件。
当我使用早期版本的PhoneGap时,www内容已在每个平台项目中存储和编辑,因此您必须将www从一个平台复制到另一个平台。今天,只有一个www文件夹由cordova build
自动分布在所有平台上。它非常方便,可以通过merges文件夹对特定平台进行调整。
因此,在Eclipse ADT中也可以观察到cordova build
的影响,甚至是交叉。只需在 / my_xcode_project / www / 中更改Xcode中的内容,运行cordova build
,刷新Eclipse ADT中的树,您就会发现您的更改已分发。
另一方面,Xcode的运行命令构建不将所有 / my_xcode_project / www / 复制到 / my_xcode_project / staging中有点令人费解/网络/ 。这只能通过cordova build
命令完成。然而,如果您检查生成的应用程序,您将找到 / my_xcode_project / staging / www / 中的文件,因此如果您编辑 / my_xcode_project / www / ,则必须调用cordova build
也是。
答案 1 :(得分:1)
在构建/运行XCode之前,您应该在进行任何更改后sudo cordova build
。
这将导致Cordova使用“暂存”(即组装生产)版本的资产来更新/ staging文件夹,该版本具有某些Cordova魔法,例如特定于设备的插件。比较/暂存到/ www,您会注意到前者中的一些其他文件。
答案 2 :(得分:1)
" Staging"的内容文件夹实际上会在您的设备上执行。
myAwesomeProject/www ---copy---> Staging/www
Cordova的构建命令从您的" myAwesomeProject / www"中复制内容。文件夹到" Staging / www"夹。命令是:
sudo cordova build ios //ios build
sudo cordova build android //android build
小心!请记住,构建命令不仅将内容复制到" Staging"文件夹,但也构建整个应用程序,包括本机ios / android代码。所以,这需要很长时间。对于微小的更改,我通常会将更改的文件复制到" Staging"手动使用文件夹,使用iOS的XCODE构建和运行应用程序。
答案 3 :(得分:-1)
我遇到了同样的情况。在我的环境中,myProject / www /目录不会复制到myProject / Staging / www /目录。所以,我正在Staging / www /目录中直接编辑文件。