【问题标题】:Cordova Build not updating index.html in ios platform directoryCordova Build 未更新 ios 平台目录中的 index.html
【发布时间】:2016-02-05 07:34:42
【问题描述】:

我正在使用:

科尔多瓦 5.3.3

Xcode 6.2

使用 Cordova 教程: https://ccoenraets.github.io/cordova-tutorial/

修改 index.html 运行 cordova build ios ios 平台目录中的 www 目录未更新

当我更新根目录中的文件时,

cordova preparecordova prepare ios 也不会更新 ios 的 www 目录。

我搜索并找到了这个解决方案:

22231767

引用了哪些

找到名为 copy-www-build-step.sh 的文件。 我的在 [project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh

但是,在我的安装中,我有一个 javascript 文件,而不是 shell 脚本 - 版本可能

[project_folder]/platforms/ios/cordova/lib/copy-www-build-step.js

在那个文件中:

var BUILT_PRODUCTS_DIR = process.env.BUILT_PRODUCTS_DIR,
    FULL_PRODUCT_NAME = process.env.FULL_PRODUCT_NAME,
    COPY_HIDDEN = process.env.COPY_HIDDEN,
    PROJECT_FILE_PATH = process.env.PROJECT_FILE_PATH;

var path = require('path'),
    fs = require('fs'),
    shell = require('shelljs'),
    glob = require('glob'),
    srcDir = 'www',
    dstDir = path.join(BUILT_PRODUCTS_DIR, FULL_PRODUCT_NAME),
    dstWwwDir = path.join(dstDir, 'www');

if(!BUILT_PRODUCTS_DIR) {
    console.error('The script is meant to be run as an Xcode build step and relies on env variables set by Xcode.');
    process.exit(1);
}

try {
    fs.statSync(srcDir);
} catch (e) {
    console.error('Path does not exist: ' + srcDir);
    process.exit(1);
}

// Code signing files must be removed or else there are
// resource signing errors.
shell.rm('-rf', dstWwwDir);
shell.rm('-rf', path.join(dstDir, '_CodeSignature'));
shell.rm('-rf', path.join(dstDir, 'PkgInfo'));
shell.rm('-rf', path.join(dstDir, 'embedded.mobileprovision'));

// Copy www dir recursively
if(!!COPY_HIDDEN) {
    shell.mkdir('-p', dstWwwDir);
    shell.cp('-r', glob.sync(srcDir + '/**', { dot: true }), dstWwwDir);
} else {
    shell.cp('-r', srcDir, dstDir);
}

// Copy the config.xml file.
shell.cp('-f', path.join(path.dirname(PROJECT_FILE_PATH), path.basename(PROJECT_FILE_PATH, '.xcodeproj'), 'config.xml'),
    dstDir);

所以看起来shell.cp('-r', srcDir, dstDir); 应该在这里进行复制工作。但是副本在我的实例中不起作用。

【问题讨论】:

  • 您使用的是节点 5 吗? tha 版本和 cordova 存在一些问题
  • 是的,5.0.0。谢谢你的提示。我会看看降级的。
  • Cordova 5.4.0 已发布并修复了节点 5 的问题
  • 哈哈,就像我让节点 4.2.2 工作一样。感谢您的提示,这确实是问题所在。

标签: javascript ios xcode cordova


【解决方案1】:

您知道...不是您希望的答案,但我注意到 phonegap 构建服务也有同样的问题。有时我只需要多次运行构建命令。

也许您有一个当前构建用户不允许写入的文件,因为可能是管理员拥有它。祝你好运

【讨论】:

  • 我在 js 文件中添加了一些 console.log() 行,但没有看到任何输出,我怀疑由于其他一些配置问题而没有调用该文件。我也将它作为 sudo 运行。我还编辑了复制命令以使用 force 标志。 shell.cp('-rf', srcDir, dstDir);
【解决方案2】:

正如 jcesarmobile 所说,Cordova 5.3.3 和 Node 5.0.0 存在问题。

当我用自制软件安装节点时,我的修复是

brew tap homebrew/versions
brew unlink node
brew uninstall node
brew search node (gives the list of available version)
brew install homebrew/versions/node4-lts

此时 ios 构建成功,但正如 jcesarmobile 指出的那样,Cordova 5.4.0 已发布以解决此问题。

【讨论】:

    猜你喜欢
    • 2014-11-20
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2015-04-24
    • 2021-01-01
    • 2018-02-19
    相关资源
    最近更新 更多