Javascript XCode构建未更新JS和HTML

Javascript XCode构建未更新JS和HTML,javascript,ios,xcode,cordova,Javascript,Ios,Xcode,Cordova,我正在使用XCode 5.0.2和Cordova 3.4.0-0.1.3-我发现在使用Cordova CLI创建项目并在XCode中打开后,单击“运行”时,对index.html文件和index.js文件的任何更改都不会传递到模拟器。 我必须打开终端并发出一个CordovaBuild命令,然后运行模拟器,它就可以工作了 我遵循了这里的所有说明: 而且都不管用!任何人都有办法解决这个问题,因为来回切换正成为一种痛苦 您可以将预操作脚本添加到XCode项目的构建中。为此: 从菜单中选择产品>方案

我正在使用XCode 5.0.2Cordova 3.4.0-0.1.3-我发现在使用Cordova CLI创建项目并在XCode中打开后,单击“运行”时,对index.html文件和index.js文件的任何更改都不会传递到模拟器。 我必须打开终端并发出一个CordovaBuild命令,然后运行模拟器,它就可以工作了

我遵循了这里的所有说明:


而且都不管用!任何人都有办法解决这个问题,因为来回切换正成为一种痛苦

您可以将预操作脚本添加到XCode项目的构建中。为此:

  • 从菜单中选择产品>方案>编辑方案(或⌘ < (在键盘上)
  • 从左侧选择构建>预操作
  • 单击+并选择“新建运行脚本操作”
  • 添加如下脚本:

    cd /path/to/your/cordova/project/
    cordova prepare ios > xcode-prepare-results.txt
    
  • 现在,XCode应该在构建项目之前始终运行cordova prepare,这样您就不必跳转到terminal。您可以在文件xcode-prepare-results.txt中看到prepare的输出


    请注意,根据cordova可执行文件的设置方式和使用的shell,您可能需要更改shell或修改路径,以便脚本找到cordova

    我建议您在构建xcode项目之前进行清理。还有一件事,请确保使用cordova build重新构建项目,而不是在xcode中,因为它完全不同

    cordova build yourproject
    

    因此,经过多次搜索,我似乎找到了一个有效的解决方案,以下是我所做的。在查看其他Stackoverflow问题后,我发现有人说这对他们有用

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

    我的在 [项目文件夹]/platforms/ios/cordova/lib/copy-www-build-step.sh

    ## New Code Begin ###
    
    cd ../../
    PATH=${PATH}:/usr/local/bin
    cordova prepare ios
    
    ## New Code End ###
    
    SRC_DIR="www/"
    
    在该文件中,找到以rsync-a“…”开头的行

    将-c添加到rsync行中,以便它们准备好rsync-a-c“

    嗯,我试过了,但它自己不起作用。我也试过Ville的答案,结果很接近,但没有雪茄。最后,我从Ville获取了命令的内容,并将其放在copy-www-build-step.sh文件中

    所以我的首要任务是

    cd /path/to/your/cordova/project/
    cordova prepare
    
    SRC_DIR="www/"
    DST_DIR="$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/www"
    COPY_HIDDEN=
    ORIG_IFS=$IFS
    IFS=$(echo -en "\n\b")
    .....
    .....
    .....etc etc 
    

    现在我进行更改,然后单击run,bam all将更新。我希望这对其他人有帮助

    我发现科尔多瓦有时会感到困惑。。。你需要做一个“cordova platform rm ios”(只需让你的插件单独使用),然后做一个“cordova platform add ios”,它将把你所有的插件重新安装到你的平台上。。。然后再次尝试构建。

    @Ksliman 为了在我的系统上工作,我对您的代码进行了一些修改,使其稍微更通用一些

    文件顶部副本-www-build-step.sh

    ## New Code Begin ###
    
    cd ../../
    PATH=${PATH}:/usr/local/bin
    cordova prepare ios
    
    ## New Code End ###
    
    SRC_DIR="www/"
    

    我所要做的就是为我的项目包含完整的绝对src路径。例如:

  • 从项目目录vim platforms/ios/cordova/lib/copy-www-build-step.sh
  • 将SRC_DIR更改为您的www的绝对路径,SRC_DIR=“/Users/michael/Documents/Development/SampleMobileApp/www/”
  • 保存,建立,你应该是好去

  • 我还编辑了复制www build step.sh文件,但是您不想使用用户文件夹中的绝对路径。如果您正在与其他开发人员一起工作,那么每次签出代码时都必须对其进行更改

    这没什么大不了的,只要改变一下:

    SRC_DIR="www/"
    
    致:

    更新
    在Cordova和Phonegap上为我工作。

    此线程中的其他答案要么对我不起作用,要么搞坏了Cordova插件,例如InApp Browser,因此我最终得出以下结论:

    编辑文件复制www build step.sh,并在开头添加以下行:

    cp-fR./。/www/www/

    所以它应该看起来像:

    ...
    cp -fR ../../www/ www/ # new code
    
    SRC_DIR="www/"
    ...
    
    这样,您的代码将得到正确更新,插件将正常工作

    只需键入:

    cordova prepare
    

    在您的终端上,在Xcode中再次运行您的项目

    简单的解决方案是使用cordova构建应用程序,使用:

    sudo cordova build ios
    
    然后进入xcode>Product>Clean


    然后每次使用
    cordova build
    时,转到xcode>Run(Play按钮)

    ,它会覆盖特定于平台的
    www
    文件中的内容。因此,我改用
    cordova compile

    从帮助:

    compile编译平台项目而不准备它


    重要的是只编译更改而不是构建整个项目,特别是如果您为许多平台创建移动应用程序,并且您必须进行一些特定于平台的改进。

    对于我来说,我的代码中有一个错误。我只需要运行
    npm start
    来定位它。

    当您单击XCode中的run按钮时,将源文件从www源目录自动复制到platforms/ios/www目录:

    在XCode中,选择产品->方案->编辑方案…
    展开构建->预操作的三角形
    单击“+”创建新的预操作

    您可以将“Shell”设置留空。
    将“提供生成设置自”设置为正在生成的项目。这很重要。

    在脚本区域中输入:

    cd ${PROJECT_DIR}/../..
    echo "--- Start ---" > xcode-prepare-ios-results.txt
    echo "Running cordova prepare ios command..."
    pwd >> xcode-prepare-ios-results.txt
    cordova prepare ios --verbose >> xcode-prepare-ios-results.txt
    echo "--- Finished ---"  >> xcode-prepare-ios-results.txt
    

    这对我来说适用于XCode 8.2和Apache Cordova 6.x

    如果您直接从XCode更改html,那么您应该更改暂存文件夹的代码/html,而不是主文件夹

    在暂存文件夹中,您将获得与主文件夹中相同的结构,但它将直接反映在xcode(iOS)构建中

    暂存文件夹

    注意:当您从cordova构建/运行重新构建时,您在xcode中所做的更改将被替换,因此请在启动cordova命令之前将更改复制到主文件夹中

    您可以从以下答案获得更多信息:PhoneGap 3.4中暂存文件夹的目的?仅识别对此文件夹中index.html的更改

    这是正确的解决方案,可从以下方面获得:

    运行“
    cordova准备ios