我在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中进行拉动和重建时,我有两种情况:
index.js
文件,而只是在merges / android目录中。结果:文件丢失了(即它的内容,这是在deviceReady事件中显示的警报 - 当前平台是android-从未执行过 - 后续代码也没有-message:初始化运行 - 这是结果在尝试拨打ReferenceError
时app.initialize()
。{/ li>
index.js
创建为www/js
下的默认值。结果:打印的消息为“使用默认值”。我的结论:文件从未合并过。
我的问题:为什么?我应该创建一个显式的平台/ android目录(井:平台),以便合并我的文件?或者应该build.phonegap.com当我告诉重建Android应用程序时自动执行它?
我在这里缺少什么?
答案 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
中,您应该找到合并的文件,而不是其他地方。