Native-Mobile-Application-Explained

隨著行動網路的發展, app 開發已經成為最熱門的話題。無數人都盼望做出下一個 Instagram、Vine,或者《憤怒鳥》和《Temple Run》。如今,app 開發的門檻已經很低,媒體上也充斥著小團隊創造奇蹟的故事。不過,再開發製作前是否了解app 開發類型有哪些與APP開發上的差異性……

 

原生 App

定義

在此所指的原生應用程式 (Native App) ,指的是作業系統廠商本身提供 SD軟體發展工具包(Software Development Kit, SDK)或建議的開發方式。

優點
• 原生 App 執行速度快,效能佳。適合需要極快速反應的程式、複雜的動畫、遊戲 … 等類型。
• 原生 App 對硬體裝置的支援度較好,可以應用幾乎所有硬體上的功能。例如:相機功能、 GPS 地理定位、測速計、磁力計、陀螺儀 … 等。
• 可以在官方線上商店上架,設定下載 App 的人是否要付錢,用以賺取費用。
• 使用已安裝的 App 時,不需要開瀏覽器及輸入網址。

缺點
• 不同裝置的原生 App 必須使用指定的程式語言及 SDK 開發。例如若 App 要用原生程式開發,且希望在 iOS 、 Android 、 Windows Mobile 上都能下載使用,就必須要開發 3 套不同程式語言寫的 App 。
• 開發過程中,要測試原生 App 功能必須先經過程式編譯 (Compile) 、部署安裝在裝置上,才能夠執行測試。一但有任何問題,每次修改都必須重新編譯、部署安裝的流程才行,開發測試較不方便。 (透過裝置模擬器可以測試部份功能,但模擬執行的速度也很慢)
• 部份 App 的開發者必須要繳年費給官方,才能開發原生 App 及將 App 上架。
• 將 App 上架需要經過官方審核程序。
• 付費 App 下載需讓官方抽成。
• 原生 App 程式若有更新,就需要重新上架、審核,而使用者也必須更新或重新下載,才能使用新的功能。

二、Web App

優點
通常在不同的裝置上, Web App 只需要用相同的前端網頁技術來開發即可,不需要使用不同程式語言來開發。 (通常被稱作跨平台)

開發過程中, Web App 只要使用裝置的瀏覽器輸入網址即可執行測試。若有任何問題,程式修改後,可以快速的進行測試,甚至有時只需要簡單的重新整理網頁即可。

Web App 不需要支付官方開發者年費,也不需要至官方應用程式商店上架、審核或讓官方抽成。

Web App 有任何功能更新,只需要在後端網站主機修改即可,使用者不需要重新下載安裝,就可以隨時使用最新的功能。

缺點
Web App 執行速度沒有原生應用程式來的快,較不適合需要極快速反應的程式、複雜的動畫、遊戲 … 等。

Web App 對硬體裝置的支援度不好,許多硬體上的功能可能無法使用。例如:相機功能、 GPS 地理定位、測速計、磁力計、陀螺儀 … 等。

Web App 依賴瀏覽器執行,而瀏覽器的種類繁多,對網頁技術的支援性也有些不同,雖然大都能夠執行,但 UI 畫面較不同易達到一致,且部份功能需要針對不同瀏覽器做不同的處理。

行動裝置執行 Flash 功能多有限制,在行動裝置網頁上顯示 2D 動畫、 3D 動畫、影片通常並不容易。 (但行動裝置目前對新的 HTML5 標準支援愈來愈好,採用 HTML5 將會對網頁的功能性及效能獲得許多改善)

需要打開瀏覽器及輸入網址才能執行 Web App ,感覺較麻煩。 (透過加入成為書籤、設定於主畫面螢幕點選執行、或提供 QR Code 讓行動裝置掃描,可以得到一些改善)

在網路斷線的狀態下, Web App 有可能完全無法繼續操作。 (除非在開發時一併開發離線支援功能)

三、混合式APP

定義
混合式應用程式 (HYBRID APP) 開發在此指的是,以一般以 WEB APP 方式開發用戶端程式,但最後可在包裝後像 原生 APP 一樣上架至應用程式商店的作法。

優點
就像 Web App 那樣,前端操作介面可使用統一的網頁技術來做 (推薦用 HTML5 實作) ,可以跨較多裝置平台,不必為不同裝置維護多種程式語言版本。

有些框架工具,可讓混合式 App 也能像原生 App 般,控制硬體裝置。例如:相機功能、 GPS 地理定位、測速計、磁力計、陀螺儀 … 等。

可以在官方線上 App 商店上架,設定下載 App 的人是否要付錢,用以賺取費用。
使用已安裝的 App 時,不需要開瀏覽器及輸入網址。

缺點
混合式 App 開發方式,在不同裝置仍可能需要透過不同開發工具,分開編譯 (Compile) 包裝之後,才能進行功能測試。

較需複雜運算的功能或遊戲,用混合式 App 開發方式,效能可能還是比不上原生 App 。

對硬體裝置的支援度仍比不上原生 App 。

App 程式若有更新,就需要重新上架、審核,而使用者也必須更新或重新下載,才能使用新的功能。

資料來源:http://www.phd.com.tw/knowledge/app-dev/