Javascript xcode 4+;电话缺口。。。不在构建时更新JS?

Javascript xcode 4+;电话缺口。。。不在构建时更新JS?,javascript,xcode4,Javascript,Xcode4,在过去的一个小时里,我遇到了一个让我挠头的奇怪问题 我正在使用Xcode 4和PhoneGap开发一款iPad应用程序。它使用jQuery。我已将所有JS放入scripts.JS文件中 事情进展顺利 我花了大约一个小时做了大量的CSS调整。我会更新CSS文件,停止应用程序,重建,然后推到iPad模拟器或我的iPad。这很好。CSS文件的每次更新都会反映在新构建中 然后我需要更新JS文件。我无法让事情正常工作,然后我终于意识到我的JS更改实际上没有一个被投入到构建中。我最终完全删除了我的JS文件,

在过去的一个小时里,我遇到了一个让我挠头的奇怪问题

我正在使用Xcode 4和PhoneGap开发一款iPad应用程序。它使用jQuery。我已将所有JS放入scripts.JS文件中

事情进展顺利

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

然后我需要更新JS文件。我无法让事情正常工作,然后我终于意识到我的JS更改实际上没有一个被投入到构建中。我最终完全删除了我的JS文件,重新构建,但它仍然没有更新

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


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

我现在没有mac电脑,但可以尝试的东西很少:

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

  • 尝试更改index.html并查看它是否有效

  • 尝试将所有javascript代码复制粘贴到index.html脚本标记

  • 尝试验证您的javascript(例如:Google闭包编译器),看看它是否没有问题


好吧,在更多的谷歌搜索之后,这似乎是一个常见的问题。即使在您编辑文件之后,Xcode似乎也会缓存这些文件

一个选项似乎是在新生成之前运行“clean”命令。我试过了,运气不好

其他解决方案似乎涉及每次重建.plist文件。我还不完全理解(目前)如何自动实现这一点,但确实找到了以下解决方法:

  • 打开.plist文件
  • 更改某些内容(在我的情况下,我每次重命名一个应用程序图标文件)
  • 保存并构建
这样做会神奇地迫使xcode最终获取所有更新的文件并进行正确的构建

我无法解释为什么Xcode似乎非常乐意每次都抓取更新后的.css文件,但如果不先编辑.plist文件,就不会更新.html或.js文件


似乎苹果还有一些漏洞需要解决。我想我们必须耐心等待下一次4gig.x的放松

我发现有必要在单击菜单命令时按住选项按钮,该命令将命令从“清理”变为“清理构建文件夹…”,这导致我的资产被刷新。

只需在XCode中向目标添加一个新的“运行脚本”构建阶段并粘贴以下内容:

touch -cm ${SRCROOT}/www

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

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

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

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

我不确定是谁做的,但我做了以下几点:

  • 更改了my
    MyProject Info.plist中的图标值
  • 退出模拟器
  • Product->(保留选项)->清理生成文件夹

  • 找到名为
    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/复制到应用程序文件中的位置的脚本。rsync是他们使用的unix文件复制命令。如果没有-c,rsync只会比较每个文件和文件夹上的文件大小,并在大小发生变化时复制它们,并且几个空格或引号不算足够的变化。使用-c,它对它们进行校验和比较校验和,这将捕获最小的更改


    我认为这将是最好的,因为这不是一个解决办法,它实际上解决了问题的原因。

    这些都不适合我:(


    我能更新html和js的唯一方法是在命令行上运行“corodova run ios”。

    我在ios模拟器上也遇到了同样的问题,我尝试了上面的大多数建议,但没有成功,它不会接受我的更改。 后来,我想到了另一个可行的解决方案,它确实起了作用:

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


    (注意:“cordova构建ios”也是必需的)

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

    因此,按照以下所示在“暂存文件夹”下进行更改

    Xcode/Phonegap是否在编译之前尝试验证.js文件?可能是这样。让我通过JSLint运行它…不,它不会。它只复制您编写的任何内容。它只编译允许iOS运行Phonegap的Obj-C包装。Phonegap不进行js编译/转换。这有点烦人,尤其是当您习惯于开发firebug和friends的设备环境。这对我来说很有效(XCode 4.2.1,PhoneGap 1.3.0)。上面提到的“Clean Build Folder…”不起作用。现在,后续的JS更改将自动重建。我想知道是否有
    touch$Build\u PRODUCTS\u DIR/$INFOPLIST\u PATH
    预操作shell脚本(请参阅)这样做可以保持正常工作。这就像一个符咒。要支持带有空格的目录,应该在la周围添加引号