Phonegap合并目录 - 未合并的资产

时间:2014-07-02 21:02:54

标签: cordova merge assets

我在PhoneGap(版本:3.4)总计n00b。目前我的项目结构如下:

.cordova
+---config.json
hooks
+---README.md
merges
+---android
    +---js
        +---index.js
platforms
+---.gitkeep
plugins
+---org.apache.cordova.device (content: the plugin sources, doc, and data)
+---android.json (content: plugins config for android)
www
+---css (content: many assets here)
+---img (content: many assets here)
+---js (content: many assets here, siblings of index.js)
    +---index.js (a default file intended to be overriden by the merged index.js file)
+---res (content: resources for splashscreen and stuff configured in config.xml)
+---index.html
+---config.xml
+---icon.png

我的目的是让平台特定文件(在本例中为android)覆盖许多文件,因此我为自定义android资产创建了一个merges/android目录。

index.js(base)的内容:

var app = {
    selectDevice: function() {
        window.alert('using default');
    },
    initialize: function() {
        document.addEventListener("deviceready", this.selectDevice, false);
    }
};

index.js(to-merge)的内容:

var app = {
    selectDevice: function() {
        window.alert('using android');
    },
    initialize: function() {
        document.addEventListener("deviceready", this.selectDevice, false);
    }
};

index.html的内容(每个平台唯一且常见的html文件):

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <script type="text/javascript" src="phonegap.js"></script>
        <title>1001Carros</title>
    </head>
    <body>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript">
            window.alert('initializing...');
            app.initialize();
            window.alert('initialization was run.');
        </script>
        <div id="log">
            <button id="clickme" value="Click Me"></button>
            pantalla principal
        </div>
    </body>
</html>

我在这里详述的文件系统结构是我当前存储库的状态(注意:空文件夹有虚拟.gitkeep文件,因此它们存在于存储库中 - 这对于目前为空的平台目录尤其如此。)

然而,当我将我的内容推送到我的仓库并在http://build.phonegap.com中进行拉动和重建时,我有两种情况:

  1. 在第一次尝试中,我没有在基本www目录中创建index.js文件,而只是在merges / android目录中。结果:文件丢失了(即它的内容,这是在deviceReady事件中显示的警报 - 当前平台是android-从未执行过 - 后续代码也没有-message:初始化运行 - 这是结果在尝试拨打ReferenceErrorapp.initialize()。{/ li>
  2. 在第二次尝试中,当没有合并文件时,我将index.js创建为www/js下的默认值。结果:打印的消息为“使用默认值”。
  3. 我的结论:文件从未合并过。

    我的问题:为什么?我应该创建一个显式的平台/ android目录(井:平台),以便合并我的文件?或者应该build.phonegap.com当我告诉重建Android应用程序时自动执行它?

    我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

merges文件夹用于像图像或css这样的资源,在我看来,对整个JS来说并不是那么多。相反,我建议你添加设备插件并针对“android”测试device.platform以获得这些平台上的不同行为。

http://docs.phonegap.com/en/3.0.0/cordova_device_device.md.html#device.platform

您询问是否应创建platform/android目录。这是一个奇怪的问题,因为如果你这样做,你应该使用build命令,该目录应该自己创建!然后在platform/android/assets/www中,您应该找到合并的文件,而不是其他地方。