天天看點

Cordova or Xamarin 用.net開發IOS和Android程式

visual studio 2015 和 apache cordova

在開始前,問一下自己下面這些問題:

熟練掌握web技術的開發者比例是多少?(占所有開發者的比例)

熟練掌握移動開發技術(并且使用跨平台開發工具)的開發者比例是多少?

熟練掌握web技術和移動開發技術的開發者比例是多少?

在以上的開發者中,能夠勝任跨移動平台開發的開發者比例又是多少?

由于學習時間和職業範圍限制,最後一個問題中符合條件的開發者,少之又少。事實上,在就業市場很少有公司招聘那些多面手(掌握很多技術的人),因為他們要的薪水很高但是又不能一次執行多個任務。随着專業知識不斷增長,一名顧問提出的理論也相應增多。類似 apache cordova(一套跨平台的移動裝置api)的跨平台工具往往理智地增加最後一個數字。

在web浏覽器和手機作業系統上開發應用時,我們可以使用3個主要的開發工具。unity(一個專業遊戲引擎、多平台遊戲開發工具),被認為在視訊遊戲中最接近原生性能的開發工具。它有高性能的優點,但是它也有一個相對困難的學習過程。xamarin(一個跨平台開發架構,旨在使移動開發變得簡單),一個基于mono(novell公司開發的跨平台·net運作環境)項目的開發工具,成本效益較高,尤其對于.net開發者而言。它幫助把.net架構的優勢帶到微軟國外平台上。最後一個是cordova,它的學習成本幾乎為0,使用類似面向移動應用的web開發技術實作移動和跨平台應用。

Cordova or Xamarin 用.net開發IOS和Android程式
Cordova or Xamarin 用.net開發IOS和Android程式
Cordova or Xamarin 用.net開發IOS和Android程式
Cordova or Xamarin 用.net開發IOS和Android程式
Cordova or Xamarin 用.net開發IOS和Android程式

web

cordova

xamarin

unity

natif

cordova 項目源于3年前adobe公司貢獻出的phonegap項目(前者是從後者中抽出的核心代碼,是驅動後者的核心引擎),adobe公司以它在多媒體處理方面的套裝軟體聞名于世:photoshop,illustrator(一個矢量圖像編輯軟體),premiere(一個非線性視訊編輯軟體),等等。cordova 是 adobe 公司在2011年貢獻給apache後的開源項目,它于2012年10月從apache孵化器畢業,正式成為apache的頂級項目。

Cordova or Xamarin 用.net開發IOS和Android程式

回到2014年4月,微軟釋出了visual studio 2013的第2個更新包,在這次更新中,出現了一個全新的擴充應用"multi-device hybrid app(支援多裝置應用)"。通過使用一個新的項目類型和一個依賴安裝工具,它可以使visual studio更好地內建apache cordova。第1個更新包釋出後,在微軟社群回報良好,之後第2個更新包便出現了這個功能,帶着新特性、更好的內建效果...

Cordova or Xamarin 用.net開發IOS和Android程式
Cordova or Xamarin 用.net開發IOS和Android程式

更近一些的時間,在2014年11月,visual studio 2015 預覽版釋出,cordova擴充被改進并更名為"tools for apache cordova"。現在可以通過visual studio安裝包的一個選項直接安裝cordova。如果相關選項被選中,會觸發另一個安裝步驟,它允許你自定義想要安裝的工具:ant,android,java,nodejs,等等。

對于一個典型的網站而言,通過(過去那種附加功能)隻有短信和郵件的标準手機來擷取使用者是不可能的事情。cordova為web開發者提供了一個新的視野:可運作應用的裝置的多樣性,這在之前幾乎是不可實作的。消息提醒、地理定位、振動、攝像頭、存儲...所有這些功能,超出了移動開發的範圍,但它們又是必要的,(cordova)以一種非常高效的方式幫助你實作産品的這些功能。

為了在本地環境使用web開發技術,cordova在編譯時會生成一個應用程式,它主要處理兩件事:

內建webview元件和浏覽器

打包包含web應用程式檔案的一系列資源

Cordova or Xamarin 用.net開發IOS和Android程式

在一個web頁面中調用cordova api,隻需添加非常少的代碼:引入一個虛拟的js檔案,編譯後js才可用:

<code>1</code>

<code>&lt;</code><code>script</code> <code>src</code><code>=</code><code>"cordova.js"</code><code>&gt;&lt;/</code><code>script</code><code>&gt;</code>

最後,你可以添加一個具體的事件觸發器來監測api是否可用、裝置是否可用:

<code>document.addeventlistener(</code><code>"deviceready"</code><code>, ondeviceready, </code><code>false</code><code>);</code>

<code>2</code>

<code>function</code> <code>ondeviceready() { </code><code>/* init */</code> <code>}</code>

為了提高cordova跨平台開發的效率,visual studio在javascript和typescript目錄下添加了一個新的項目類型。

Cordova or Xamarin 用.net開發IOS和Android程式

此外,visual studio使用一個基礎檔案樹來初始化開發環境,它也添加了兩個新的模拟器。

Cordova or Xamarin 用.net開發IOS和Android程式

第一個(模拟器)是全新的功能,它是android sdk 模拟器的翻版:這就是visual studio的android 模拟器。現在我們可以直接通過visual studio在一台android裝置上運作和debug應用程式,而不用安裝android sdk模拟器。在所有的優化中,我們發現一點:android 模拟器啟動時間比android sdk模拟器快很多。當然,android模拟器也可以啟動模拟裝置上的一些api,比如gps加速度計。

Cordova or Xamarin 用.net開發IOS和Android程式

