原文: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生成一個混合應用程序。按照這個流程,就能夠建立任何本身喜歡的應用程序了。喜歡這一系列教程嗎?參加培訓吧……