參加《GMTC前端移動大會》總結(jié)

在6月21日到6月22日的前端技術(shù)大會中學(xué)習(xí)了解到了很多新技能稀轨,在此作分享總結(jié)。

分享內(nèi)容:

?


1.使用Flutter快速構(gòu)建集美 觀與高性能于一體的移動 應(yīng)用

  • Xiao Yu (于瀟)

?官???GitHub??中?文資源

小結(jié):

?Flutter是Google開發(fā)的一套移動應(yīng)用開發(fā)框架,使用一套Dart代碼就能構(gòu)建高性能的iOS和Android應(yīng)用程序,F(xiàn)lutter直接編譯只ARM代碼旺上,具有原生應(yīng)用的性能,也具備React Native所具有的熱更新特性糖埋,集二者的優(yōu)點于一體宣吱。

本節(jié)內(nèi)容:
?1. 移動應(yīng)用使用時間在PC網(wǎng)頁中的占比增加
?2. 用戶對移動應(yīng)用的需求提高:多平臺、高性能
?3. 一些獲獎與主流App的共同點:各平臺設(shè)計一致性
?4. Flutter的目標:
?? ? 讓開發(fā)者處在?工作效率的狀態(tài)
?? ? 可創(chuàng)造出任何設(shè)計師期望的局面與效果
?? ? 不犧牲原生的運行速度
?5. Flutter的特點:
?? ? 快速搭建瞳别,快速調(diào)試
?? ? 減低認知負荷
?? ? 無需看界面的界面測試
?? ? 提供更緊密的界面細節(jié)控制
?? ? 實現(xiàn)Flutter?性能的原理
?? ? 編譯至ARM代碼

?

1.1主流APP各平臺設(shè)計一致

? ? 一些獲獎APP與國內(nèi)主流APP征候,都具備各平臺高度一致性杭攻,F(xiàn)lutter將一套代碼編譯至不同平臺,保證各個平臺的一致性疤坝,同時具備完成復(fù)雜頁面的條件兆解。
流行軟件

1.2 熱重載

? ? Flutter的熱重載可快速地進行測試、構(gòu)建UI跑揉、添加功能并更快地修復(fù)錯誤锅睛。在iOS和Android模擬器或真機上可以在亞秒內(nèi)重載,并且不會丟失狀態(tài)历谍。
hot-reload

1.3 聲明式+響應(yīng)式開發(fā)模式

? ? Flutter的現(xiàn)代现拒、響應(yīng)式框架,和一系列基礎(chǔ)widget望侈,輕松構(gòu)建用戶界面印蔬。使用功能強大且靈活的API(針對2D、動畫甜无、手勢扛点、效果等)解決艱難的UI挑戰(zhàn)。
class CounterState extends State<Counter> {
  int counter = 0;

  void increment() {
    // 告訴Flutter state已經(jīng)改變, Flutter會調(diào)用build()岂丘,更新顯示
    setState(() {
      counter++;
    });
  }

  Widget build(BuildContext context) {
    // 當 setState 被調(diào)用時陵究,這個方法都會重新執(zhí)行.
    // Flutter 對此方法做了優(yōu)化,使重新執(zhí)行變的很快
    // 所以你可以重新構(gòu)建任何需要更新的東西奥帘,而無需分別去修改各個widget
    return new Row(
      children: <Widget>[
        new RaisedButton(
          onPressed: increment,
          child: new Text('Increment'),
        ),
        new Text('Count: $counter'),
      ],
    );
  }
}
聲明式+響應(yīng)式開發(fā)模式

1.4 組合性的API

? ?Flutter框架是一個分層的結(jié)構(gòu)铜邮,每個層都建立在前一層之上。層為構(gòu)建應(yīng)用程序提供了許多選項寨蹋。選擇一種自定義的方法來釋放框架的全部表現(xiàn)力松蒜,或者使用構(gòu)件層中的構(gòu)建塊,或混合搭配已旧。 您可以實現(xiàn)Flutter提供的所有現(xiàn)成的widget秸苗,或者使用Flutter團隊用于構(gòu)建框架的相同工具和技術(shù)創(chuàng)建您自己的定制widget。
組合性的API

1.5 性能優(yōu)化

? ?Flutter中UI組件和渲染器都從平臺中集成到用戶的應(yīng)用程序中运褪,所以原來虛擬的控件樹是真實的控件樹惊楼,所以渲染和繪制的速度會很快,動畫發(fā)生在用戶空間中秸讹,開發(fā)人員也可以對其進行很多的控制檀咙。在頁面渲染方面,F(xiàn)lutter比RN各具優(yōu)勢璃诀,圖片量越大弧可,F(xiàn)lutter的流暢度優(yōu)勢越大。除此之外劣欢,在以下方面Flutter也有優(yōu)勢:· 響應(yīng)式視圖棕诵,不需要Java的橋接器· 性能更好裁良,兼容性更好· 代碼將AOT編譯為本機(ARM)代碼· 美觀,可定制的UI組件校套,開發(fā)人員完全控制UI組件和布局· 強大的開發(fā)者工具趴久,驚人的熱重新加載

