移動(dòng)應(yīng)用框架分析

前言

Hybrid App:PhoneGap、Titanium、WeX5、AppCan...

優(yōu)于Hybrid App:React native、Weex……

Native APP: 原生應(yīng)用

?。?!重點(diǎn)?。?!

Hera 當(dāng)下、未來的技術(shù)方向:https://github.com/weidian-inc/hera/projects/1?

Android實(shí)現(xiàn)原理:Native層[HeraActivity]作為邏輯流程控制中心,建立了頁面視圖層[Page]與AppService應(yīng)用邏輯層[AppService]之間的聯(lián)系,處理兩層之間的事件傳遞及數(shù)據(jù)流轉(zhuǎn),同時(shí)也處理API的調(diào)用并返回結(jié)果

SDK本身提供了豐富的API實(shí)現(xiàn),同時(shí)也提供了擴(kuò)展API的接口,方便被接入的App實(shí)現(xiàn)自定義的API功能。由于SDK運(yùn)行于獨(dú)立進(jìn)程,因此通過進(jìn)程通信的方式調(diào)用宿主提供的擴(kuò)展API。SdkApiManager和HostApiManager分別對(duì)應(yīng)SDK內(nèi)部API的管理和擴(kuò)展API的管理。


iOS實(shí)現(xiàn)原理:SDK Native層WDHManager作為邏輯流程控制中心,建立了頁面視圖層Page與應(yīng)用邏輯層WDHService之間的聯(lián)系,處理兩層之間的事件傳遞及數(shù)據(jù)流轉(zhuǎn),同時(shí)也處理API的調(diào)用并返回結(jié)果。

SDK本身提供了豐富的api實(shí)現(xiàn),同時(shí)也提供了擴(kuò)展api的接口,方便被接入的App實(shí)現(xiàn)自定義的API功能。WHHybridExtension負(fù)責(zé)API的調(diào)配與擴(kuò)

正文

學(xué)習(xí)以上任何框架最好有以下基礎(chǔ)(Html + css + js):https://www.w3cschool.cn/javascript/js-tutorial.html

例如:做React native 兩端(iOS android)通用的代碼需要很深厚的Html + css + js功底,但是同樣,既然要求同必然會(huì)涉及存異,做兩端通用設(shè)計(jì)初期需要做部分過橋文件的編寫。這就涉及到了android過橋文件、objective-c/swfit過橋文件編寫。 React Native 的代碼只兼容兩個(gè)平臺(tái)(iOS 和 Android),并沒有兼容 Web 端訪問。這里是因?yàn)?Facebook 開發(fā)人員認(rèn)為 Web 端天生兼容性就巨麻煩,而且平臺(tái)差異性是注定存在而且也要保留的,所以 React Native 的目標(biāo)是 Learn once, write anywhere ,而不是 Write once, run anywhere 。

綜上要做iOS、Android以及Web的三端一套。1.創(chuàng)業(yè)公司首推Hera(成本小、受限制大)2.有實(shí)力的公司可以嘗試在react-native 上做做文章。

無論基于何種框架都是存在優(yōu)劣的。我門該如何選擇?我給出的建議是若要做三端一套的框架選型暫時(shí)首推React-native 。人手配備標(biāo)準(zhǔn)為:精通objective-c/swfit + js 1人? ? ?精通android+js 1人? ?統(tǒng)籌框架難點(diǎn)、通信分工 1人? 功能開發(fā)(Html + css + js ) 3-4人。其成本并不低于原平臺(tái)代碼開發(fā)人員。故而我個(gè)人建議移動(dòng)端的框架選型面向的其實(shí)是用戶,而不是公司的發(fā)展。能在其中節(jié)約人力和財(cái)力固然對(duì)公司是好的。但并不是所有的公司都有精力、時(shí)間去做這樣的轉(zhuǎn)型。但!無論何種代碼的編寫都要有迭代、更新、重構(gòu)。這也就存在一個(gè)血淋淋的事實(shí)。程序員永遠(yuǎn)都到寫代碼!故而以上因素永遠(yuǎn)都在影響著公司管理層的人員對(duì)框架選型騷動(dòng)。選型選什么不重要,重要的是適合公司當(dāng)前、以后階段業(yè)務(wù)發(fā)展的良性循環(huán)才是最重要的、也是最明智的。

對(duì)原安卓開發(fā)人員轉(zhuǎn)型建議(iOS同理):

1.1. 基本

搭架子?

1. 目前以多Tab + Fragment為主,已成型;?

2. 項(xiàng)目結(jié)構(gòu)

