我遇到了一个奇怪的问题,让我在过去的一小时里摸不着头脑。
我正在使用Xcode 4和PhoneGap开发iPad应用程序。它使用的是jQuery。我把所有的JS都放到了scripts.js文件中。
事情进展顺利。
我花了大约一个小时做了很多CSS调整。我将更新CSS文件,停止应用程序,重建,并推送到iPad模拟器或我的iPad。这一切都很好。 CSS文件的每次更新都会反映在新版本中。
然后我需要更新JS文件。我无法让事情发挥作用然后我终于意识到我的JS更改实际上都没有被放入构建中。我终于彻底清空了我的JS文件,重建了,它仍然没有更新。
我正在更新的文件正在项目文件夹中的finder中更新(我可以右键单击“查找器中查看”,该文件确实已更新)。
所以我很难过。 xcode编译器是否以某种方式缓存JS文件而不是获取更新的文件?有没有办法强迫它抓住更新的JS?
答案 0 :(得分:10)
我发现有必要在单击菜单命令时按住Option按钮,该命令将命令从“Clean”变为“Clean Build Folder ...”,这导致我的资产被刷新。
答案 1 :(得分:4)
嗯,经过一些谷歌搜索,这似乎是一个常见的问题。 Xcode似乎甚至在您编辑后也会缓存文件。
一个选项似乎是在新版本之前运行'clean'命令。我试过了,没有运气。
其他解决方案似乎每次都涉及重建.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)
我不知道是哪一个,但我做了以下事情:
MyProject-Info.plist
Product -> (hold option) -> Clean Build Folder
答案 8 :(得分:0)
我找到了所有这些工作答案的组合,在这里尝试接受的答案
答案 9 :(得分:0)
我在iOS模拟器上遇到了同样的问题,我尝试了上面的大部分建议没有成功,它不会接受我的更改。 后来我发现了另一个可能的解决方案,它确实有效:
从模拟器中删除应用程序。 (即。点击并按住图标,然后在它开始摇动时点击X,然后点击硬件主页) 然后从xCode重新运行。
(注意:还需要“cordova build ios”)
答案 10 :(得分:-1)