作者 | 移動Team景生善
整理 | 包包
背景
動態(tài)化作為移動端的一個重要技術分支,一直是大家積極探索的方向。目前移動端流行的動態(tài)化方案有,F(xiàn)acebook的React Native,阿里的Weex,它們都是采用了JavaScript與Native之間的橋接,使JavaScript開發(fā)的App擁有近似于原生應用的性能。
其他的一些動態(tài)化方案,像歷史悠久的WaxPatch動態(tài)化方案,已經被App Store禁止的JSPatch,阿里的LuaView,騰訊的OCS,滴滴的DynamicCocoa。
但是Facebook的React Native和阿里的Weex接入以后會顯著增加App包的大小,還有環(huán)境搭建問題,不適合SDK的開發(fā),只適合App開發(fā)。
通過對比幾種動態(tài)化方案,最后選擇阿里的LuaView方案來實現(xiàn)平臺的SDK。LuaView是由lua與Native控件之間的橋接來實現(xiàn)的,相對于其他解決方案來說,是一個輕量級的解決方案。而且Lua語言可擴展性強、簡單、高效、占用體積小、啟動速度快、學習簡單等諸多優(yōu)勢,有著許多成功案例,是動態(tài)化方案首選。
LuaView設計原則
LuaView以UI視圖構建能力為基礎,實現(xiàn)了原生Native UI橋接到Lua Api,使用Lua腳本語言開發(fā)應用功能,同時能夠達到原生應用的性能和效果。
LuaView SDK整體架構(注:圖片來自于《LuaView:基于Lua的移動端跨平臺動態(tài)化方案》)
如圖,LuaView SDK的整體架構可以表示為五層。
第一、二層依次是OS層和Framework層,分別代表了Android、iOS以及對應的系統(tǒng)框架層。
第三層有Lua虛擬機,腳本管理模塊和安全控制模塊。Android使用的是LuaJ虛擬機,iOS使用的是LuaC虛擬機,這兩個虛擬機都是目前兩種語言中用的最廣泛,最穩(wěn)定的虛擬機。腳本管理模塊負責Lua腳本的管理,包括腳本的解包、驗證、加解密、解壓縮等工作。安全控制模塊負責Lua腳本的安全校驗工作,包括腳本完整性校驗和腳本安全校驗等。
第四層是LuaView的核心Lib庫,包括Lua UI Lib(主要是所有的UI組件,如View、Button、Label、Image等)和Lua Non-UI Lib(主要包括Network、Json、Gesture)。
最上層是Lua業(yè)務腳本以及Lua層的lib庫。
LuaView的兩個重要的設計原則
兩端一致性
LuaView的一條重要設計原則就是iOS和Android兩端邏輯只寫一份代碼,API設計的時候考慮了兩端的共性,對于兩端不同的地方,則由Native部分實現(xiàn)。現(xiàn)在,LuaView SDK中Lua API基本完成兩端接口的統(tǒng)一,保證API一致性,同一份腳本在兩端運行的結果也是相同的。
(注:圖片來自于《LuaView:基于Lua的移動端跨平臺動態(tài)化方案》)
簡單易用
LuaView的另一個設計原則是保持Lua語言的簡單和易用。在核心UI庫上,所有的API做到精簡,盡量使用腳本實現(xiàn)避免使用Native實現(xiàn)。所有API使用Lua原生語法,并且兩端的接口保持一致風格,方便開發(fā)。
OSLua
OSLua是一款針對視頻的互動娛樂的SDK,添加到視頻系統(tǒng)中,給視頻賦能,既可以增加視頻的收入,也可以增加視頻的娛樂性。OSLua SDK是在LuaView SDK的基礎上,擴展了VP UI和VP Non-UI,以及添加了視頻互動娛樂模塊。OSLua使用LuaView的動態(tài)化,可以動態(tài)的添加新的互動娛樂模塊,以及修改現(xiàn)有的互動娛樂模塊。
OSLua整體架構
OSLua首先會對比本地版本和服務器版本,若是兩個版本不一致,將服務器版本更新到本地,并寫入本地文件Cache中。在系統(tǒng)運行互動娛樂模塊時,LuaCore按照模板的文件名,在文件Cache中查找,找到腳本文件以后,即可加載運行腳本文件,展示具體的互動類型。具體的流程如下:
OSLua運行流程
模板
OSLua中所有互動娛樂模塊,如云圖、中插、氣泡、投票等,都是采用統(tǒng)一的策略,將模板的共有屬性抽像為相同的參數(shù),差異化的內容,則在模板中自己處理。這樣客戶端收到投遞的廣告時,將統(tǒng)一處理模板數(shù)據,按照模板數(shù)據時間,展示模板,控制模板展示的頻次,在這個階段系統(tǒng)并不知道處理的是哪個模板。模板展示時,根據模板數(shù)據展示具體的模板效果,所有的差異化的內容都在這個階段處理。同時,將模板中的各種事件,如展示、點擊、關閉等,還有需要對接平臺處理的操作,抽象為統(tǒng)一的參數(shù),這樣所有的模板都有一樣的事件處理機制。以上的這些特性,可以極大的增加系統(tǒng)的擴展性,如果系統(tǒng)需要新的模板,只需要按照上面的策略,統(tǒng)一添加投遞和事件處理的參數(shù),實現(xiàn)特異化的內容,就可以添加到系統(tǒng)中了。
OSLua模板參數(shù)
后續(xù)
OS Lua還在不斷完善,豐富Native到Lua的橋接,以及增加新的互動娛樂模板,最終將會發(fā)展為一個性能穩(wěn)定,功能豐富的視頻增值SDK。
參考
1. LuaView:基于Lua的移動端跨平臺動態(tài)化方案
2. React Native中文網
3. Weex
4. OCS ——史上最瘋狂的iOS 動態(tài)化方案
5. 滴滴iOS 動態(tài)化方案DynamicCocoa 的誕生與起航
-
移動端
+關注
關注
0文章
42瀏覽量
4567 -
系統(tǒng)
+關注
關注
1文章
1029瀏覽量
21742
發(fā)布評論請先 登錄
靈活且可擴展的系統(tǒng)電源管理集成電路PMIC DA9061-A數(shù)據手冊

未來展廳長啥樣?全息展示柜、沙盤模型、互動設備、全息投影、數(shù)字展廳、中控系統(tǒng),一個都不能少!

訊維高清互動教育錄播系統(tǒng):引領教育信息化新篇章!
開源項目!手把手教你制作一個互動式LED墻壁時鐘!
擴展您的串口設備 EU104數(shù)據轉發(fā)芯片可獨立設置通訊速率和參數(shù) 將1個UART接口擴展為4個
迅為RK3568開發(fā)板傳統(tǒng)分區(qū)和定制擴展分區(qū)鏡像對比
動態(tài)無功補償?shù)娜?b class='flag-5'>個必要條件

如何構建一個高效、安全、可擴展的跨工廠IoT平臺?
大屏數(shù)字互動墻軟件 液晶拼接屏互動軟件 LED大屏交互軟件

第三代功率半導體器件動態(tài)可靠性測試系統(tǒng)
適用于可擴展系統(tǒng)的高效、無代碼、無傳感器BLDC電機驅動器

來一發(fā)干貨,一篇文章教會你如何利用PCIe擴展SSD硬盤存儲

評論