Cordova開發(fā)App的優(yōu)缺點詳解
一、跨平臺開發(fā)的優(yōu)點
Cordova作為開源移動開發(fā)框架,以其跨平臺特性受到廣大開發(fā)者的青睞。只需一次編寫,即可部署到iOS、Android和Windows Phone等多個平臺,極大地節(jié)省了開發(fā)時間和資源。這意味著開發(fā)者無需為每個平臺單獨開發(fā)應用,降低了開發(fā)成本。對于習慣Web開發(fā)的開發(fā)者來說,Cordova允許他們利用熟悉的HTML、CSS和JavaScript進行開發(fā),無需額外學習原生語言。

二、豐富的插件生態(tài)
Cordova擁有龐大的插件生態(tài)系統(tǒng),支持設備原生功能的快速集成。這意味著開發(fā)者可以輕松地實現(xiàn)如相機、定位、推送通知等功能的集成,從而加速開發(fā)過程。Cordova活躍的社區(qū)和豐富的資源也為開發(fā)者提供了解決問題的便利渠道和知識共享的平臺。
三、性能與用戶體驗的挑戰(zhàn)
作為基于瀏覽器的開發(fā)框架,Cordova在圖形密集和高性能需求的應用上可能不如原生應用。盡管可以通過優(yōu)化和調(diào)整來彌補這一差距,但在某些情況下,仍可能面臨性能挑戰(zhàn)。雖然可以使用Web技術(shù)構(gòu)建界面,但可能與原生應用存在差距,導致加載速度和過渡效果不如預期。這些因素都可能影響用戶體驗。
四、插件依賴與維護的考量

雖然Cordova的插件生態(tài)系統(tǒng)豐富,但也帶來了插件依賴和維護的問題。插件更新頻繁,可能與新系統(tǒng)版本不兼容,增加了維護的負擔。開發(fā)者在選擇和使用插件時,需要關(guān)注其兼容性和穩(wěn)定性。
五、硬件訪問的局限性
與原生應用相比,Cordova在某些復雜硬件交互方面存在局限性。例如,對于一些需要深度訪問硬件功能的應用,Cordova可能難以實現(xiàn)。這可能會對某些類型的應用開發(fā)造成限制。
關(guān)于Cordova與PhoneGap和AppCan的比較
一、技術(shù)關(guān)聯(lián)與異同

Cordova是PhoneGap的核心引擎,兩者的技術(shù)緊密相關(guān)。PhoneGap與Cordova的SPA(單頁面應用)模式相似,都利用Web技術(shù)開發(fā)移動應用。而AppCan作為國內(nèi)Hybird跨平臺的代表,底層技術(shù)自主研發(fā),體系和適配性較好。盡管AppCan也注重跨平臺開發(fā),但其工具、平臺、服務更為穩(wěn)定實用。
二、開發(fā)模型的差異
基于兩種引擎的開發(fā)工具在開發(fā)模型上表現(xiàn)出差異。Cordova/PhoneGap采用的是SPA模式,所有網(wǎng)頁都運行在一個窗口中,這要求開發(fā)者自行處理各種沖突。而AppCan則采用多窗口模式,這可能使得開發(fā)者在處理應用邏輯和頁面跳轉(zhuǎn)時更為靈活。不過這也可能導致AppCan在性能優(yōu)化和用戶體驗方面需要更多的工作。
一、SPA模型與移動應用的資源加載策略
在現(xiàn)代移動應用開發(fā)中,SPA(Single Page Application)模型備受關(guān)注。它通過異步加載JS、CSS等資源,實現(xiàn)了頁面的隨用隨加載。在當前的網(wǎng)速環(huán)境下,這種策略的實際意義并不大。特別是在單窗口應用中,資源加載的優(yōu)化需求并不突出。盡管如此,AppCan框架通過多窗口機制,展現(xiàn)了其在資源管理和跨平臺能力上的獨特優(yōu)勢。每個窗口獨立存在,相互間可以流暢跳轉(zhuǎn),并配有過渡動畫,使得用戶體驗接近原生應用。

AppCan通過對操作系統(tǒng)底層Webview的封裝和擴展,為HTML頁面提供了調(diào)用本地功能的能力。這意味著原本不支持本地功能的HTML標準,現(xiàn)在可以通過Javascript API接口加以實現(xiàn)。完整的Callback機制確保了HTML頁面與操作系統(tǒng)底層的無縫交互。
但在SEO方面,單窗口相比多窗口更具優(yōu)勢。AppCan框架雖然能開發(fā)移動應用并轉(zhuǎn)換為網(wǎng)站,但此時的網(wǎng)站采用的是MPA(Multi-Page Application)模式,其性能可能不如SPA模型。為了支持SEO,后端組裝成為必要手段。
二、UI框架的選擇:BOOTSTRAP與彈性盒子模型
在移動應用開發(fā)中,UI框架的選擇至關(guān)重要。Cordova/PhoneGap選用BOOTSTRAP框架作為界面布局方案。雖然BootStrap作為響應式布局能簡化網(wǎng)頁排版,實現(xiàn)全平臺兼容,但其庫較大,尤其在移動端體驗和響應方面存在不足。使用CSS3的Media Query技術(shù)排版,可能無法保證最大屏幕顯示精度,造成顯示效果的粗糙。
相比之下,AppCan采用彈性盒子模型,專為移動應用和網(wǎng)站設計,更加輕量。通過原生適配技術(shù),界面效果可媲美原生應用。AppCan的MPA模型使得單個頁面負責獨立任務,避免了SPA模型引發(fā)的沖突、加卸載、變量隔離等問題。原生實現(xiàn)的界面間動畫,體驗優(yōu)于JS動畫。

