XCode Build不更新JS和HTML

问题描述 投票:18回答:15

我正在使用XCode 5.0.2和Cordova 3.4.0-0.1.3 - 我发现在使用Cordova CLI创建项目并在XCode中打开后,没有对index.html文件和index.js文件进行任何更改点击运行时转到模拟器。我必须打开终端并发出Cordova Build命令,然后运行模拟器并且它可以工作

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

Phonegap - developing and launching app on simulator

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

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

javascript ios xcode cordova
15个回答
12
投票

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

  1. 从菜单中选择产品>方案>编辑方案(或在键盘上⌘<)
  2. 从左侧选择Build> Pre-actions
  3. 单击+并选择“新建运行脚本操作”
  4. 添加如下脚本: cd /path/to/your/cordova/project/ cordova prepare ios > xcode-prepare-results.txt

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

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


2
投票

在建设阶段运行“cordova prepare ios”:

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

“播放”后,www文件夹将自动刷新!


0
投票

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


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. 保存,构建,你应该很高兴。

0
投票

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

来自帮助:

编译<platforms>编译平台项目而不进行准备

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


0
投票

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


0
投票

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

在staging文件夹中,您将获得与主文件夹中相同的结构,但它将直接反映在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


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全部更新。我希望这有助于其他人。


7
投票

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

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

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

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

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

SRC_DIR="www/"
...

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


5
投票

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

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

SRC_DIR="www/"

至:

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

更新为Cordova和Phonegap工作。


5
投票

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

在XCode中,选择Product-> Scheme-> Edit Scheme ... 展开Build-> Pre-actions的三角形 单击“+”以创建新的预操作

您可以将“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


2
投票

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

cordova build yourproject

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/"

2
投票

只需输入:

cordova prepare

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


2
投票

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

sudo cordova build ios

然后转到xcode>产品>清洁

然后转到xcode>运行(播放按钮)

© www.soinside.com 2019 - 2024. All rights reserved.