?


2. 基于AI的?易UI自動化 測試?案與實踐

  • 熊博

?官網(wǎng)??GitHub

小結(jié):

? Airtest Project 主要包含了三部分:Airtest IDE、Airtest 和 Poco搔确。其中,Airtest IDE 是 GUI 工具灭忠,Airtest 和 Poco 是兩個底層自動化測試框架膳算。基于圖像識別的 Airtest 框架提供了跨平臺的API弛作,包括安裝應(yīng)用涕蜂、模擬輸入、斷言等映琳。 基于圖像識別技術(shù)定位UI元素机隙,無需嵌入任何代碼即可進行自動化測試∪鳎基于 UI 控件搜索的 Poco 框架有鹿,使用 Unity3d、Cocos2d 或安卓原生 App 開發(fā)的項目在腳本制作上具有極大的便利性谎脯。自動化腳本錄制葱跋、一鍵回放、報告查看源梭,輕而易舉實現(xiàn)自動化測試流程娱俺。可利用手機集群進行大規(guī)模自動化測試废麻,為游戲與 APP 快速實現(xiàn)兼容性測試荠卷。

本節(jié)內(nèi)容:
?1. Airtest Project
?? ? Airtest IDE 自動化腳本編輯?
?? ? 測試框架Airtest 基于圖像識別
?? ? 測試框架Poco 基于UI層次結(jié)構(gòu)
?? ? 全平臺?支持
?2. AI 在 Airtest 中的應(yīng)用:
?? ? 游戲UI識別 基于OpenCV
?? ? AI圖像識別

?

2.1 Airtest Project

【演示視頻】

??Airtest可以通過選中錄入APP內(nèi)的圖標完成自動點擊,當測試人員圈中某個圖形時烛愧,Airtest會在發(fā)現(xiàn)這個圖形時進行自動點擊油宜,并相繼執(zhí)行后續(xù)操作。

??在圖中自動化測試過程中屑彻,如發(fā)現(xiàn)星巴克的圖標后便進行點擊進入頁面验庙,進入頁面后開始尋找“有你真好”字樣,在未找到的情況下進行ScrollView滑動操作社牲,直到頁面出現(xiàn)“有你真好”字樣后進行點擊粪薛。

自動化測試

2.1.1 Airtest IDE 自動化腳本編輯?
? ? Airtest IDE 可以為測試人員定位異常測試點,回放每一個操作步驟搏恤,借助 Airtest IDE违寿,測試人員可錄制自動化測試腳本湃交、一鍵生成測試報告,提供相對完整的問題操作步驟藤巢、現(xiàn)場日志搞莺、截圖和性能數(shù)據(jù)的記錄,幫助開發(fā)成員快速定位和解決問題掂咒,實現(xiàn)有效溝通才沧。
自動化腳本編輯?
2.1.2 測試框架Airtest 基于圖像識別
? ? 通過基于圖像識別的 Airtest 框架,使用者無需接入代碼绍刮,只要在設(shè)備窗口操作手機温圆,代碼即會在代碼窗口自動生成。如果開發(fā)者認為圖標不夠精確孩革,還可以通過手動框選圖標或是其他方式來生成模擬輸入語句岁歉。
基于圖像識別
2.1.3 測試框架Poco 基于UI層次結(jié)構(gòu)
? ? 基于 UI 控件搜索的 POCO 框架,可以直接獲取 UI 結(jié)構(gòu)膝蜈,檢視 UI 控件锅移。它支持 Unity3D、Cocos2dx 等主流游戲引擎及安卓原生 App饱搏,開發(fā)者也可以通過擴展 SDK 支持其他游戲引擎或任意 UI 系統(tǒng)非剃。
基于UI層次結(jié)構(gòu)
2.1.4 全平臺?支持
Airtest Poco
依賴 設(shè)備操作系統(tǒng) 原?生應(yīng)?用 游戲引擎
平臺?支持 iOS/Android/Windows (macOS/watchOS) iOS/Android/Web 應(yīng)?用 Cocos/Unity/各種游戲引擎
Android碎片化

?
?

2.2 AI 在 Airtest 中的應(yīng)用

**??Airte

