成功构建phonegap后,window.phonegap未定义

时间:2014-09-14 19:41:59

标签: angularjs cordova phonegap-build ionic-framework

这是我第一次用phonegap,angularjs,ionic,yeoman和grunt构建一些东西。该应用程序适用于网络,但我尝试通过phonegap构建它。我采取的步骤是:

$sudo grunt build

这可以很好地构建一切,响应是:

Done, without errors.

Execution Time (2014-09-14 19:07:13 UTC)
concurrent:dist    3m 31.6s  _________________________________ 35%
autoprefixer:dist   2m 9.1s  ____________________ 22%
concat:generated   2m 26.4s  _______________________ 24%
ngmin:dist         1m 24.3s  _____________ 14%
cdnify:dist             14s  ___ 2%
uglify:generated       8.8s  __ 1%
Total 10m 0.4s

接下来,我运行:

$ phonegap remote build android

[phonegap] compressing the app...
[phonegap] uploading the app...
[phonegap] building the app...
[phonegap] Android build complete

从那里我下载.apk并在我的Android手机上打开它。

问题是没有在某处初始化phonegap,window.phonegap未定义。

以下是在app.js中观看window.phonegap的代码:

var PhoneGapInit = function () {
  this.boot = function () {
    angular.bootstrap(document, ['mobileAppApp']);
  };
  if (window.phonegap !== undefined) {
    document.addEventListener('deviceready', function() {
     this.boot();
    });
  } else {
    alert('PhoneGap not found, booting Angular manually');
    this.boot();
  }
};

angular.element(document).ready(function() {
  new PhoneGapInit();
});

index.html中,据我所知,我已将其初始化为

<!-- build:js(.) scripts/vendor.js -->
<script src="phonegap.js"></script>

我错过了哪些重要信息?如果被问到,我可以包含相应的config.xml和Gruntfile.js。提前致谢!

1 个答案:

答案 0 :(得分:1)

我今天遇到了类似的问题。我的项目中有两个问题。

1)首先:我必须将phonegap.js移到<!-- build:js(.) scripts/vendor.js -->块之外,否则grunt构建任务将连接所有这些文件并将其替换为对vendor.js的引用。但是phonegap.js只会在Phonegap构建过程中添加,但是HTML中不会有任何引用。

2)您可能正在构建最近(> 3.0)版本的phonegap。范围更名为cordova。将您的代码更改为

if (window.cordova !== undefined) {
document.addEventListener('deviceready', function() {
 this.boot();
});

3)可选:您可以将引用从phonegap.js更改为cordova.js。 PhoneGap Build插入到文件(phonegap.js和cordova.js),而phonegap.js可能被认为已弃用,可能会在将来的版本中删除,但两个文件都包含相同的代码。

这解决了我的问题。