xcode 4 + phonegap ...在构建时不更新JS?

时间:2011-06-26 19:17:45

标签: javascript xcode4

我遇到了一个奇怪的问题,让我在过去的一小时里摸不着头脑。

我正在使用Xcode 4和PhoneGap开发iPad应用程序。它使用的是jQuery。我把所有的JS都放到了scripts.js文件中。

事情进展顺利。

我花了大约一个小时做了很多CSS调整。我将更新CSS文件,停止应用程序,重建,并推送到iPad模拟器或我的iPad。这一切都很好。 CSS文件的每次更新都会反映在新版本中。

然后我需要更新JS文件。我无法让事情发挥作用然后我终于意识到我的JS更改实际上都没有被放入构建中。我终于彻底清空了我的JS文件,重建了,它仍然没有更新。

我正在更新的文件正在项目文件夹中的finder中更新(我可以右键单击“查找器中查看”,该文件确实已更新)。

所以我很难过。 xcode编译器是否以某种方式缓存JS文件而不是获取更新的文件?有没有办法强迫它抓住更新的JS?

11 个答案:

答案 0 :(得分:10)

我发现有必要在单击菜单命令时按住Option按钮,该命令将命令从“Clean”变为“Clean Build Folder ...”,这导致我的资产被刷新。

答案 1 :(得分:4)

嗯,经过一些谷歌搜索,这似乎是一个常见的问题。 Xcode似乎甚至在您编辑后也会缓存文件。

一个选项似乎是在新版本之前运行'clean'命令。我试过了,没有运气。

其他解决方案似乎每次都涉及重建.plist文件。我还没有完全理解(尚)如何自动执行此操作,但确实找到了解决方法:

  • 打开您的.plist文件
  • 更改内容(在我的情况下,我每次都重命名其中一个应用程序图标文件)
  • 保存并构建

这样做会神奇地迫使xcode最终获取所有更新的文件并进行正确的构建。

我无法解释为什么Xcode似乎非常高兴每次都抓住我更新的.css文件但是在没有先执行此.plist文件编辑的情况下不会更新.html或.js文件。

似乎苹果仍有一些问题需要解决。我想我们必须耐心等待下一次4gig .x的重新调整。 ;)

答案 2 :(得分:3)

只需在XCode中为您的目标添加一个新的“运行脚本”构建阶段并粘贴它:

touch -cm ${SRCROOT}/www

答案 3 :(得分:2)

我现在没有mac,但很少有尝试:

  • 尝试查看应该复制www文件夹的项目构建(或预建或其他)操作。

  • 尝试更改index.html,看看它是否有效。

  • 尝试将所有您的javascript代码粘贴到index.html脚本代码

  • 尝试验证您的javascript(例如:Google Closure Compiler)并查看它是否没有问题

答案 4 :(得分:2)

这些都不适合我:(

我可以通过在命令行运行“corodova run ios”来获取更新其html和js的唯一方法。

答案 5 :(得分:1)

找到名为copy-www-build-step.sh的文件。

我在[project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh

在该文件中,找到以rsync -a "...

开头的行

将-c添加到rsync行,以便他们准备好rsync -a -c "...

copy-www-build-step.sh是将文件从www /复制到app文件内的脚本。 rsync是他们使用的unix文件复制命令。如果没有-c,rsync只会比较每个文件和文件夹上的文件大小,如果大小已经更改,则复制它们,并且几个空格或引号不能算作足够的更改。使用-c,它会校验它们并比较校验和,这将记录最小的变化。

我认为这样做效果最好,因为它不是一种解决方法,它实际上解决了问题的原因。

答案 6 :(得分:0)

我刚刚遇到这个问题,这里发布的构建阶段命令(实际上现在由默认的Phonegap项目使用)对我来说不起作用,因为我在Visual Studio中的Parallels Windows VM上编辑我的文件。

我所做的是在项目的构建阶段使用它:

find "${PROJECT_DIR}/www/." -exec touch -cm {} \;

这基本上是一种递归触摸。然后,我设置Visual Studio以始终重新加载文件(如果已保存)。希望这会有所帮助。

答案 7 :(得分:0)

我不知道是哪一个,但我做了以下事情:

  1. 更改了MyProject-Info.plist
  2. 中的图标值
  3. 退出模拟器
  4. Product -> (hold option) -> Clean Build Folder
  5. 运行

答案 8 :(得分:0)

我找到了所有这些工作答案的组合,在这里尝试接受的答案

XCode Build not updating JS and HTML

答案 9 :(得分:0)

我在iOS模拟器上遇到了同样的问题,我尝试了上面的大部分建议没有成功,它不会接受我的更改。 后来我发现了另一个可能的解决方案,它确实有效:

从模拟器中删除应用程序。 (即。点击并按住图标,然后在它开始摇动时点击X,然后点击硬件主页) 然后从xCode重新运行。

(注意:还需要“cordova build ios”)

答案 10 :(得分:-1)

上述工作没有任何解决方案 最后我看到在使用Cordova的命令行工具创建的项目中有两个index.html文件和.js文件

因此,请按照暂存文件夹下所示进行更改 enter image description here