版權(quán)聲明:本文為博主原創(chuàng)文章污它,未經(jīng)博主允許不得轉(zhuǎn)載捺宗。http://www.reibang.com/p/44305a99c51a
轉(zhuǎn)載請(qǐng)標(biāo)明出處:
http://www.reibang.com/p/44305a99c51a
本文出自 AWeiLoveAndroid的博客
做安卓時(shí)間長(zhǎng)了,接觸到各種各樣的框架变骡,前前后后遇到了很多問(wèn)題茴肥,這里順便記錄一下那些年在安卓開(kāi)發(fā)的發(fā)展過(guò)程中的那些跨平臺(tái)開(kāi)發(fā)技術(shù)框架,大致如下:
如有錯(cuò)誤墓阀,歡迎指正毡惜。
(一)適合WebApp的一些框架
1、Cordova
優(yōu)點(diǎn):
開(kāi)源免費(fèi)斯撮,社區(qū)生態(tài)成熟经伙,插件豐富
支持離線場(chǎng)景應(yīng)用
開(kāi)發(fā)工具選擇空間大
缺點(diǎn):
只提供基礎(chǔ)訪問(wèn)設(shè)備的接口,需要自己搭配其他UI框架和JavaScript框架來(lái)搭配
2勿锅、Ionic
優(yōu)點(diǎn):
國(guó)外的一款接近原生的Html5移動(dòng)App開(kāi)發(fā)框架帕膜,免費(fèi)開(kāi)源枣氧。
漂亮的界面,追求性能垮刹,專(zhuān)注原生达吞,免費(fèi)開(kāi)源
Angular JS MVVM 開(kāi)發(fā)理念,數(shù)據(jù)雙向綁定
基于Cordova荒典,可以使用 Cordova 的插件
缺點(diǎn):
需要掌握 HTML + CSS + Angular JS 酪劫,學(xué)習(xí)路線陡峭
Ionic 框架相比于原生的 Cordova 有所差異,Cordova 某些官方插件可能不適用于Ionic
3种蝶、Dcloud
優(yōu)點(diǎn):
國(guó)內(nèi)廠商契耿,中文文檔
對(duì)HTML5的性能、工具螃征、能力都做了深入擴(kuò)展搪桂,提供 IDE 、云服務(wù)等幫助節(jié)省時(shí)間
MUI 更貼近國(guó)內(nèi)App使用習(xí)慣盯滚,提供模塊的詳細(xì)例子踢械,如登錄,個(gè)人中心
缺點(diǎn):
部分操作需要具備原生開(kāi)發(fā)經(jīng)驗(yàn)魄藕,如離線打包App
新產(chǎn)品仍然有bug内列,還需改進(jìn)
4、小程序
2016年9月21日背率,微信小程序正式開(kāi)啟內(nèi)測(cè)话瞧。2017年1月9日0點(diǎn),微信第一批小程序正式低調(diào)上線寝姿。
微信小程序交排,是一種不需要下載安裝即可使用的應(yīng)用,它實(shí)現(xiàn)了應(yīng)用“觸手可及”的夢(mèng)想饵筑,用戶掃一掃或搜一下即可打開(kāi)應(yīng)用埃篓。
優(yōu)點(diǎn):
1.即用即走——這個(gè)是從微信小程序上線就開(kāi)始打的概念。即用即走使得小程序可以代替許多APP根资,或是做APP的整體嫁接架专,或是作為閹割版功能的承載體。
2.倚靠微信流量——相比APP玄帕,小程序一個(gè)突出的優(yōu)點(diǎn)是完全嵌入了微信的聊天部脚、公眾號(hào)體系,完美進(jìn)行微信體系內(nèi)的流量引導(dǎo)裤纹。這一方面令小程序更加容易獲客睛低,另一方面也可以借助微信的成熟社交網(wǎng)絡(luò)達(dá)到爆發(fā)式傳播。
3.連接線上線下——連接線上線下場(chǎng)景也是微信小程序重要的一環(huán),甚至最先開(kāi)始為了推動(dòng)線下習(xí)慣的養(yǎng)成钱雷,小程序在線上場(chǎng)景方面做了較強(qiáng)的限制。由于人們用微信掃描二維碼的習(xí)慣培養(yǎng)得比較好吹零,小程序相比APP更容易達(dá)成線上線下場(chǎng)景的連接與互動(dòng)罩抗。
缺點(diǎn):
1.留存——雖然有部分小程序已經(jīng)殺出重圍,但是普遍來(lái)講灿椅,主打“即用即走”的小程序在用戶留存上仍存在很大的提升空間套蒂。阿拉丁發(fā)布的小程序白皮書(shū)中顯示,小程序的平均次日留存在13%左右茫蛹,但是雙周留存驟降到僅有1%操刀。輕易擁有的也不在意失去,這大概是小程序目前的一個(gè)癥結(jié)所在婴洼。
2.受控于微信——比起APP骨坑,尤其是安卓版的高自由度,小程序要面對(duì)很多來(lái)自微信的限制柬采,從功能接口欢唾,甚至到類(lèi)別內(nèi)容,都要接受微信的管控粉捻,部分敏感內(nèi)容還很容易遭受封禁威脅礁遣。
部分參考鏈接:https://www.zhihu.com/question/263816362/answer/274417734
5、PWA
PWA(Progressive Web App)是 Google 于 2016 年提出的概念肩刃,2017 年已被迅速采用祟霍。
PWA
全稱(chēng)Progressive Web App
,即漸進(jìn)式Web應(yīng)用盈包。
一個(gè)PWA
應(yīng)用首先是一個(gè)網(wǎng)頁(yè), 可以通過(guò)Web技術(shù)編寫(xiě)出一個(gè)網(wǎng)頁(yè)應(yīng)用. 隨后添加上App Manifest
和Service Worker
來(lái)實(shí)現(xiàn)PWA
的安裝和離線等功能沸呐。
解決了哪些問(wèn)題?
可以添加至主屏幕续语,點(diǎn)擊主屏幕圖標(biāo)可以實(shí)現(xiàn)啟動(dòng)動(dòng)畫(huà)以及隱藏地址欄
實(shí)現(xiàn)離線緩存功能垂谢,即使用戶手機(jī)沒(méi)有網(wǎng)絡(luò),依然可以使用一些離線功能
實(shí)現(xiàn)了消息推送
它解決了上述提到的問(wèn)題疮茄,這些特性將使得 Web 應(yīng)用漸進(jìn)式接近原生 App滥朱。
關(guān)于PWA更多詳情介紹可以看以下博客介紹:
https://segmentfault.com/a/1190000012353473
PWA的優(yōu)勢(shì)
可以將app的快捷方式放置到桌面上,全屏運(yùn)行力试,與原生app無(wú)異
能夠在各種網(wǎng)絡(luò)環(huán)境下使用徙邻,包括網(wǎng)絡(luò)差和斷網(wǎng)條件下,不會(huì)顯示undefind
推送消息的能力
其本質(zhì)是一個(gè)網(wǎng)頁(yè)畸裳,沒(méi)有原生app的各種啟動(dòng)條件缰犁,快速響應(yīng)用戶指令
PWA存在的問(wèn)題
支持率不高:現(xiàn)在ios手機(jī)端不支持pwa,IE也暫時(shí)不支持
Chrome在中國(guó)桌面版占有率還是不錯(cuò)的,安卓移動(dòng)端上的占有率卻很低
各大廠商還未明確支持pwa
依賴(lài)的GCM服務(wù)在國(guó)內(nèi)無(wú)法使用
微信小程序的競(jìng)爭(zhēng)
PWA寫(xiě)的app 比如這個(gè):https://dd.shmy.tech/client (請(qǐng)使用谷歌瀏覽器打開(kāi))
6帅容、Instant App
2016年的Google大會(huì)上颇象,Google發(fā)布了有關(guān)Instant App的最新技術(shù)。千呼萬(wàn)喚之下并徘,號(hào)稱(chēng)“Google版小程序”的Instant App遣钳,終于在2017年面向用戶開(kāi)放使用了。Instant Apps是Google 推出的應(yīng)用特性麦乞。它可在用戶沒(méi)有下載蕴茴、安裝 App的前提下,直接加載App 的部分模組姐直,并直接運(yùn)行倦淀、使用,無(wú)需下載、安裝整個(gè)App。
Instant App詳情介紹可以看以下兩個(gè)博客介紹:
http://36kr.com/p/5102782.html
https://segmentfault.com/a/1190000010906162
優(yōu)勢(shì):
1.相對(duì)于小程序來(lái)說(shuō)赏表,谷歌官網(wǎng)要求每個(gè)Instant App程序最大不得超過(guò)4M的大小境氢。但是小程序沒(méi)有嚴(yán)格限制。
2.Instant App從用戶體驗(yàn)角度來(lái)看,要比小程序好很多,體驗(yàn)起來(lái)讓用戶感覺(jué),有種“我并沒(méi)有安裝這個(gè)程序初斑,就能體驗(yàn)到和程序同樣的絲滑體驗(yàn)”的感覺(jué)。
遇到的困難:
xx上網(wǎng)(你懂的)
Google Service不能正常的推廣
具有Google Service框架的手機(jī)
完整應(yīng)用必須提前安裝到Google Play上
部署信息驗(yàn)證文件的網(wǎng)站膨处,需具有https方式訪問(wèn)功能的網(wǎng)站见秤。
另外還有一些比較過(guò)時(shí)的框架,例如:PhoneGap(支持大部分系統(tǒng)真椿,不同平臺(tái)需要搭建不同開(kāi)發(fā)環(huán)境鹃答,需要使用三方的UI,需要使用第三方UI和擴(kuò)展功能插件)突硝、AppCan(閉源测摔,商業(yè)化產(chǎn)品,免費(fèi)版限制太多解恰,無(wú)法在本地發(fā)布)锋八。
此部分內(nèi)容來(lái)源于:https://blog.csdn.net/jingwen3699/article/details/68922923
(二)適合移動(dòng)端App的一些框架
1、React Native
Facebook于2015年3月份在github發(fā)布了React Native第一個(gè)正式版本為v0.1.0
特色:
Facebook 出品一個(gè)移動(dòng)端開(kāi)發(fā)框架护盈,可以最大限度的接近原生的效果挟纱。
能夠在Javascript和React的基礎(chǔ)上獲得完全一致的開(kāi)發(fā)體驗(yàn),構(gòu)建原生APP腐宋。
僅需學(xué)習(xí)一次紊服,編寫(xiě)任何平臺(tái)檀轨。(Learn once, write anywhere)
缺點(diǎn):
初次學(xué)習(xí)成本高
必須在不同平臺(tái)下寫(xiě)兩套代碼,依賴(lài)暴露的接口
2欺嗤、Weex
阿里巴巴于2017年4月份在github發(fā)布了Weex第一個(gè)正式版本為0.11.0-rc0
Weex的github地址 https://github.com/apache/incubator-weex
特點(diǎn):
Weex能夠完美兼顧性能與動(dòng)態(tài)性参萄,讓移動(dòng)開(kāi)發(fā)者通過(guò)簡(jiǎn)捷的前端語(yǔ)法寫(xiě)出Native級(jí)別的性能體驗(yàn),并支持iOS煎饼、安卓拧揽、YunOS及Web等多端部署。
缺點(diǎn):
控件太少腺占,基本只能實(shí)現(xiàn)最基本的效果
上手難度大,如果是前端和移動(dòng)端都比較懂上手很快痒谴。
隨著項(xiàng)目變大衰伯,編譯速度會(huì)指數(shù)型上升。
此部分內(nèi)容來(lái)源于:https://blog.csdn.net/jupiterxx/article/details/80026909
3积蔚、Flutter
詳細(xì)介紹請(qǐng)看我寫(xiě)的博客 Flutter入門(mén)詳解到填坑指南
用一張圖總結(jié)一下:
(三)開(kāi)發(fā)語(yǔ)言的多樣性
到目前為止意鲸,能夠開(kāi)發(fā)Android的語(yǔ)言有很多種,如下所示:
Java還有其他JVM語(yǔ)言kotlin Groovy Scala
C/C++(也是廢話)
HTML5(又是廢話)
Dart(Flutter框架的開(kāi)發(fā)語(yǔ)言)
Python(著名項(xiàng)目fq.router2)
Lua(bilibili客戶端←_←)
QML(Qt項(xiàng)目的界面描述語(yǔ)言尽爆,同時(shí)可以用C++/js寫(xiě)業(yè)務(wù)代碼怎顾,還能Ajax呢)
TypeScript
C#
Python
PHP