XCode Build不更新JS和HTML

时间:2014-03-06 17:31:26

标签: javascript ios xcode cordova

我正在使用 XCode 5.0.2 Cordova 3.4.0-0.1.3 - 我发现使用 Cordova CLI <创建项目后/ strong>并在 XCode 中打开, index.html 文件和 index.js 文件的任何更改都不会转移到模拟器我点击运行。 我必须打开终端并发出 Cordova 构建命令,然后运行模拟器并且它可以正常工作

我按照这里的所有说明操作:

Phonegap - developing and launching app on simulator

xcode 4 + phonegap ... not update JS upon build?

它都不起作用!任何人都可以解决这个问题,因为不得不来回切换会变得很痛苦。

15 个答案:

答案 0 :(得分:12)

您可以在XCode项目的构建中添加一个预操作脚本。要做到这一点:

  1. 选择产品&gt;方案&gt;从菜单中编辑方案(或⌘&lt;在键盘上)
  2. 选择构建&gt;左起前的行动
  3. 单击+并选择“新建运行脚本操作”
  4. 添加如下脚本:

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

    请注意,根据您的cordova可执行文件的设置方式以及您使用的shell,您可能需要更改shell或修改PATH才能让脚本找到cordova。

答案 1 :(得分:11)

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

  

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

     

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

     

在该文件中,找到以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 

现在我进行更改,然后点击运行,bam all更新。我希望这有助于其他人。

答案 2 :(得分:7)

此主题中的其他答案要么对我不起作用,要么搞砸了cordova插件,例如InAppBrowser,所以我终于想出了这个:

编辑文件 copy-www-build-step.sh 并在开头添加以下行:

cp -fR ../../www/ www/

所以看起来应该是这样的:

...
cp -fR ../../www/ www/ # new code

SRC_DIR="www/"
...

这样您的代码将正确更新您的插件将正常工作

答案 3 :(得分:5)

我还编辑了 copy-www-build-step.sh 文件,但是您不想使用User文件夹中的绝对路径。如果您正在与其他开发人员合作,则每次签出代码时都必须更改它。

这不是什么大不了的事,只需改变:

SRC_DIR="www/"

要:

SRC_DIR="../../www/"

<强>更新 在Cordova和Phonegap为我工作。

答案 4 :(得分:5)

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

在XCode中,选择Product-&gt; Scheme-&gt; Edit Scheme ...
展开Build-&gt; Pre-actions
的三角形 点击&#34; +&#34;创建一个新的预行动

你可以离开&#34; Shell&#34;设置空白。
设置&#34;提供来自&#34;的构建设置到你正在建设的项目。这很重要。

在脚本区域输入:

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

答案 5 :(得分:2)

我建议你在构建xcode项目之前清理一下。还有一件事,请确保使用cordova构建再次构建项目,而不是在xcode内部,因为它完全不同。

cordova build yourproject

答案 6 :(得分:2)

@Ksliman 我修改了你的代码,以便在我的系统上工作,并使稍微更通用。

文件顶部copy-www-build-step.sh

## New Code Begin ###

cd ../../
PATH=${PATH}:/usr/local/bin
cordova prepare ios

## New Code End ###

SRC_DIR="www/"

答案 7 :(得分:2)

只需输入:

cordova prepare
在您的终端上

并在Xcode中再次运行您的项目

答案 8 :(得分:2)

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

sudo cordova build ios

然后转到xcode&gt;产品&gt;清洁

然后转到xcode&gt;运行(播放按钮)

答案 9 :(得分:2)

运行&#34; cordova prepare ios&#34;在建设阶段:

  1. 打开Xcode。
  2. 选择您的项目。
  3. 转到&#34;构建阶段&#34;。
  4. 继续&#34; +&#34;添加&#34;新运行脚本阶段&#34;。
  5. 在&#34;复制www目录&#34;。
  6. 之前移动此部分
  7. 添加以下行(适用于Mac):
    • cd /Users/*/YOUR_PROJECT_FOLDER(更改项目文件夹)
    • /Users/*/.nvm/versions/node/v?.?.?/bin/node node_modules/cordova/bin/cordova prepare ios(更改节点版本的路径)
  8. &#34; Play&#34; www文件夹会自动刷新!

答案 10 :(得分:0)

我发现有时候Cordova会感到困惑......你需要做一个“cordova平台rm ios”(只需单独留下你的插件),然后做一个“cordova平台添加iOS”,它会将你所有的插件重新安装到你的平台...然后再试一次你的构建。

答案 11 :(得分:0)

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

  1. 从您的项目目录中,vim platforms / ios / cordova / lib / copy-www-build-step.sh
  2. 将SRC_DIR更改为www的绝对路径,SRC_DIR =“/ Users / michael / Documents / Development / SampleMobileApp / www /”
  3. 保存,构建,你应该很高兴。

答案 12 :(得分:0)

每次我使用cordova build时,它会覆盖我的平台特定www文件中的内容。所以我改用cordova compile

来自帮助:

  

编译&lt; platforms&gt;在没有准备的情况下编译平台项目

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

答案 13 :(得分:0)

对我来说,我的代码中有错误。我只需要运行npm start来找到它。

答案 14 :(得分:0)

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

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

暂存文件夹

注意:当您从cordova构建/运行中再次构建时,您在xcode中所做的更改将被替换,因此请在执行解决cordova命令之前复制主文件夹中的更改

您可以从此答案中获得更多信息:PhoneGap 3.4中Staging文件夹的用途?只识别对此文件夹中index.html的更改?

这是正确的解决方案:

Cordova + Xcode 7.3 (html + Javascript) not changed or updated when build and emulate