安卓開(kāi)發(fā)方式的進(jìn)化之路

版權(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 ManifestService 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é)一下:

跨平臺(tái)開(kāi)發(fā)歷史圖
(三)開(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市漱贱,隨后出現(xiàn)的幾起案子槐雾,更是在濱河造成了極大的恐慌,老刑警劉巖幅狮,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件募强,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡崇摄,警方通過(guò)查閱死者的電腦和手機(jī)擎值,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)逐抑,“玉大人鸠儿,你說(shuō)我怎么就攤上這事〔薨保” “怎么了进每?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)腐巢。 經(jīng)常有香客問(wèn)我品追,道長(zhǎng),這世上最難降的妖魔是什么冯丙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任肉瓦,我火速辦了婚禮遭京,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泞莉。我一直安慰自己哪雕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布鲫趁。 她就那樣靜靜地躺著斯嚎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挨厚。 梳的紋絲不亂的頭發(fā)上堡僻,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音疫剃,去河邊找鬼钉疫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巢价,可吹牛的內(nèi)容都是我干的牲阁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼壤躲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼城菊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起碉克,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤凌唬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后棉胀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體法瑟,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年唁奢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霎挟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡麻掸,死狀恐怖酥夭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脊奋,我是刑警寧澤熬北,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站诚隙,受9級(jí)特大地震影響讶隐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜久又,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一巫延、第九天 我趴在偏房一處隱蔽的房頂上張望效五。 院中可真熱鬧,春花似錦炉峰、人聲如沸畏妖。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)戒劫。三九已至,卻和暖如春婆廊,著一層夾襖步出監(jiān)牢的瞬間迅细,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工淘邻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疯攒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓列荔,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親枚尼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贴浙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344