PhoneGap, 第一个应用

移动开发有三条路,Native, HTML5 和 Hybrid,Native 可以把各种平台的特性充分发挥,HTML5 简单,可限制太多,混合型是个折中的办法。对于那些不很注重特效又需要访问部分本地资源的应用可采用 Hybrid 的方式,而其中的佼佼者就数 PhoneGap,又说 Cordova。它们是两个主,却又基本相似的东西,见 PhoneGap, Cordova, and what’s in a name?

我们既可以选择 PhoneGap,也可以选择 Cordova,安装使用起来基本类似,再往下的发展的就无定数了。鉴于 PhoneGap 依托于 Adobe 那么一个强大的后台,我还是选择试用下 PhoneGap,并且 Adobe 还为它提供了在线构建和源码托管 http://build.phonegap.com。当然这是一家像 Oracle 那样商业气息比较浓的公司,使用在线构建免费用户只能建立一个应用。

现在看一个应用 PhoneGap 的例子,从安装开始,演示平台为 Mac, 其他平台都类似。PhoneGap 可由 NodeJS 来安装,所以首先要在 http://nodejs.org 安装 NodeJS。然后执行下面的命令安装 phonegap:

$ sudo npm install -g phonegap

安装后在 /usr/local/bin 下就有 phonegap 命令了,现在就用 phonegap 来创建自己的应用了,新版的 PhoneGap 不会在 Xcode 中安插项目模板了,一切都在控制台下进行

$ phonegap create MyApp cc.unmi.myapp MyApp

上面第一个 MyApp 是路径,即创建在 MyApp 目录中,第二个 MyApp 是应用的名称,即项目名,它们通常按照习惯是一致的。中间的 cc.unmi.myapp 是 Bundle Identifier,作为应用的标识名。

上面命令执行后会在 MyApp 目录中产生四个目录

merges, platforms, plugins, 和 www,www 目录就是有些话那些页面相关的资源,我们基本是在这个目录下工作的,里面的 index.html 就是 PhoneGap 的入口页面,差不多可认为是应用的入口。

怎么构建运行呢,先进到工程目录,执行 build

$ cd MyApp
$ phonegap local build ios

现在差不多可以 phonegap run ios 命令了,不过第一次运行如果提示 missing ios-sim,就要安装 ios-sim

#如果运行 phonegap run ios 提示 missing ios-sim 就安装它
sudo npm install -g ios-sim

正式运行 run 命令了, 其实 phonegap run ios 命令也会执行构建工作的

$ phonegap run ios

一切正常的话,iOS 模拟器就出来了

phonegap-demo-app

留给我们编程处理的基本就是 MyApp/www 中的内容,比如引入 jQuery Mobile 来实现界面,PhoneGap 在其中只是担当了一个 HTML 到 Native 的一个桥梁作用。再借助于 PhoneGap 的插件可进一行接近 HTML 与 Native 的距离。

每次编辑完 MyApp/www 中的内容后只需要运行

$ $ phonegap run ios

就能看到最新效果了。

执行了前面的  phonegap local build ios 后可以看到在 MyApp/platforms/ios 有了个 XCode 工程了,用 XCode 打开它可以在 XCode 里运行,不过在这个项目里编辑的是 platforms/ios/www 的内容,每次 phonegap local build ios 又会覆盖掉。

因为 PhoneGap 支持主流的移动平台,使用与上面上面类似的命令可以构建出 Android, Windows Phone 等工程并运行。

参考:1. The Command-line Interface
        2. https://github.com/phonegap/phonegap-cli

本文链接 https://yanbin.blog/phonegap-first-application/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments