这是我第一次用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。提前致谢!
答案 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可能被认为已弃用,可能会在将来的版本中删除,但两个文件都包含相同的代码。
这解决了我的问题。