如何使用Cordova / PhoneGap构建sencha应用程序

时间:2012-05-30 08:46:50

标签: extjs build cordova

对于客户端,我需要使用Sencha Touch和Cordova构建本机应用程序。

为了提高性能,我使用SDK Tools中的命令“sencha app build package”来缩小javascript源代码。

如果我使用Sencha进行开发,使用Corova进行webview,则没有问题。但是我需要使用Cordova函数(比如FileSystem,...),这是Sencha无法做到的。

问题在于,当我使用“sencha app build package”时,我遇到了[ERROR] ReferenceError: Can't find variable: fileSystem等错误。

我阅读了许多关于Sencha + Cordova的帖子,但没有人谈论Cordova + Sencha的构建/缩小源代码。

有没有人遇到过这个问题,你是怎么解决的?

祝你好运

2012年5月31日更新

我为每个需要访问cordova变量的方法使用一个名为CordovaFunctions.js的文件,我的app.js和其他View / Controller调用CordovaFunctions.js中的方法......

这是我的app.json:

{
/**
 * The application's namespace, used by Sencha Command to generate classes
 */
"name": "ImageDownloader",

/**
 * The file path to this application's front HTML document, relative to this app.json file
 */
"indexHtmlPath": "index.html",

/**
 * The absolute URL to this application in development environment, i.e: the URL to run this application
 * on your web browser during development, e.g: "http://localhost/myapp/index.html".
 *
 * This value is needed when build to resolve your application's dependencies if it requires server-side resources
 * that are not accessible via file system protocol.
 */
"url": null,

/**
 * List of all JavaScript assets in the right execution order.
 * Each item is an object with the following format:
 *      {
 *          "path": "path/to/script.js" // Relative path to this app.json file
 *          "update": "delta"           // (Optional)
 *                                      //  - If not specified, this file will only be loaded once, and
 *                                      //    cached inside localStorage until this value is changed.
 *                                      //  - "delta" to enable over-the-air delta update for this file
 *                                      //  - "full" means full update will be made when this file changes
 *
 *      }
 */
"js": [

    {
       "path": "cordova-1.7.0.js"
    },/*
    {
       "path": "CordovaFunctions.js"
    },*/
    {
        "path": "sdk/sencha-touch.js"
    }
    ,
    {
        "path": "app.js",
        "bundle": true,  // Indicates that all class dependencies are concatenated into this file when build 
        "update": "delta"
    }
],

/**
 * List of all CSS assets in the right inclusion order.
 * Each item is an object with the following format:
 *      {
 *          "path": "path/to/item.css" // Relative path to this app.json file
 *          "update": "delta"          // (Optional)
 *                                     //  - If not specified, this file will only be loaded once, and
 *                                     //    cached inside localStorage until this value is changed to either one below
 *                                     //  - "delta" to enable over-the-air delta update for this file
 *                                     //  - "full" means full update will be made when this file changes
 *
 *      }
 */
"css": [
    {
        "path": "resources/css/app.css",
        "update": "delta"
    }
],

/**
 * Used to automatically generate cache.manifest (HTML 5 application cache manifest) file when you build
 */
"appCache": {
    /**
     * List of items in the CACHE MANIFEST section
     */
    "cache": [
        "index.html"
    ],
    /**
     * List of items in the NETWORK section
     */
    "network": [
        "*"
    ],
    /**
     * List of items in the FALLBACK section
     */
    "fallback": []
},

/**
 * Extra resources to be copied along when build
 */
"resources": [
    "resources/images",
    "resources/icons",
    "resources/startup"
],

/**
 * File / directory name matchers to ignore when copying to the builds, must be valid regular expressions
 */
"ignore": [
    "\.svn$"
],

/**
 * Directory path to store all previous production builds. Note that the content generated inside this directory
 * must be kept intact for proper generation of deltas between updates
 */
"archivePath": "archive",

/**
 * Default paths to build this application to for each environment
 */
"buildPaths": {
    "testing": "build/testing",
    "production": "build/production",
    "package": "build/package",
    "native": "build/native"
},

/**
 * Build options
 */
"buildOptions": {
    "product": "touch",
    "minVersion": 3,
    "debug": false,
    "logger": "no"
},

/**
 * Uniquely generated id for this application, used as prefix for localStorage keys.
 * Normally you should never change this value.
 */
"id": "dfbad430-a63b-11e1-a218-a1757e9a8324"
}

1 个答案:

答案 0 :(得分:0)

在app.json配置文件中,您需要告诉Sencha构建命令您的应用程序需要phoneGap库。将其添加到js节点:

/**
 * List of all JavaScript assets in the right execution order.
 * Each item is an object with the following format:
 *      {
 *          "path": "path/to/script.js" // Relative path to this app.json file
 *          "update": "delta"           // (Optional)
 *                                      //  - If not specified, this file will only be loaded once, and
 *                                      //    cached inside localStorage until this value is changed.
 *                                      //  - "delta" to enable over-the-air delta update for this file
 *                                      //  - "full" means full update will be made when this file changes
 *
 *      }
 */
"js": [
    {
        "path": "sdk/sencha-touch.js"
    },
    {
        "path": "cordova-1.5.0.js"
    },
    {
        "path": "app.js",
        "bundle": true,  /* Indicates that all class dependencies are concatenated into this file when build */
        "update": "delta"
    }
],