【问题标题】:Phonegap 3.0 slow to buildPhonegap 3.0 构建缓慢
【发布时间】:2013-09-04 08:01:21
【问题描述】:

我正在开发一个新的 Phonegap 3 应用程序。我发现开发过程非常缓慢。每次我想测试我的应用程序中的更改时,我都必须在控制台中运行:

phonegap 运行安卓

此命令运行大约需要 30 秒!关于如何缩短测试每个更改的时间的任何想法?

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    如果您正在使用 ecllipse 为 android 开发,您可以使用 android 手机,使用 USB 电缆将其与您的开发机器连接,并从here 安装必要的驱动程序 . mac 和 linux 中的 windows 大多需要驱动程序,通常不需要。设置好后,只需在 ide 中点击运行即可。

    【讨论】:

    • 在 Eclipse 中,可以快速部署一个 android 应用程序。我更准确地说是phonegap环境(phonegap run android)。
    • 你有什么用? WWWwww 文件夹中有多少个文件?只是想知道我的速度也很慢。
    • @JamieHutber 我在 hello world 项目中遇到了同样的问题。
    • 原来我的所有凉亭/节点文件以及我所有的原始资产都在编译。小心你如何设置我们的文件夹
    【解决方案2】:

    如果您有大量文件(带有演示的库、非压缩文件等),在应用上安装可能需要很长时间。

    我创建了这个钩子(添加到 before_prepare),它只复制必要的文件(在我的项目中的“requirements.json”中指定)。

    你需要运行cd hooks/before_prepare && npm install ncp来安装依赖。

    hooks/before_prepare/010copy_assets.js

    #!/usr/bin/env node
    
    console.log("=== Running copy required assets hook ===");
    
    var fs = require('fs'),
        path = require('path');
    
    var mkdirSync = function(path) {
        try {
            fs.mkdirSync(path);
        } catch (e) {
            if (e.code != 'EEXIST') throw e;
        }
    }
    
    var mkdirpSync = function(dirpath) {
        var parts = dirpath.split(path.sep);
        for (var i = 1; i <= parts.length; i++) {
            mkdirSync(path.join.apply(null, parts.slice(0, i)));
        }
    }
    
    try {
        var ncp = require('ncp').ncp
    
        var requirements = require('./../../myproject/requirements.json');
    
        ncp.limit = 200;
        ncp.stopOnErr = true;
    
        requirements.forEach(function(requirement) {
    
            var source = './myproject/' + requirement;
            var destination = './www/' + requirement;
    
            var folders = destination.split('/');
            folders.pop();
    
            mkdirpSync(path.normalize(folders.join('/')));
    
            ncp(source, destination, function(err) {
                if (err) {
                    console.log('====== Error! Did not copy asset from ' + source + ' to ' + destination + ' ======');
                    console.error(err);
                    process.exit(1001);
                } else
                    console.log('====== Copied asset from ' + source + ' to ' + destination + ' ======');
            });
    
        });
    
    } catch (e) {
        console.error(e);
        console.error(e.stack);
        process.exit(1000);
    }
    

    示例 requirements.json

    [
        "js",
        "css",
        "img",
        "index.html"
    ]
    

    请注意,您可以将内容直接移动到构建 www 目录(平台内部),但它们在 ios 和 android 下具有不同的路径

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      相关资源
      最近更新 更多