本节书摘来自异步社区《PhoneGap精粹:构建跨平台的移动App》一书中的第1章,第1.6节构建PhoneGap应用程序,作者 【美】John M. Wargo,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.6 构建PhoneGap应用程序
PhoneGap精粹:构建跨平台的移动App
如果你有款完整的web应用程序,无论其中是否使用了PhoneGap API,都必须被打包成原生应用程序,才能在设备上运行。PhoneGap所支持的每个移动设备平台都有其自己的特有的打包工具或编译成原生应用程序的工具。为了给每个支持的移动平台构建PhoneGap应用程序,应用程序的web内容(HTML、CSS和JavaScript以及其他所需的文件)必须被添加到每个平台对应的应用程序项目中,然后使用对应平台的特有工具构建。
这个过程中有挑战的是,每个移动平台使用完全不同的工具,同时对应的应用程序项目使用不同的配置文件和不同的文件结构。更糟的是,不同的移动平台有不同的PhoneGap JavaScript库。虽然调用API的方式每个平台是一样的,但是用于和不同平台(比如Android、BlackBerry或iOS)交互的内部JavaScript代码是不同的。
如你所见,开发人员没有可以直接配置开发系统的方法,所以他们会创建一个项目,同时使用这个项目去给多个平台创建PhoneGap应用程序。
开发人员所要做的就是为某个平台(比如Android)创建一个项目,放入相应的web内容,然后使用Google提供的工具打包并测试应用程序。一旦该应用程序可以在Android上正常工作,你就可以将对应的web内容复制到另一个新的Xcode项目(针对iOS应用程序)中,或者BlackBerry Web Works项目中,并重复前面的过程1。图1-3揭示了这个过程。虽然该图并没有包含PhoneGap支持的所有平台,但用来说明已经够了。
如果你觉得上面说的还不够糟糕的话,那么你觉得这个呢?用于为不同平台创建PhoneGap项目的工具2会将PhoneGap的JavaScript库放在不同的位置。比如,在BlackBerry的项目中,PhoneGap的JavaScript库放置于/JavaScript目录中,在iOS中则放在项目的根目录中。当把应用程序的web内容从一个移动平台复制到另一个时,你必须调整代码,因为JavaScript资源文件可能在不同的位置。
一些平台,比如webOS,在web项目中首先需要加载他们自己的JavaScript框架库(名为mojo)。所以,这里你还要注意webOS的版本。
这意味着,为了能在不同移动平台上构建移动应用程序,开发人员必须为每个平台安装完整的开发环境,并且手动复制和调整不同项目间的web源文件。
本书的第2部分,讲解了如何配置每个PhoneGap支持平台的开发环境。
幸运的是,我们有更好的方法去解决上面的问题。PhoneGap项目团队已经致力于搭建一个基于云技术的为PhoneGap应用程序打包的服务了,名为PhoneGap Build,如图1-4所示。对PhoneGap来说,该服务会极大地降低开发环境带来的复杂性。
使用PhoneGap Build,开发人员要创建一个名为config.xml的配置文件,该文件用来描述移动应用程序的设置。该文件的格式是根据W3C的Widget规范(www.w3.org/TR/widgets)定义的。该配置文件和应用程序的web内容(应用程序的HTML、CSS和JavaScript文件)会被上传到PhoneGap Build服务器上,并且被打包成不同平台的原生移动应程序。使用普通的桌面浏览器就可以使用PhoneGap Build。
PhoneGap Build可以从多种途径载入PhoneGap项目,比如,.zip文件、从Git库(http://git-scm.com)或svn库(http://subversion.apache.org)获取。开发人员甚至可以将他们的PhoneGap项目存放在PhoneGap官方的Git库中。在第9章中,我们会详细描述PhoneGap的构建过程。
1译者注:指打包并测试。
2译者注:指不同平台提供的打包或发布工具。