版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。http://www.itdecent.cn/p/44305a99c51a
轉(zhuǎn)載請標(biāo)明出處:
http://www.itdecent.cn/p/44305a99c51a
本文出自 AWeiLoveAndroid的博客
做安卓時間長了,接觸到各種各樣的框架,前前后后遇到了很多問題,這里順便記錄一下那些年在安卓開發(fā)的發(fā)展過程中的那些跨平臺開發(fā)技術(shù)框架,大致如下:
如有錯誤,歡迎指正。
(一)適合WebApp的一些框架
1、Cordova
優(yōu)點:
開源免費,社區(qū)生態(tài)成熟,插件豐富
支持離線場景應(yīng)用
開發(fā)工具選擇空間大
缺點:
只提供基礎(chǔ)訪問設(shè)備的接口,需要自己搭配其他UI框架和JavaScript框架來搭配
2、Ionic
優(yōu)點:
國外的一款接近原生的Html5移動App開發(fā)框架,免費開源。
漂亮的界面,追求性能,專注原生,免費開源
Angular JS MVVM 開發(fā)理念,數(shù)據(jù)雙向綁定
基于Cordova,可以使用 Cordova 的插件
缺點:
需要掌握 HTML + CSS + Angular JS ,學(xué)習(xí)路線陡峭
Ionic 框架相比于原生的 Cordova 有所差異,Cordova 某些官方插件可能不適用于Ionic
3、Dcloud
優(yōu)點:
國內(nèi)廠商,中文文檔
對HTML5的性能、工具、能力都做了深入擴展,提供 IDE 、云服務(wù)等幫助節(jié)省時間
MUI 更貼近國內(nèi)App使用習(xí)慣,提供模塊的詳細例子,如登錄,個人中心
缺點:
部分操作需要具備原生開發(fā)經(jīng)驗,如離線打包App
新產(chǎn)品仍然有bug,還需改進
4、小程序
2016年9月21日,微信小程序正式開啟內(nèi)測。2017年1月9日0點,微信第一批小程序正式低調(diào)上線。
微信小程序,是一種不需要下載安裝即可使用的應(yīng)用,它實現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應(yīng)用。
優(yōu)點:
1.即用即走——這個是從微信小程序上線就開始打的概念。即用即走使得小程序可以代替許多APP,或是做APP的整體嫁接,或是作為閹割版功能的承載體。
2.倚靠微信流量——相比APP,小程序一個突出的優(yōu)點是完全嵌入了微信的聊天、公眾號體系,完美進行微信體系內(nèi)的流量引導(dǎo)。這一方面令小程序更加容易獲客,另一方面也可以借助微信的成熟社交網(wǎng)絡(luò)達到爆發(fā)式傳播。
3.連接線上線下——連接線上線下場景也是微信小程序重要的一環(huán),甚至最先開始為了推動線下習(xí)慣的養(yǎng)成,小程序在線上場景方面做了較強的限制。由于人們用微信掃描二維碼的習(xí)慣培養(yǎng)得比較好,小程序相比APP更容易達成線上線下場景的連接與互動。
缺點:
1.留存——雖然有部分小程序已經(jīng)殺出重圍,但是普遍來講,主打“即用即走”的小程序在用戶留存上仍存在很大的提升空間。阿拉丁發(fā)布的小程序白皮書中顯示,小程序的平均次日留存在13%左右,但是雙周留存驟降到僅有1%。輕易擁有的也不在意失去,這大概是小程序目前的一個癥結(jié)所在。
2.受控于微信——比起APP,尤其是安卓版的高自由度,小程序要面對很多來自微信的限制,從功能接口,甚至到類別內(nèi)容,都要接受微信的管控,部分敏感內(nèi)容還很容易遭受封禁威脅。
部分參考鏈接:https://www.zhihu.com/question/263816362/answer/274417734
5、PWA
PWA(Progressive Web App)是 Google 于 2016 年提出的概念,2017 年已被迅速采用。
PWA全稱Progressive Web App,即漸進式Web應(yīng)用。
一個PWA應(yīng)用首先是一個網(wǎng)頁, 可以通過Web技術(shù)編寫出一個網(wǎng)頁應(yīng)用. 隨后添加上App Manifest和Service Worker來實現(xiàn)PWA的安裝和離線等功能。
解決了哪些問題?
可以添加至主屏幕,點擊主屏幕圖標(biāo)可以實現(xiàn)啟動動畫以及隱藏地址欄
實現(xiàn)離線緩存功能,即使用戶手機沒有網(wǎng)絡(luò),依然可以使用一些離線功能
實現(xiàn)了消息推送
它解決了上述提到的問題,這些特性將使得 Web 應(yīng)用漸進式接近原生 App。
關(guān)于PWA更多詳情介紹可以看以下博客介紹:
https://segmentfault.com/a/1190000012353473
PWA的優(yōu)勢
可以將app的快捷方式放置到桌面上,全屏運行,與原生app無異
能夠在各種網(wǎng)絡(luò)環(huán)境下使用,包括網(wǎng)絡(luò)差和斷網(wǎng)條件下,不會顯示undefind
推送消息的能力
其本質(zhì)是一個網(wǎng)頁,沒有原生app的各種啟動條件,快速響應(yīng)用戶指令
PWA存在的問題
支持率不高:現(xiàn)在ios手機端不支持pwa,IE也暫時不支持
Chrome在中國桌面版占有率還是不錯的,安卓移動端上的占有率卻很低
各大廠商還未明確支持pwa
依賴的GCM服務(wù)在國內(nèi)無法使用
微信小程序的競爭
PWA寫的app 比如這個:https://dd.shmy.tech/client (請使用谷歌瀏覽器打開)
6、Instant App
2016年的Google大會上,Google發(fā)布了有關(guān)Instant App的最新技術(shù)。千呼萬喚之下,號稱“Google版小程序”的Instant App,終于在2017年面向用戶開放使用了。Instant Apps是Google 推出的應(yīng)用特性。它可在用戶沒有下載、安裝 App的前提下,直接加載App 的部分模組,并直接運行、使用,無需下載、安裝整個App。
Instant App詳情介紹可以看以下兩個博客介紹:
http://36kr.com/p/5102782.html
https://segmentfault.com/a/1190000010906162
優(yōu)勢:
1.相對于小程序來說,谷歌官網(wǎng)要求每個Instant App程序最大不得超過4M的大小。但是小程序沒有嚴(yán)格限制。
2.Instant App從用戶體驗角度來看,要比小程序好很多,體驗起來讓用戶感覺,有種“我并沒有安裝這個程序,就能體驗到和程序同樣的絲滑體驗”的感覺。
遇到的困難:
xx上網(wǎng)(你懂的)
Google Service不能正常的推廣
具有Google Service框架的手機
完整應(yīng)用必須提前安裝到Google Play上
部署信息驗證文件的網(wǎng)站,需具有https方式訪問功能的網(wǎng)站。
另外還有一些比較過時的框架,例如:PhoneGap(支持大部分系統(tǒng),不同平臺需要搭建不同開發(fā)環(huán)境,需要使用三方的UI,需要使用第三方UI和擴展功能插件)、AppCan(閉源,商業(yè)化產(chǎn)品,免費版限制太多,無法在本地發(fā)布)。
此部分內(nèi)容來源于:https://blog.csdn.net/jingwen3699/article/details/68922923
(二)適合移動端App的一些框架
1、React Native
Facebook于2015年3月份在github發(fā)布了React Native第一個正式版本為v0.1.0
特色:
Facebook 出品一個移動端開發(fā)框架,可以最大限度的接近原生的效果。
能夠在Javascript和React的基礎(chǔ)上獲得完全一致的開發(fā)體驗,構(gòu)建原生APP。
僅需學(xué)習(xí)一次,編寫任何平臺。(Learn once, write anywhere)
缺點:
初次學(xué)習(xí)成本高
必須在不同平臺下寫兩套代碼,依賴暴露的接口
2、Weex
阿里巴巴于2017年4月份在github發(fā)布了Weex第一個正式版本為0.11.0-rc0
Weex的github地址 https://github.com/apache/incubator-weex
特點:
Weex能夠完美兼顧性能與動態(tài)性,讓移動開發(fā)者通過簡捷的前端語法寫出Native級別的性能體驗,并支持iOS、安卓、YunOS及Web等多端部署。
缺點:
控件太少,基本只能實現(xiàn)最基本的效果
上手難度大,如果是前端和移動端都比較懂上手很快。
隨著項目變大,編譯速度會指數(shù)型上升。
此部分內(nèi)容來源于:https://blog.csdn.net/jupiterxx/article/details/80026909
3、Flutter
詳細介紹請看我寫的博客 Flutter入門詳解到填坑指南
用一張圖總結(jié)一下:

(三)開發(fā)語言的多樣性
到目前為止,能夠開發(fā)Android的語言有很多種,如下所示:
Java還有其他JVM語言kotlin Groovy Scala
C/C++(也是廢話)
HTML5(又是廢話)
Dart(Flutter框架的開發(fā)語言)
Python(著名項目fq.router2)
Lua(bilibili客戶端←_←)
QML(Qt項目的界面描述語言,同時可以用C++/js寫業(yè)務(wù)代碼,還能Ajax呢)
TypeScript
C#
Python
PHP