異步加載圖片 – UIL,Glide

網(wǎng)絡(luò)請(qǐng)求 – robospice + google http client

Json – jackson2

緩存機(jī)制 – robospice

自動(dòng)更新 – lesscode

事件通信 – event bus, otto

數(shù)據(jù)庫 – litepal

內(nèi)存檢測(cè) – leakcanary

其他各種UI和功能類庫

1.2. 服務(wù)

統(tǒng)計(jì)服務(wù) – 友盟、百度

云存儲(chǔ)服務(wù) – 七牛

推送服務(wù) – 極光,個(gè)推,小米

支付服務(wù) – 支付寶、微信、銀聯(lián)、連連支付、現(xiàn)在支付、充話費(fèi)、語音支付等

分享 – share sdk

第三方登錄 – 各大開放平臺(tái)sdk

1.3. 工程

多渠道打包 – gradle flavor

持續(xù)集成 – jenkins

APK瘦身 – Proguard, AndResGuard, webp等

2. 持續(xù)優(yōu)化的重要性

把一個(gè)項(xiàng)目做到可以滿足需求的基本運(yùn)行,對(duì)于開發(fā)者開說,說明你成功了,但是只是第一階段的成功:實(shí)現(xiàn)。

接下來你要面臨的問題,很有可能會(huì)是一大波新的變化需求,代碼混亂,性能低下,錯(cuò)誤異常率下不來等等,這就需要:優(yōu)化,并且是持續(xù)的優(yōu)化。

持續(xù)的優(yōu)化,不僅能解決很多問題,而且能保證代碼有效健壯的發(fā)展,這對(duì)開發(fā)者來說,尤為重要,誰都喜歡寫更好的代碼,都不喜歡改那些亂到掉渣的代碼。

做項(xiàng)目評(píng)估的時(shí)候,考慮一下基本優(yōu)化的工作量;迭代版本的時(shí)候,留一定的持續(xù)優(yōu)化的工作量。

3. 困難挫折警示

經(jīng)常碰到困難,經(jīng)常被技術(shù)問題卡住,經(jīng)常粗心大意 … …

說明什么?

要么太沒經(jīng)驗(yàn),要么能力不足。

我們可以從多個(gè)方面著手拓展技術(shù)視野、提高動(dòng)手能力、優(yōu)化放錯(cuò)機(jī)制等等:

關(guān)注社區(qū)動(dòng)向

官方資訊,github, 技術(shù)博客(國(guó)內(nèi)外),視頻(慕課網(wǎng)、極客學(xué)院等)… …

勤于實(shí)踐

把別人的一些好的經(jīng)驗(yàn)或者效果,動(dòng)手實(shí)現(xiàn),轉(zhuǎn)化為自己的經(jīng)驗(yàn),甚至進(jìn)一步升華成更好的成果。

多參與項(xiàng)目

珍惜參加項(xiàng)目的機(jī)會(huì),多參與,用行動(dòng)改進(jìn),不做旁觀者。

善假于物

多學(xué)習(xí)一些工具git,linux,python,tcpdump等等,用的比較多的,最好能吃透一點(diǎn)(比如git),小工具,大用處。

細(xì)節(jié)決定成敗

成也細(xì)節(jié),敗也細(xì)節(jié)。會(huì)區(qū)分同類的不同點(diǎn),能從小的地方改進(jìn),遇到困難沉著應(yīng)付一個(gè)一個(gè)的攻克細(xì)節(jié)…

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,163評(píng)論 25 708
  • [iOS]技術(shù)學(xué)習(xí)路線圖(長(zhǎng)期更新)[支付功能已更新] UITableViewCell應(yīng)用舉例 設(shè)置功能 qq消息...
    肖浩唄閱讀 1,126評(píng)論 3 1
  • 維銘媽媽正面管教16班90天踐行8.24打卡--樂樂 這幾天有點(diǎn)逃避,不想打卡,是因?yàn)槲乙呀?jīng)完全被打回了原形,我很...
    樂樂1006閱讀 345評(píng)論 0 0
  • 楊倩,焦點(diǎn)講師三期,漯河,堅(jiān)持分享376天,(2018-1-11) 當(dāng)堅(jiān)定與和善結(jié)合在一起時(shí),就意味...
    溫心怡然閱讀 177評(píng)論 0 0
  • 【一】 阿浩是個(gè)很樂觀的人,他總是一副笑嘻嘻的樣子,仿佛沒有什么事...
    詩馬集閱讀 527評(píng)論 2 3

友情鏈接更多精彩內(nèi)容