原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3)
javascript
做者:Lee Boonstra
Lee is a technical trainer at Sencha. She’s located in Amsterdam and has experience in both front-end and back-end development. Lee spends her spare time developing web and mobile apps. She is writing a cookbook for O'Reilly about Sencha Touch.
css
在三部分的Sencha Touch教程中,将建立“须要带伞吗”这个简单的而实用的应用程序,该应用将 从worldweatheronline.com提供的Web服务中加载天气信息。基于天气代码,该应用程序能够预测须要不须要带伞。
在本教程的最后一部分,将讨论生成,而这 须要使用Sencha Cmd和PhoneGap/Cordova。
对于原生应用程序,但是有原生API来检索设备的位置,还可使用PhoneGap/Cordova将应用程序发布为iOS、Android、BlackBerry10或Windows Phone的原生移动应用程序。
注意:若是但愿在iOS、BlackBerry或Windows Phone设备上 测试应用程序,须要受权密钥和开发人员帐号。此外,若是是使用Cordova,还不能在Windows操做系统上生成iOS的应用程序 ,也不能在Mac OS X上生成Windows的应用程序。
为了参照,能够查看本教程的第一、二部分。
能够在本教程第二部分下载解决方案代码——完整的解决方案。html
本教程的要求:
java
还能够选择安装如下软件来生成本地应用程序:
android
使用Sencha Cmd,看能够建立用于生产或测试的生产包。生产用的生成包将Sass样式表编译成为生产准备的CSS(精简包)。它还会复制静态图片以及将JavaScript(Sencha Touch框架类加上本身定义的类)生成为一个单一的精简、链接的文件,以便于文件下载和缓存。生产生成还将包括要启用本地缓存的缓存清单文件。
测试包则不包含这文件。在测试生成,在测试包中的Javascript和CSS文件将不会被精简且是可读的。
ios
下面先来建立天气应用程序的生产生成。如今作的并非建立本地生成。若是要将天气应用程序部署到本身的服务器上,就须要将生产生成的文件夹复制到web服务器上。
在命令中输入如下命令就可建立一个生产生成:
git
sencha app build production
sencha app build testing
查看一下文件夹结构,会发现,若是决定经过在线URL访问移动应用程序,这是一个能够直接在Web服务器上使用的文件夹结构。web
可能你已经发现,字体并无被复制到build文件夹,这能够经过手动复制或经过能够编辑生成过程来实现。下面来看看如何去实现。
Sencha Cmd会使用了Apache的ANT来执行生成过程。在隐藏的.sencha文件夹内,能够找到全部使用的任务。
若是但愿本身修改生成过程,能够打开位于应用程序文件夹根目录的build.xml文件,并在文件结尾添加如下Ant任务:json
<target name="-after-build"/> <target name="build" depends="init,-before-build,-build,-after-build" description="Copy over the font/dinmu folder and remove temp files"/> <copy todir="${basedir}/resources/css/stylesheets/fonts/dinmu" overwrite="true"> <fileset dir="${basedir}/resources/sass/stylesheets/fonts/dinmu"> <include name="**/*" /> </fileset> </copy> <copy todir="${build.dir}/resources/css/stylesheets/fonts/dinmu" overwrite="true"> <fileset dir="${basedir}/resources/sass/stylesheets/fonts/dinmu"> <include name="**/*" /> </fileset> </copy> <delete dir="${basedir}/${build.dir}"/>
sencha app build
有想过在设备上将应用程序做为原生应用程序来执行吗?使用诸如Adobe PhoneGap或Apache Cordova,就能够将应用程序发布为混合应用程序。
一旦有了混合应用程序,就可使用设备API,如地理定位。地理定位会基于设备的GPS传感器或网络信号的推断提供定位数据访问。
在编辑器打开app\utils\Functions.js,并查看101行:
windows
Ext.device.Geolocation.getCurrentPosition({ timeout: 5000, maximumAge: 10000, success: function(position) { var place = position.coords.latitude + "," + position.coords.longitude; Dinmu.utils.Functions.getWeather(place); Ext.Viewport.unmask(); }, failure: function() { Ext.Viewport.unmask(); Ext.Msg.alert('Timeout', 'Can not retrieve position, please retry.'); } });
当应用程序运行时,该类会根据设备自动选择正确的实现。
在生成须要带伞吗(Dinmu)应用程序以前,须要作如下两个检查:
都设置好了吧?真棒!如今只剩下使用PhoneGap或Cordova来生成一个原生应用程序了。
基于Sencha Touch的代码,有三种产品可使用来建立原生应用程序:Sencha移动包、Adobe PhoneGap和Apache Cordova。全部这些产品都支持经过Sencha设备API来访问设备的硬件资源。
下面来了解一下这三个解决方案之间的差别:
使用packager.json来生成iOS或安卓生成本地包,能够经过安卓市场或苹果App Store进行分发。
可使用PhoneGap Build云服务来(远程)打包应用程序并经过安卓市场、黑莓App World、Windows Phone Store或者苹果App Store来分发。它是最简单的解决方案,能够经过扫描QR代码在设备上测试应用程序。还能够生成本地应用程序。它是一个商业产品,免费版本只限于一个专用的应用程序。
Apache Cordova是阿帕奇软件基金会的一个顶层项目。Cordova是免费的、开源的、社区驱动的Adobe PhoneGap版本。Cordova能够打包本地应用程序,并经过安卓市场、黑莓App World、Windows Phone Store或者苹果App Store来分发。
经过命令行生成本地包须要安装XCode、安卓开发工具、BlackBerry 10 SDK或带有Visual Studio的Windows 8 Pro。
经过PhoneGap来生成包须要(免费)Adobe(PhoneGap Build)帐号:https://build.phonegap.com/apps。
注意:本教程将使用PhoneGap Build。若是更喜欢使用Cordova,可使用在本教程使用的相同的命令,不过须要在命令行将将phonegap替换为ccordova。
生成混合应用程序的第一步是在项目目录使用如下命令来启用它:
sencha phonegap init <APP-ID> <APP-NAME>
注意:若是但愿发布iOS应用程序,须要确保app Id是在苹果门户网站注册的哪一个。
如下是用来启用PhoneGap支持的命令:
sencha phonegap init com.sencha.dinmu Dinmu
MyApp/phonegap包含了完整的PhoneGap文件结构。若是使用Cordova来初始化项目,文件夹会被命名为cordova。
phonegap.platforms=ios android blackberry10 wp8
phonegap.build.remote=true # Username for PhoneGap Build phonegap.build.remote.username={username} # Password for PhoneGap Build phonegap.build.remote.password={password}
默认的Cordova/PhoneGap的config.xml文件包含了应用程序的元数据,下面来修改这个文件。
修改应用程序名称、应用程序说明和做者信息:
<name>Dinmu</name> <description> Do I need my Umbrella today? </description> <author email="myemail@addres.com" href="http://www.mydomain.com"> Your name </author>
<preference name="EnableLocation" value="true" />
<preference name="fullscreen" value="false" />
<access origin="*" />
<icon src="icon.png" /> <icon src="resources/icons/Icon.png" /> <icon gap:platform="ios" height="57" src="resources/icons/Icon.png" width="57" /> <icon gap:platform="ios" height="72" src="resources/icons/Icon~ipad.png" width="72" /> <icon gap:platform="ios" height="114" src="resources/icons/Icon@2x.png" width="114" /> <icon gap:platform="ios" height="144" src="resources/icons/Icon~ipad@2x.png" width="144" /> <gap:splash gap:platform="ios" height="480" src="res/screen/ios/screen-iphone-portrait.png" width="320" /> <gap:splash gap:platform="ios" height="960" src="res/screen/ios/screen-iphone-portrait-2x.png" width="640" /> <gap:splash gap:platform="ios" height="1024" src="res/screen/ios/screen-ipad-portrait.png" width="768" /> <gap:splash gap:platform="ios" height="768" src="res/screen/ios/screen-ipad-landscape.png" width="1024" />
使用PhoneGap或Cordova初始化应用程序后,就能够在命令行运行如下命令来建立一个本地生成了:
sencha app build -run native
若是使用PhoneGap Build,在安卓设备上测试应用程序会至关容易。只须要扫描QR代码或下载、拖放.apk文件到手机的内存卡就好了。
对于iOS,须要配置和代码签名,从而保证应用程序来源于已知用户以及自从最后一次签名后没再修改过。Windows Phone开发人员和iOS开发人员须要一个付费的开发着帐号。
一旦拥有一个iOS开发者帐号,就须要设置证书、标识符和配置文件。要了解更多相关信息,请参阅苹果开发人员工具和Sencha Touch文档中的《 Packaging Native iOS Applications》。
当全部都设置好之后,就可使用PhoneGap在命令行生成应用程序:
sencha app build native
要确保电话已链接到Mac OS X,以及在XCode生成和运行。恭喜你,已经从零开始完成了一个Sencha Touch实用应用程序的构建。若是跟随本系列三个教程,就已经使用Sencha Cmd建立了应用程序,并为须要带伞吗应用程序建立全部的视图、模型、存储和控制器。仍是用Sass建立了自定义主题,且建立了一个生产生成来发布到Web服务器或使用Adobe PhoneGap/Cordova生成一个混合应用程序。按照这个流程,就能够建立任何本身喜欢的应用程序了。喜欢这一系列教程吗?参加培训吧……