第二個(模拟器)是 ripple,也是apache的一個産品。ripple最初是chrome的一個擴充應用,用來快速測試和啟用cordova api。(後來)ripple單獨放在chrome一個視窗中,visual studio并未止步于此。一旦啟動了模拟器,編輯應用程式的源代碼後,讓模拟器自動更新應用程式以減少通常重置debug環境耗費的時間,這種效果是有可能實作的。

Cordova or Xamarin 用.net開發IOS和Android程式

visual studio應當會走得更遠:幫助你把應用程式部署到一台實體移動裝置上,允許你對它進行debug,就像debug模拟器上的應用一樣簡單。目前,在一台激活的實體移動裝置上保持debug模式仍然存在一個問題。但是應用程式确實已經釋出到移動裝置上,并且已啟動。這個bug已經公開,相信不久它就會被修複。android,ios和windows phone,任何級别的web開發人員都要考慮,且不僅僅是這些。cordova不僅僅适用于移動應用,它也可以用來建立windows應用和ubuntu應用,這一點很重要。

cordova極大地幫助了web開發者的工作,它允許開發者首次進入移動開發環境而不用降低自己的忍耐度。順便提一點,開發者可以保持自己的大部分工作習慣,尤其是互動式設計方面,cordova為開發者提供了一個比"布局"更靈活的技術來繪制每一個所需的方案。

另外,動畫效果也是需要着重關注的,它一般用javascript實作,以相容多數web浏覽器。對于一個本地應用程式來說,再也不必這麼做。你可以指定一個具體的作業系統版本來确定先決條件,但是不要指定可能使用ie6或者ie7的作業系統。另一方面,對于移動裝置而言,cpu性能和記憶體大小不再像對于電腦那樣重要了。

我們應該把"内置"的javascript實作的動畫替換為css transition(apache基金會的做法)。更進一步,為了避免"reflow"現象(重載或更新dom樹導緻頁面性能降低),最好使用css3的新特性來調用gpu。我們可以觀察到當一個dom 元素大小變化時,由于浏覽器會計算這個元素大小變化對頁面其它元素的影響,此時浏覽器會突然變慢。使用css3過渡屬性裡的過渡效果(用translate定義),而不是top和left等坐标屬性,頁面性能會提高很多。最後,在桌面端優化dom樹時,一般不要使用javascript,這一點在移動裝置上更重要。

例如,下面的css可以相容很多的浏覽器,但它的性能較低:

<code>01</code>

<code>.slide.inactive {   </code>

<code>02</code>

<code>    </code><code>transition: </code><code>all</code> <code>0.5</code><code>s ease-out;   </code>

<code>03</code>

<code>    </code><code>-webkit-transition: </code><code>all</code> <code>0.5</code><code>s ease-out;   </code>

<code>04</code>

<code>    </code><code>opacity: </code><code>0</code><code>;   </code>

<code>05</code>

<code>    </code><code>left</code><code>: </code><code>-100%</code><code>;   </code>

<code>06</code>

<code>}   </code>

<code>07</code>

<code>.slide.active {   </code>

<code>08</code>

<code>    </code><code>position</code><code>: </code><code>relative</code><code>;   </code>

<code>09</code>

<code>10</code>

<code>11</code>

<code>    </code><code>opacity: </code><code>1</code><code>;   </code>

<code>12</code>

<code>    </code><code>left</code><code>: </code><code>0</code><code>;   </code>

<code>13</code>

<code>}</code>

下面一個,相反,相容性略差,但是性能更好,因為它不會引起reflow現象:

<code>    </code><code>transform: translatex(</code><code>-100%</code><code>);   </code>

<code>    </code><code>-webkit-transform: translatex(</code><code>-100%</code><code>);   </code>

<code>    </code><code>transform: translatex(</code><code>0</code><code>);   </code>

<code>14</code>

<code>    </code><code>-webkit-transform: translatex(</code><code>0</code><code>);   </code>

<code>15</code>

為了走得更遠,我們應當使用類似iconic的前端架構進行測試。iconic有一句自我介紹比較有意思:

追求性能    速度很重要。隻有當你沒有這個東西的時候才會發現它的重要性。iconic在最新的移動裝置上表現非常好。最少的dom操作次數、完全不使用jquery、硬體加速轉換,有一件事很确定:iconic會給你留下深刻的印象。

作為結束語,介紹一個 cordova實作的類似powerpoint應用,它的源碼儲存在 一個github庫裡。

http://www.visualstudio.com/en-us/explore/cordova-vs.aspx

http://channel9.msdn.com/events/visual-studio/connect-event-2014/511

http://msopentech.com/blog/2014/09/25/apache-cordova-gains-windows-8-1-and-windows-phone-8-1-support-2-2/

http://msopentech.com/blog/2014/05/12/apache-cordova-integrated-visual-studio/

http://cordova.apache.org/#about

http://blogs.msdn.com/b/visualstudio/archive/2014/11/13/tools-for-apache-cordova-update-ios-debugging-amp-windows-8-1-support.aspx

http://www.tricedesigns.com/2013/03/11/performance-ux-considerations-for-successful-phonegap-apps/

http://ripple.incubator.apache.org

原文位址:http://www.codeproject.com/articles/860150/visual-studio-and-apache-cordova

-----------------------------------------------------------------

我做的小程式們

【推薦】web版短信管理平台源碼

winform版短信管理平台源碼

移動短信程式源碼win服務版(cmpp3.0/cmpp2.0協定)

移動物聯網卡短信源碼(cmpp3.0協定,支援mssql/mysql資料庫)

c#實作聯通短信sgip協定程式源碼

c#實作電信短信smgp協定程式源碼

c#實作移動短信cmpp服務端程式源碼