Phonegap (NOT Cordova) 3.5 示例应用程序未启动 deviceready

Posted

技术标签:

【中文标题】Phonegap (NOT Cordova) 3.5 示例应用程序未启动 deviceready【英文标题】:Phonegap (NOT Cordova) 3.5 sample app not firing deviceready 【发布时间】:2014-06-11 21:16:58 【问题描述】:

我今天注意到:sudo npm update -g phonegap 显示 v3.5 可用。执行此更新后,phonegap -v 返回:3.5.0-0.20.4

然后我继续使用 Phonegap CLI 创建示例应用程序:

cd myProjectFolder phonegap 创建 HelloPhoneGap350 cd HelloPhoneGap350 phonegap 本地构建 ios(添加 ios 平台) phonegap 运行 ios --emulator

此时,示例应用程序启动。但是,永远不会调用 deviceready 事件。 (我添加了一些警报代码,可以看到 app.initialize() 和 app.bindEvents() 被调用。但 onDeviceReady 从未被调用。我还能够通过 android 构建重现这一点。

几周前,我通过与之前版本的 Phonegap (v3.4.0-0.20.0) 完全相同的过程创建了一个运行良好并调用 onDeviceReady 函数的 HelloWorld340。

我意识到 Cordova 3.5.0 的 Phonegap 3.5.0 包装才推出几天。也许这是包装中的错误?任何人都有任何想法或解决方案。

谢谢!

【问题讨论】:

【参考方案1】:

嗯,我使用的是 3.5.0-0.2.4,它就像一个魅力。 也许您忘记继承cordova.js 文件?

【讨论】:

嗯...这至少是一个正确的方向...经过进一步审查,正确的cordova.js文件被放置在platforms/ios/www但是请注意那里的文件科尔多瓦.js。但是,index.html 是指加载 phonegap.js。因此,更改 index.html 中的引用解决了这个问题。似乎是 PhoneGap 项目生成过程中的一个错误。【参考方案2】:

过去几天的更多有趣观察。我经历了创建更多项目的过程。 (我正在将一堆旧的 PhoneGap 应用程序迁移到新的 PhoneGap 3.5,创建新的示例项目并且只需将现有的 HTML/JS/CSS 代码移到上面更容易......)

在这项工作中,我注意到 - 通过一些特定步骤 - 生成的项目可以开箱即用地触发“设备就绪”。以下是详细信息:

我注意到,当从命令行创建应用程序时,phonegap.js 文件似乎放在了正确的位置 (yourProjectName/platforms/ios/www/phonegap.js)。

但是,在第一次使用 Xcode 启动项目时,即使它位于 Xcode 中的“Staging/www”视图中,它似乎也不会被注意到。但是,如果您按照程序进行操作,Xcode 中的重建似乎会注意到它的存在并打包正确的位以推送到设备/模拟器。

CLI:phonegap 本地构建 ios Xcode:产品 - 清洁 Xcode:产品 - 构建/运行

(但是请注意,最初创建platforms/ios/www 时出现的cordova.js 文件不会被删除。因此,您最终会得到2 个具有不同名称的相同文件的副本:cordova。 js 和 phonegap.js)

使用这种方法,您不必编辑生成的 index.html 解决方案(在此线程中作为另一个解决方案/解决方法提到)。

【讨论】:

【参考方案3】:

感谢上面 brauchle_andi 的建议,我深入挖掘并发现了问题,并在一个“干净”生成的项目中重现了它。

我正在使用 PhoneGap 3.5.0-0.20.4

我在下面生成了一个新项目(详细信息),文件 cordova.js 放置在适当的平台/ios/www 文件夹中

但是,生成的 index.html 引用了加载脚本文件 phonegap.js。编辑 index.html 以加载 cordova.js 可解决此问题。

似乎是 PhoneGap 打包过程中的一个错误。

以下是重现此问题所采取的步骤:

使用 npm 安装(虽然我可能做过更新,不记得了)PhoneGap 3.5.0-0.20.4 cd Documents/PhoneGapProjects(我放置 Hello World 程序的文件夹) phonegap create /Users/John_Arnold/Documents/PhoneGapProjects/HelloPhoneGap350A -i "com.phonegap.HelloPhoneGap350A" -n "HelloPhoneGap350A" phonegap 运行 ios --emulator

这将创建具有上述问题的项目。编辑 index.html 并重新运行项目修复它。

【讨论】:

以上是关于Phonegap (NOT Cordova) 3.5 示例应用程序未启动 deviceready的主要内容,如果未能解决你的问题,请参考以下文章

Python 操作Redis

python爬虫入门----- 阿里巴巴供应商爬虫

Python词典设置默认值小技巧

《python学习手册(第4版)》pdf

Django settings.py 的media路径设置

Python中的赋值,浅拷贝和深拷贝的区别