三、原生能力與引擎技術(shù)
AppCan采用自主知識產(chǎn)權(quán)的引擎,提供豐富的原生組件能力。開放的原生插件擴展機制,讓自定義插件集成變得簡單。尤其在國內(nèi),各種特有組件的商業(yè)運營維護得到支持,如微信插件等。引擎封裝的原生插件調(diào)用代碼,支持同步/異步調(diào)用,使插件調(diào)用更加簡便。
相比之下,PhoneGap/Corovda在SPA模型的支持下,開發(fā)復雜度和體驗上存在一定弱點。基于Corovda的跨平臺工具需要自行編寫原生組件,打包過程較為復雜。
四、如何快速開發(fā)Android App
對于非原生App的開發(fā),移動端可以使用ionic和cordova等工具。特別是安卓端,采用一些基本步驟可以快速開發(fā)應用。值得一提的是,CoreThink框架是一個開源免費的WEB產(chǎn)品開發(fā)框架,其流程可以迅速產(chǎn)出iOS和Android兩端的非原生APP。該流程曾由一位研發(fā)美女順手整理分享,希望能對開發(fā)者有所幫助。關(guān)于流程中的任何疑問或建議,可以通過官網(wǎng)或QQ群進行反饋和交流。

安裝基礎環(huán)境
在開始開發(fā)之前,我們需要進行一系列的準備工作,安裝必要的軟件和工具。步驟如下:
1. 安裝node.js。
2. 安裝git。
3. 安裝Ionic和Cordova。通過命令行輸入:npm install–g cordova ionic,推薦全局安裝,安裝后的目錄通常為C:/users/Administrator/AppData/Roaming/npm/node_modules。

4. 安裝Java JDK。
5. 安裝Apache Ant。
6. 安裝Android SDK,此后的步驟主要以Android為例進行說明,iOS的類似。
設置環(huán)境變量
環(huán)境變量的設置是開發(fā)過程中的重要環(huán)節(jié),以下是詳細步驟:

1. 打開計算機,進入系統(tǒng)屬性,點擊高級系統(tǒng)設置,再進入環(huán)境變量設置。
2. 在系統(tǒng)變量中新建ANDROID_HOME變量,其值為sdk所在目錄。
3. 新建CLASSPATH變量,包括jdk的相關(guān)路徑。
4. 新建JAVA_HOME變量,其值為jdk的安裝路徑。
5. 編輯Path系統(tǒng)變量,在原有值的基礎上添加jdk和sdk的相關(guān)路徑。

創(chuàng)建與配置項目
完成環(huán)境變量的設置后,我們可以開始創(chuàng)建項目了。通過命令行進入任意目錄,使用ionic start命令創(chuàng)建一個新的Ionic項目。接下來,為項目添加Android平臺。
項目結(jié)構(gòu)與開發(fā)
每個Ionic項目中都有一個www文件夾,其中包含html、js、css等前端文件。這里的文件可以自由編輯,而platform文件夾中的www文件則不建議修改。
測試與編寫項目

項目編寫完成后,需要進行測試??梢酝ㄟ^桌面瀏覽器、模擬器、手機瀏覽器或?qū)嶋H手機設備進行測試。在測試過程中,可能會遇到各種問題,需要具體問題具體分析解決。
二、發(fā)布應用
準備發(fā)布
經(jīng)過前面的準備,我們終于迎來了應用發(fā)布的關(guān)鍵步驟。需要移除開發(fā)時不需要的生產(chǎn)插件。執(zhí)行命令:cordova plugin rm cordova-plugin-console。
構(gòu)建與簽名

接下來,執(zhí)行Cordova的發(fā)布構(gòu)建命令,生成未簽名的apk文件。然后,使用keytool生成私鑰,對apk進行簽名。簽名完成后,使用zipalign工具進行最后的對齊處理。
三、總結(jié)與常見問題處理
基本步驟完成
以上步驟完成后,一個Ionic+Cordova的Android應用就基本完成了。在開發(fā)過程中可能會遇到各種問題,需要開發(fā)者根據(jù)具體情況進行分析和解決。這里只是提供了一個大致的流程,具體細節(jié)還需要開發(fā)者自行探索和學習。
