3

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

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

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

问题是,当我使用“sencha app build package”时,我会遇到类似[ERROR] ReferenceError: Can't find variable: fileSystem.

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

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

此致

2012 年 5 月 31 日更新

对于需要访问cordova变量的每个方法,我使用一个名为 CordovaFunctions.js 的文件,并且我的 app.js 和其他视图/控制器调用 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"
}
4

1 回答 1

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"
    }
],
于 2012-05-30T20:55:36.053 回答