2.2.1 游戲UI識別 基于OpenCV
? ? 模板匹配算法:遍歷圖像,逐像素計算匹配度窍帝;SIFT算法:特征點匹配努潘。
模板匹配算法

SIFT算法
2.2.2 AI圖像識別
? ? Airtest 可以針對頁面內(nèi)非確定性物體進行 AI 學(xué)習(xí)后識別。例如在 3D 游戲中坤学,一個 3D 物體的每個動作都將導(dǎo)致該物體產(chǎn)生不同形態(tài)的截面圖疯坤,而通過 AI 的學(xué)習(xí)識別,在 3D 物體的不同形態(tài)下深浮,仍能在屏幕中找到它压怠。通過 Poco 過濾目標物體,可以快速生產(chǎn)json標注文件和目標物截圖飞苇,用以訓(xùn)練模型菌瘫。

Poco自動標注
1.基于 Tensorflow Object Detection API 生成TFRecord
#From tensorflow/models/
python generate_tfrecord.py --csv_input=data/train_labels.csv --output_path=train.record

?

2.選擇預(yù)訓(xùn)練模型,開始訓(xùn)練

COCO-trained models{#coco-models}


Model name Speed (ms) COCOmAP[^1] Outputs
ssd_mobilenet_v1_coco 30 21 Boxes
ssd_mobilenet_v2_coco 31 22 Boxes
ssdlite_mobilenet_v1_coco 27 22 Boxes
ssd_inception_v1_coco 42 24 Boxes

?

3.使用eval和Tensorboard評估訓(xùn)練結(jié)果布卡,并導(dǎo)出模型使用
Models
4.訓(xùn)練結(jié)果
訓(xùn)練結(jié)果

?


3. 攜程大規(guī)模應(yīng)用React Native的工程化實踐

  • 趙辛貴

小結(jié):

? 本次分享從攜程在ReactNative的使用中所面臨的挑戰(zhàn)和方案的選擇雨让,ReactNative在攜程的使用現(xiàn)狀,CRN框架的優(yōu)化忿等,經(jīng)驗與實踐進行了分享栖忠。CRN框架對RN進行改造優(yōu)化,解決了性能和穩(wěn)定性兩大核心問題,且在業(yè)務(wù)團隊深度使用實踐庵寞。CRN的優(yōu)化思路和方案狸相,適時開源部分組件和方案。

本節(jié)內(nèi)容:
?1. 攜程應(yīng)用ReactNative業(yè)務(wù)情況
?2. 對ReactNative進行改造優(yōu)化的CRN
?? ? CRN組件擴展支持
?? ? CRN多端通訊與Storage統(tǒng)一
?? ? CRN Page相關(guān)
?? ? 熱更新:Bundle拆分和Require優(yōu)化
?? ? 加載捐川、運行性能優(yōu)化
?? ? 穩(wěn)定性優(yōu)化
?? ? 數(shù)據(jù)收集
?3. 實踐經(jīng)驗

?

3.1 攜程應(yīng)用ReactNative業(yè)務(wù)情況

?

3.2 攜程應(yīng)用ReactNative業(yè)務(wù)情況


?

3.3 實踐經(jīng)驗

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脓鹃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子古沥,更是在濱河造成了極大的恐慌瘸右,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件岩齿,死亡現(xiàn)場離奇詭異尊浓,居然都是意外死亡,警方通過查閱死者的電腦和手機纯衍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苗胀,“玉大人襟诸,你說我怎么就攤上這事』” “怎么了歌亲?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澜驮。 經(jīng)常有香客問我陷揪,道長,這世上最難降的妖魔是什么杂穷? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任悍缠,我火速辦了婚禮,結(jié)果婚禮上耐量,老公的妹妹穿的比我還像新娘飞蚓。我一直安慰自己,他們只是感情好廊蜒,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布趴拧。 她就那樣靜靜地躺著,像睡著了一般山叮。 火紅的嫁衣襯著肌膚如雪著榴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天屁倔,我揣著相機與錄音脑又,去河邊找鬼。 笑死,一個胖子當著我的面吹牛挂谍,可吹牛的內(nèi)容都是我干的叔壤。 我是一名探鬼主播,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼口叙,長吁一口氣:“原來是場噩夢啊……” “哼炼绘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妄田,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤俺亮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后疟呐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脚曾,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年启具,在試婚紗的時候發(fā)現(xiàn)自己被綠了本讥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲁冯,死狀恐怖拷沸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情薯演,我是刑警寧澤撞芍,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站跨扮,受9級特大地震影響序无,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜衡创,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一帝嗡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧璃氢,春花似錦丈探、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至塘秦,卻和暖如春讼渊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背尊剔。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工爪幻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓挨稿,卻偏偏與公主長得像仇轻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奶甘,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容