亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

開源鴻蒙跨端實戰(zhàn):React Native多端布局與交互高可用全解析

開源鴻蒙跨端實戰(zhàn):React Native多端布局與交互高可用全解析 《開源鴻蒙跨平臺開發(fā)先鋒訓(xùn)練營》走到第 10 天這批學(xué)員已經(jīng)從“Hello World”一路寫到了真機聯(lián)調(diào)。今天這一課我們把過去兩天反復(fù)提到的 React Native for OpenHarmony 實戰(zhàn)拉滿目標(biāo)非常直接用一套 React Native 代碼同時跑通 OpenHarmony 手機、平板和 RK3568 開發(fā)板布局不亂、交互不崩、現(xiàn)場不出事故。說實話訓(xùn)練營前 9 天里大家問得最多的不是“ArkUI 怎么寫”而是“我們團隊現(xiàn)有 RN 資產(chǎn)到底能不能低成本平移過來”。所以 Day 10 沒有去硬推全量 ArkUI 重構(gòu)而是帶著大家實操了一輪多端響應(yīng)式布局和高可用交互設(shè)計把真正會影響交付的問題逐層拆開。這篇復(fù)盤寫給沒能到場的朋友也寫給即將在鴻蒙生態(tài)里落地的跨端團隊內(nèi)容偏工程、偏落地每個環(huán)節(jié)我都會說明當(dāng)時為什么這么選以及我們踩過的坑。1. 整體思路拆解為什么第 10 天要重點啃布局和交互1.1 訓(xùn)練營后半程的真實困惑大家卡在選型而不是寫法到第 9 天結(jié)束訓(xùn)練營里 20 多個小組基本都有了可運行的頁面但 80% 的問題集中在同一個點上OpenHarmony 應(yīng)用到底應(yīng)該用 ArkUI 從零寫還是用 React Native 兼容層直接復(fù)用業(yè)務(wù)代碼這個問題不只是新手在問連幾個做工業(yè)屏的團隊也在猶豫。他們的存量代碼是 React Native團隊對 JS/TS 更熟如果全部切到 ArkUI 重寫一兩個月的排期根本扛不住。Day 10 的核心目標(biāo)就是讓這批人親眼看到“RN 代碼跑在 OpenHarmony 真機上”不是演示視頻里的特效而是一條有章可循的生產(chǎn)路徑。但選型不是“能不能跑”這么簡單。訓(xùn)練營里我們反復(fù)問大家如果明天就要上生產(chǎn)你的應(yīng)用要同時適配手機豎屏、平板橫屏和 RK3568 這類帶觸摸的工控屏你現(xiàn)有的布局代碼禁不禁得住交互上遇到弱網(wǎng)、網(wǎng)絡(luò)斷開、用戶狂點按鈕頁面會不會直接變白或卡死坦白講很多同學(xué)之前只考慮過“功能通不通”沒考慮過“狀態(tài)穩(wěn)不穩(wěn)、布局碎不碎”。這也是我們把第 10 天教案設(shè)計成“多端響應(yīng)式布局 高可用交互設(shè)計”兩個重頭戲的原因它們不是錦上添花而是從 Demo 走向真實設(shè)備時必須跨過去的兩道坎。1.2 React Native for OpenHarmony 的架構(gòu)邏輯以及它適合誰先給還沒接觸過 RNOH 的朋友打個底。React Native for OpenHarmony 本質(zhì)上不是另起爐灶的新框架而是把 React Native 的運行時、渲染邏輯和原生能力接入 OpenHarmony 的適配層。你可以把它理解成“給 JavaScript 大腦裝上一具 OpenHarmony 身體”業(yè)務(wù)代碼仍然是 React 組件、仍然是 Flexbox 布局、仍然走 RN 的狀態(tài)管理和事件體系但在底層視圖層級要映射成鴻蒙的 ArkUI 組件網(wǎng)絡(luò)、存儲、藍牙這些能力也要通過原生模塊橋接過去。所以它不是一個黑盒它是 RN 生態(tài)與 OpenHarmony 系統(tǒng)之間的一條雙向通路。理解這一點你就明白為什么我們用 RNOH 做跨端而不是簡單套個 WebView也不是要求所有人推翻重來。RNOH 的優(yōu)勢在于前端和 RN 團隊能保留大量既有代碼社區(qū)里的通用組件邏輯也能直接復(fù)用劣勢則在于生態(tài)遠沒有 Android 和 iOS 那邊成熟很多組件需要自己補原生實現(xiàn)遇到問題時你能查到的現(xiàn)成資料也少。Day 10 面對的這批學(xué)員大多數(shù)是“有 RN 基礎(chǔ)、想快速覆蓋鴻蒙設(shè)備”的開發(fā)者RNOH 就是性價比最高的路徑。反過來說如果項目零基礎(chǔ)、只做 OpenHarmony 單端那直接學(xué) ArkUI 也很合理沒必要為了跨端而跨端。1.3 這一天的交付物一個可復(fù)現(xiàn)的“跨端工作臺 Demo”訓(xùn)練營不能停在 PPT 上。Day 10 的實操目標(biāo)是讓每個小組把一個模擬業(yè)務(wù)頁面“跨端工作臺”跑通到三臺設(shè)備上。這個場景刻意做成偏企業(yè)內(nèi)部工具的樣子頂部是狀態(tài)概覽中間是任務(wù)列表和統(tǒng)計卡片底部有操作按鈕。頁面要滿足三個驗收條件第一在手機豎屏下是單列流式布局底部放導(dǎo)航第二在平板或開發(fā)板寬屏下自動切成側(cè)邊欄加內(nèi)容區(qū)卡片能排多列第三所有按鈕在弱網(wǎng)、重復(fù)點擊、接口報錯時都有明確反饋不能白屏、不能讓用戶以為手機死了。這個交付物定得并不炫技但它幾乎覆蓋了生產(chǎn)環(huán)境最常見的需求。窄屏和寬屏之間的布局切換考察的是對尺寸斷點、柵格和 Flexbox 的掌握交互可靠性則考察狀態(tài)管理、防抖節(jié)流、異常兜底。最后每組都要交一份真機運行的錄屏和一個自查清單??雌饋砣蝿?wù)量不大實際動手時大家才發(fā)現(xiàn)跨端布局的“最后一公里”往往不是代碼邏輯寫不出來而是各種設(shè)備尺寸、系統(tǒng)字體、導(dǎo)航條避讓和狀態(tài)時序的細(xì)節(jié)問題。這些細(xì)節(jié)正是后面幾節(jié)要展開講的內(nèi)容。2. 工程化基線先搭一個跑得穩(wěn)的 RNOH 多端工程2.1 初始化工程的推薦路徑與依賴骨架很多同學(xué)第一次跑 RNOH 項目時是按“Android 工程 Metro”的老思路去猜目錄結(jié)構(gòu)結(jié)果卡在入口加載上。實際 RNOH 工程至少包含兩層OpenHarmony 側(cè)的 ArkTS 工程負(fù)責(zé)應(yīng)用安裝與生命周期RN 側(cè)的 JS 業(yè)務(wù)代碼打包成 bundle 后由原生側(cè)加載。以 DevEco Studio 創(chuàng)建工程為例你會得到一個基于 hvigor 構(gòu)建的 OpenHarmony 應(yīng)用然后在entry模塊里通過 ohpm 引入對應(yīng) RN 版本的 react-native-harmony 適配包。這里有個容易搞混的點RN 適配包的版本號通常要和你的 RN 版本嚴(yán)格對應(yīng)否則原生橋接層會跑飛。訓(xùn)練營里我們統(tǒng)一鎖了一組經(jīng)過驗證的版本組合避免大家各自試錯。構(gòu)建時建議用 release 模式生成離線 bundle把產(chǎn)物放到 OpenHarmony 側(cè)的 rawfile 目錄下這樣應(yīng)用啟動后不依賴 Metro 服務(wù)也能加載。調(diào)試階段可以連 Metro 熱更新但交付演示時一定要用離線包原因后面第 5 節(jié)講白屏問題時會提到。整個 RN 代碼工程和 OpenHarmony 宿主工程可以放在同一個倉庫的不同目錄里用腳本統(tǒng)一構(gòu)建也可以拆成兩個倉庫CI 里先打 bundle 再打 hap。訓(xùn)練營采用前者主要是因為學(xué)員機器配置參差拆開倉庫容易把環(huán)境問題搞復(fù)雜。2.2 開發(fā)工具怎么分工DevEco 與 AI 輔助編程工具各干各的有學(xué)員問“Trae 能開發(fā)鴻蒙應(yīng)用嗎”這實際上是沒分清“寫鴻蒙原生應(yīng)用”和“開發(fā) RNOH 混合項目”。Trae 這類 AI 輔助工具當(dāng)然可以幫你寫 React Native 組件、業(yè)務(wù)邏輯、狀態(tài)管理代碼因為它們本質(zhì)上是 JS/TS 技術(shù)棧但 OpenHarmony 宿主工程里的 Ability 配置、module.json5、權(quán)限聲明、設(shè)備簽名和 hvigor 構(gòu)建還是離不開 DevEco Studio 的項目上下文。你在 DevEco 里能直接查看系統(tǒng)接口、運行 hdc 命令、完成簽名安裝AI 工具目前還很難替代這部分和系統(tǒng) SDK 強綁定的操作。所以在訓(xùn)練營里我們的建議是把兩者配合使用復(fù)雜業(yè)務(wù)組件、布局適配、工具函數(shù)交給 AI 輔助工具快速生成再回到 DevEco 里真機聯(lián)調(diào)。真機上出現(xiàn)的原生錯誤、日志、崩潰棧還是得靠 DevEco 的 Log 面板和 hdc 命令來定位不能全靠 AI 猜。工具鏈沒有誰取代誰的問題關(guān)鍵是讓每一環(huán)都待在它最擅長的位置。2.3 多端差異別撒得到處都是收攏到適配層跨端工程最容易爛的地方就是業(yè)務(wù)代碼里到處寫if (設(shè)備A) ... else if (設(shè)備B) ...。今天加一個設(shè)備特判明天加一個平臺分支半個月后沒人敢動那段代碼。Day 10 開始前我們專門強調(diào)了一個工程約束所有設(shè)備差異必須收攏到一個統(tǒng)一的適配層里業(yè)務(wù)頁面只能依賴適配層暴露的 hook 或組件不能自己去讀設(shè)備型號。這個適配層在代碼上可以做成一個useDeviceAdaptorHook集中處理四類信息當(dāng)前屏幕寬高與安全區(qū)、當(dāng)前斷點類型compact/medium/expanded、設(shè)備類型手機/平板/開發(fā)板、操作系統(tǒng)是否啟用了字體縮放。這樣做的價值會在你真正接到“適配 RK3568 一塊 1280x800 觸屏”的需求時體現(xiàn)出來。因為業(yè)務(wù)代碼不需要知道屏幕到底是多少像素只需要根據(jù)斷點類型去調(diào)整柵格列數(shù)和導(dǎo)航形態(tài)。后續(xù)如果新增一臺豎屏設(shè)備也只需要適配層去適配不影響幾十個業(yè)務(wù)頁面。3. 多端響應(yīng)式布局核心細(xì)節(jié)一套布局如何在三端都不亂3.1 從 dp、vp 到邏輯像素別再按物理像素寫界面了訓(xùn)練營里第一個讓人翻車的知識點是尺寸單位。許多從 Web 轉(zhuǎn)過來的同學(xué)習(xí)慣了 px 思維在 RN 代碼里直接寫width: 300主觀上覺得“反正 RN 會適配”。實際上 RN 的寬度數(shù)字會映射到 OpenHarmony 的 vpvirtual pixel體系而 vp 在真機上會根據(jù)屏幕密度做縮放。你在設(shè)計稿里量出來的是物理像素直接填進代碼往往會發(fā)現(xiàn)開發(fā)板上字特別小、手機上按鈕看不全原因是開發(fā)板的密度和手機密度差異很大。正確的做法是徹底放棄物理像素直覺堅持使用邏輯像素、Flexbox、百分比和間距常量。訓(xùn)練營里我們強制大家把設(shè)計稿里的尺寸除以密度系數(shù)再落到代碼里同時把 4、8、12、16、24 這類間距做成常量避免到處出現(xiàn)“看起來差不多”的魔數(shù)。這里順便補一句如果需要把邏輯像素轉(zhuǎn)回物理像素做判斷可以用PixelRatio.get()但頻繁使用說明布局思路可能有問題應(yīng)該回到結(jié)構(gòu)層去解決。3.2 斷點體系與柵格策略別讓 600px 和 800px 成為硬編碼多端響應(yīng)式布局不是“檢測到橫屏就切換樣式”而是要建立一套斷點體系。我們參考 Material Design 的斷點思路結(jié)合訓(xùn)練營設(shè)備情況把屏幕寬度劃成三檔小于 600 邏輯像素是 compact手機/窄屏600 到 840 是 medium小平板或折疊屏展開態(tài)大于 840 是 expanded平板橫屏、開發(fā)板寬屏。為了讓斷點判斷可復(fù)用我寫了一個useBreakpointHook內(nèi)部監(jiān)聽useWindowDimensions()并且把系統(tǒng)字體縮放因子考慮進去。為什么要除字體縮放因為用戶把系統(tǒng)字體調(diào)大后同樣的邏輯像素寬度能顯示的內(nèi)容會變少布局應(yīng)該自動降級而不是把文案擠到換行。柵格策略同樣基于斷點。compact 態(tài)下內(nèi)容區(qū)是單列卡片之間用縱向間距操作按鈕常駐底部medium 態(tài)可以排兩列expanded 態(tài)則可以排到四列同時把低頻信息放到側(cè)欄。這里有一個經(jīng)驗斷點判斷只作為“布局框架”的依據(jù)不要試圖用它精確控制每一個卡片的像素。Flexbox 負(fù)責(zé)彈性填充斷點只決定列數(shù)和導(dǎo)航形態(tài)兩者結(jié)合才不會出現(xiàn)拉伸變形。export type Breakpoint compact | medium | expanded; export function useBreakpoint(): Breakpoint { const { width } useWindowDimensions(); const fontScale PixelRatio.getFontScale(); const effectiveWidth width / fontScale; if (effectiveWidth 600) return compact; if (effectiveWidth 840) return medium; return expanded; }3.3 窄屏切頁簽、寬屏切側(cè)欄一個能直接套用的響應(yīng)式組合這次訓(xùn)練營的實戰(zhàn)案例是一個“跨端工作臺”。我沒讓學(xué)員一上來就寫復(fù)雜動效而是先把頁面骨架做到符合業(yè)務(wù)直覺窄屏下如果強行放側(cè)欄可用內(nèi)容區(qū)只有 300 多邏輯像素寬操作起來非常局促寬屏下如果全部做成單列滾動信息密度又太低。正確的方案是讓同一個頁面根據(jù)斷點渲染成兩種形態(tài)。export default function WorkbenchScreen() { const bp useBreakpoint(); if (bp compact) { return CompactWorkbench /; } return ExpandedWorkbench /; }在ExpandedWorkbench里外層一行用 Flexbox左側(cè)是 Sidebar右側(cè)是內(nèi)容區(qū)。內(nèi)容區(qū)里的統(tǒng)計卡片寬度通過flexBasis按列數(shù)分配比如四列就設(shè)置flexBasis: 25%每張卡片再留 8 到 12 的邏輯像素間距。這樣在 1280x800 的開發(fā)板橫屏上卡片不會因為密度問題擠成一團當(dāng)系統(tǒng)字體調(diào)大導(dǎo)致有效寬度降到 840 以下時斷點會降級成 medium列數(shù)自動減到兩列。這套組合在代碼上不復(fù)雜真正的難點是找到一個通用的“布局切換時機”。我們用useWindowDimensions()而不是啟動時讀一次寬高就是為了讓旋轉(zhuǎn)屏幕、分屏、窗口大小變化時能即時重新渲染。RNOH 上這個 Hook 是可靠的但要注意不要把它放在每個小組件里都調(diào)用否則一旋轉(zhuǎn)會導(dǎo)致大量組件重渲染。更好的做法是只在頁面容器層調(diào)用通過 props 或 context 把斷點類型傳給子組件。3.4 安全區(qū)、劉海與底部導(dǎo)航條不處理就會被系統(tǒng)吃掉一塊手機有挖孔屏和底部導(dǎo)航條平板和 RK3568 開發(fā)板也有各自的系統(tǒng)避讓區(qū)域。很多同學(xué)寫布局時沒有考慮安全區(qū)結(jié)果頁面底部按鈕被系統(tǒng)導(dǎo)航條擋住一半點擊區(qū)域完全失效。RN 標(biāo)準(zhǔn)庫里的 SafeAreaView 在部分 OpenHarmony 設(shè)備上表現(xiàn)并不一致所以我們選擇在適配層自己算安全區(qū)再注入給業(yè)務(wù)組件。實現(xiàn)思路比較簡單OpenHarmony 原生側(cè)拿到窗口的避讓區(qū)域avoidArea通過一個原生模塊把上、下、左、右的避讓值傳給 RN 側(cè)RN 側(cè)用 Provider 保存這些值業(yè)務(wù)組件再根據(jù)斷點應(yīng)用到外層 padding。這樣既不會一刀切地把所有設(shè)備都套用 iPhone 那套安全區(qū)值又能覆蓋帶物理導(dǎo)航鍵的開發(fā)板。實際測試中RK3568 這塊板子如果跑的是帶虛擬導(dǎo)航條的鏡像底部避讓值甚至可能是 0但觸摸區(qū)域距離邊緣很近手指操作時容易誤觸返回手勢。這種場景不能只依賴安全區(qū)還需要在交互設(shè)計上給底部操作留出足夠的外邊距。3.5 圖標(biāo)與字體官方庫再豐富也要注意渲染路徑訓(xùn)練營里有人問“OpenHarmony 官方是不是推出了 lucide 風(fēng)格的圖標(biāo)庫”確實看到過相關(guān)討論也有人在 ArkUI 原生工程里接入 Lucide 圖標(biāo)。但在 RNOH 場景下圖標(biāo)方案不能簡單照搬。RN 這邊的react-native-vector-icons依賴的是字體文件注冊RNOH 對字體的加載方式還不完全等同 Android訓(xùn)練營里出現(xiàn)過圖標(biāo)顯示成方塊的案例。遇到這種情況先別急著懷疑圖標(biāo)庫本身用 hdc 拉日志看字體是否 mount 成功。更穩(wěn)妥的做法是把圖標(biāo)問題放到原生層去解決通過自定義原生組件暴露一個圖標(biāo)組件給 RN 側(cè)使用。ArkUI 的SymbolGlyph或Image加載 SVG 都比較成熟原生側(cè)按圖標(biāo)名渲染RN 側(cè)只傳名稱和尺寸。這樣既能享受新圖標(biāo)庫的設(shè)計風(fēng)格又避開了“RN 字體映射不完整”的坑。字體大小同樣要注意開啟系統(tǒng)字體縮放適配否則用戶調(diào)大系統(tǒng)字號后固定字號標(biāo)題會和卡片布局打架。4. 高可用交互設(shè)計用戶點下去那一下絕不能出事4.1 點得中、錯不了觸摸熱區(qū)與點擊反饋高可用交互第一條也是最容易被視覺稿忽略的一條用戶能不能準(zhǔn)確點中目標(biāo)。開發(fā)板上手掌誤觸概率比手機高得多按鈕如果只按視覺尺寸做實際熱區(qū)會非常小。RN 里最簡單的解法是用hitSlop擴大觸摸熱區(qū)。比如一個刪除圖標(biāo)看起來只有 24x24可以給它上下左右各加 10 個邏輯像素的隱形熱區(qū)同時在按下時給背景色或透明度反饋。我們要求所有可點擊元素的視覺面積不小于 44x44如果設(shè)計上做不到就用hitSlop和透明內(nèi)邊距補足。點擊反饋也不能只是“好看”。在工控屏場景里用戶按下后如果沒有任何狀態(tài)變化會下意識再點一次反而容易造成重復(fù)操作。訓(xùn)練營要求每個按鈕都必須有 pressed 狀態(tài)下的視覺變化不論是顏色加深還是縮放動畫必須讓用戶感知到“系統(tǒng)已經(jīng)接收到這次點擊”。這一點對 RNOH 同樣成立Pressable組件的style回調(diào)里可以根據(jù)pressed屬性動態(tài)切換樣式實現(xiàn)成本很低。4.2 加載、空、錯三態(tài)封裝把頁面從“白屏恐懼”里救出來很多頁面在真實環(huán)境中失敗不是因為功能沒實現(xiàn)而是因為沒有異常態(tài)。請求發(fā)出去后轉(zhuǎn)圈 2 秒接口報錯后頁面直接空白用戶就會以為應(yīng)用壞了。訓(xùn)練營里我們強制大家給所有異步頁面統(tǒng)一封裝一個RequestView組件把頁面狀態(tài)分成四類loading、error、empty、content。組件接收狀態(tài)和回調(diào)loading 時顯示骨架屏或加載指示器error 時顯示錯誤信息和重試按鈕empty 時給引導(dǎo)文案content 時才渲染真正的業(yè)務(wù)內(nèi)容。type RequestViewProps { status: loading | error | empty | content; errorText?: string; onRetry?: () void; children?: React.ReactNode; }; export function RequestView({ status, errorText, onRetry, children }: RequestViewProps) { if (status loading) { return LoadingIndicator /; } if (status error) { return ( View style{styles.centerBox} Text style{styles.message}{errorText || 加載失敗請檢查網(wǎng)絡(luò)后重試}/Text {onRetry ? ( Pressable style{styles.retryBtn} onPress{onRetry} Text style{styles.retryText}重新加載/Text /Pressable ) : null} /View ); } if (status empty) { return EmptyView /; } return {children}/; }這套封裝的直接收益是“啟動白屏”問題至少能在應(yīng)用層被攔住。RNOH 應(yīng)用啟動需要加載 JS bundle這個過程如果什么界面都沒有用戶看到的就是一塊白屏。我們訓(xùn)練營里要求啟動階段用原生側(cè)的能力先展示應(yīng)用閃屏或骨架等 RN 實例 ready 后再切到業(yè)務(wù)頁面。這個白屏問題的排查細(xì)節(jié)我會在第 5.1 節(jié)展開講但交互設(shè)計上先把加載態(tài)做出來至少不會讓用戶在關(guān)鍵時刻面對一片空白。4.3 防重復(fù)點擊與操作冪等后端只能幫你兜底前端必須主動擋業(yè)務(wù)頁面里最常見的事故是用戶連續(xù)點擊“提交”按鈕產(chǎn)生了兩條重復(fù)訂單或兩條重復(fù)數(shù)據(jù)。RN 的TouchableOpacity在onPress回調(diào)執(zhí)行完后并不會自動禁用按鈕網(wǎng)絡(luò)慢的時候用戶很容易再點幾下。我們的標(biāo)準(zhǔn)做法是兩層防護第一層在按鈕組件里內(nèi)置isSubmitting狀態(tài)點擊后立刻把按鈕置為 disabled并把文案改成“提交中/處理中”第二層用一個useThrottledPressHook對高頻回調(diào)做節(jié)流。function useThrottledPress(handler: () void, ms 2000) { const lastTime useRef(0); return useCallback(() { const now Date.now(); if (now - lastTime.current ms) return; lastTime.current now; handler(); }, [handler, ms]); }需要注意的是第二層只是兜底不能替代后端冪等校驗。因為前端再怎么防也防不住網(wǎng)絡(luò)請求超時后用戶刷新頁面再次提交。訓(xùn)練營里我們讓學(xué)員用偽隨機字符串生成一個請求冪等鍵提交時帶上后端如果收到同樣冪等鍵就忽略重復(fù)請求這才是真正的“高可用”。前端防抖防止的是誤操作后端冪等解決的是網(wǎng)絡(luò)不確定性兩者缺一不可。4.4 弱網(wǎng)與設(shè)備離線的交互處理OpenHarmony 設(shè)備經(jīng)常跑在局域網(wǎng)環(huán)境尤其是 RK3568 這類開發(fā)板連接的可能是攝像頭、掃碼槍或工業(yè)設(shè)備。網(wǎng)絡(luò)抖動、設(shè)備掉線、IP 地址變更都很常見。如果你只做一次 fetch失敗后彈個“網(wǎng)絡(luò)錯誤”就結(jié)束用戶根本沒有恢復(fù)路徑。Day 10 的交互設(shè)計規(guī)范里我們把網(wǎng)絡(luò)異常分成三類處理超時類、連接失敗類、業(yè)務(wù)錯誤類。超時和連接失敗時除了展示錯誤態(tài)還要給“自動重試倒計時”或“手動重試按鈕”業(yè)務(wù)錯誤則展示服務(wù)端返回的具體文案比如設(shè)備離線原因和處置建議。同時接口請求要支持取消。頁面已經(jīng)卸載時還在 setState 會導(dǎo)致警告嚴(yán)重時會引起原生側(cè)崩潰。我們用AbortController配合組件卸載標(biāo)記來取消已發(fā)請求具體寫法不復(fù)雜但必須養(yǎng)成習(xí)慣。RNOH 的 JS 引擎對AbortController的支持是足夠的真正容易出問題的是原生側(cè)網(wǎng)絡(luò)模塊和 JS 層之間的事件監(jiān)聽沒有正確釋放所以自定義原生事件監(jiān)聽一定要在組件卸載時調(diào)用 remove避免內(nèi)存泄漏。4.5 無障礙與動效高可用不只是“能用”還要“能感知”交互做完之后還要過一遍無障礙和動效細(xì)節(jié)。開發(fā)板場景里可能接的是無障礙開關(guān)屏幕閱讀器需要能讀出按鈕含義普通用戶則需要通過動效感知界面變化。RNOH 對accessibilityLabel的支持和 RN 基本一致訓(xùn)練營要求每個圖標(biāo)按鈕、圖片按鈕必須設(shè)置語義化標(biāo)簽不能只放一個圖標(biāo)靠顏色區(qū)分。點擊動效應(yīng)簡短有力一般控制在 150 到 250 毫秒不要做需要等待超過 1 秒才能反饋的“炫技動畫”在硬件配置一般的開發(fā)板上復(fù)雜動效是掉幀重災(zāi)區(qū)。訓(xùn)練營里也有學(xué)員查“React Native 如何實現(xiàn)循環(huán)滾輪”想做一個滾動選擇器。RN 社區(qū)方案多數(shù)依賴原生滾輪實現(xiàn)在 RNOH 上直接移植不一定能跑。我們的建議是如果場景需要循環(huán)滾輪這類自定義交互組件優(yōu)先在 ArkUI 原生側(cè)實現(xiàn)一個 Native Component再暴露給 RN而不是試圖用 ScrollView 強行模擬。動效和手勢這一類對原生能力依賴較高的交互RNOH 的原則是“組件級復(fù)用原生側(cè)補強”硬用純 JS 方案去拼性能和手感都很難保證。5. 真機聯(lián)調(diào)實錄白屏、開發(fā)板設(shè)備樹與其他繞不開的坑5.1 啟動白屏的排查流程按順序查別瞎試訓(xùn)練營當(dāng)天的熱詞里出現(xiàn)“react native 啟動白屏”實際項目里這也是攔路虎。處理這個問題我給的排查順序非常固定。第一步先確認(rèn)應(yīng)用有沒有閃屏或啟動圖如果連原生啟動圖都沒有用戶看到白屏是必然的先補原生側(cè)啟動界面再說第二步檢查 RN bundle 是否成功生成并且放在了 rawfile 目錄下第三步查看應(yīng)用日志確認(rèn) RN instance 有沒有初始化完成第四步如果邏輯層已經(jīng)啟動但界面是白的再看是不是頁面容器沒有正確掛載。這里有一個非常隱蔽的坑如果你構(gòu)建的是 debug 包RNOH 默認(rèn)會嘗試連接 Metro 開發(fā)服務(wù)器真機上如果連不上服務(wù)器它會等待超時后才嘗試加載本地 bundle這個過程在外界看起來就是長時間白屏。訓(xùn)練營里一個小組在 RK3568 上演示時遇到了這個情況現(xiàn)場看起來像“應(yīng)用崩了”其實日志里一直在打印連不上 Metro。解決辦法很簡單演示環(huán)境一律構(gòu)建 release 離線包或者在原生配置里把加載模式設(shè)為 loadBundleFromRawFile不依賴 Metro。排查時按這個順序走能省掉大量無效操作。白屏階段優(yōu)先排查常見根因啟動后無任何畫面原生啟動圖與閃屏配置原生側(cè)缺失啟動界面RN 實例未初始化hdc 日志、bundle 路徑離線包未生成或路徑錯誤JS 層已執(zhí)行但無 UI頁面容器掛載、組件渲染首屏組件異常、容器尺寸為 0長時間白屏后恢復(fù)Metro 連接超時配置debug 包連不上開發(fā)服務(wù)器真機偶發(fā)白屏內(nèi)存占用、GPU 資源大圖、復(fù)雜嵌套導(dǎo)致資源不足5.2 RK3568 開發(fā)板鏡像與設(shè)備樹選擇別被“一堆 dts”嚇住很多人看到“openHarmony 的 rk3568 有許多設(shè)備樹到底咋選”這個問題第一反應(yīng)是去翻內(nèi)核配置擔(dān)心選錯設(shè)備樹后系統(tǒng)起不來。訓(xùn)練營里我們用的是官方適配過的 RK3568 板卡原則上只要燒錄對應(yīng)的系統(tǒng)鏡像不需要手工選擇設(shè)備樹內(nèi)核在啟動時會根據(jù)硬件檢測加載匹配的 dtb。真正需要你手動處理設(shè)備樹的情況是板卡型號特殊、內(nèi)存顆粒不同、屏幕觸摸芯片不同或者你在自行編譯內(nèi)核這時才需要確認(rèn)設(shè)備樹與硬件匹配。如果你確實需要查看當(dāng)前系統(tǒng)加載的是哪個設(shè)備樹可以通過cat /proc/device-tree/model查看硬件型號字符串或者通過/sys/firmware/devicetree/下的目錄信息判斷。編譯內(nèi)核時dts 文件一般放在內(nèi)核源碼的arch/arm64/boot/dts/rockchip/目錄下有對應(yīng)板卡的 dts 文件比如官方 EVB 板、第三方核心板都會各有各的文件標(biāo)識。訓(xùn)練營給的建議很實在學(xué)習(xí)階段不要為了“優(yōu)化性能”去亂動設(shè)備樹先用官方統(tǒng)一鏡像跑通應(yīng)用等需要定制屏幕或外設(shè)時再拿著板卡型號和屏參去設(shè)備樹里做增量配置。RK3588 或其他型號的板子邏輯也一樣核心是先確認(rèn)硬件 model再找對應(yīng) dts而不是網(wǎng)上隨便下載一個。5.3 USB 與硬件外設(shè)調(diào)試從 libusb 到事件驅(qū)動的封裝思路做工業(yè)屏的小組總會遇到 USB 外設(shè)讀取問題。有同學(xué)直接在 RN 側(cè)調(diào)用 USBManager 和 libusb 的封裝結(jié)果發(fā)現(xiàn)設(shè)備插拔事件能監(jiān)聽到但異步讀取數(shù)據(jù)時經(jīng)常拿不到結(jié)果。這個問題并不奇怪USB 數(shù)據(jù)讀取本身是持續(xù)數(shù)據(jù)流RN 側(cè)的 Promise 模型更適合“請求—響應(yīng)”式交互不適合處理“設(shè)備隨時上報”的流式事件。我們的建議是在 ArkUI 原生層寫一個獨立的 USB 服務(wù)負(fù)責(zé)設(shè)備枚舉、權(quán)限申請、數(shù)據(jù)讀取和錯誤處理把數(shù)據(jù)通過事件通道持續(xù)推送給 RN 側(cè)RN 側(cè)只負(fù)責(zé)訂閱事件和展示狀態(tài)。這個思路和藍牙、串口外設(shè)的接入方式是一致的原生層做能力JS 層做狀態(tài)。訓(xùn)練營現(xiàn)場還遇到過一個硬件級的坑開發(fā)板 USB 調(diào)試口數(shù)據(jù)線接觸不良hdc 一直無法連接設(shè)備。很多同學(xué)以為是系統(tǒng)鏡像的問題折騰半天才發(fā)現(xiàn)是 USB 線只支持充電不支持?jǐn)?shù)據(jù)傳輸。排查這類問題時先用hdc list targets看看設(shè)備在不在列表里如果不在換線、換接口、檢查驅(qū)動三步走。開發(fā)板用 5V 供電不穩(wěn)時USB 外設(shè)也可能反復(fù)掉線最好用獨立供電的 USB Hub 給外設(shè)供電別把大功率設(shè)備直接插在開發(fā)板 USB 口上。5.4 Day 10 驗收清單能過這份清單再談上線課程收尾時我們給了大家一份可以帶回團隊用的驗收清單這份清單不針對業(yè)務(wù)邏輯只針對“多端可用性”。第一同一個 RN bundle 必須能在手機、平板和開發(fā)板真機上啟動且啟動階段不能出現(xiàn)超過 2 秒的白屏第二頁面寬度壓縮到 320 邏輯像素時不能出現(xiàn)橫向滾動寬屏展開時按鈕高度不能小于 44第三所有異步頁面必須有加載中、空數(shù)據(jù)、錯誤重試三種狀態(tài)第四連續(xù)點擊任何提交按鈕不會產(chǎn)生重復(fù)請求第五斷網(wǎng)或設(shè)備離線時頁面要給出可理解的提示并提供恢復(fù)路徑第六打開無障礙后關(guān)鍵按鈕能被屏幕閱讀器識別。這份清單聽起來簡單但學(xué)員完成度并不高。Day 10 最后 40 分鐘我們只做一件事小組之間互相用這份清單“找茬”。結(jié)果很多組都在第一項就翻車不是手機白屏就是開發(fā)板顯示異常。問題集中暴露是好事因為訓(xùn)練營的目的不是讓大家看老師演示而是讓大家踩過、改過、記住。如果看完本文你也準(zhǔn)備在項目里落地 RNOH我建議你把這 6 條直接寫進迭代 Definition of Done逐條過一遍比發(fā)布會前臨時救火要省心得多。訓(xùn)練營這一天下來讓我最深的感觸是“跨端”不是把同樣的界面搬到不同屏幕上而是同一個功能在不同設(shè)備上都能被順暢地完成。React Native for OpenHarmony 的價值也正在于此它讓團隊可以復(fù)用腦子里的業(yè)務(wù)邏輯但布局策略和交互細(xì)節(jié)必須重新敬畏每臺設(shè)備的真實約束。給學(xué)員重復(fù)最多的一句話還是那個樸素的道理用戶不在乎你底層用的是 ArkUI 還是 RNOH他只在乎點下去有沒有反應(yīng)、斷網(wǎng)了有沒有提示、換了一塊屏幕后界面還順不順手。把這幾件事做成默認(rèn)能力你的鴻蒙應(yīng)用才算真正具備進入生產(chǎn)的底氣。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产又色又粗又黄又爽| 超碰成人人人爽人人爽| 国产9区| 麻豆国产97在线| 午夜AV人气不卡| 岛国成人av在线播放网址| 天天色粽合合合合合合合| 亚洲自拍欧美国产首页网曝| 91热热色| 亚洲精品一区二区精品| 亚洲麻豆精品二区三区| 欧美论理片| 欧美 亚洲 在线| 欧美探花网| 国产亚洲在线观看| 国产热av| 日日夜夜精品视频| 亚洲AV永久无码一区仙野| 久久色一区| 欧美高潮| 操国产逼| 日本久操视频| 天天干18禁| 日韩亚洲国产视频| 超踫中文字幕| 91艹| 无遮挡又黄又刺激的视频| 夜嗨影院| 久草婷婷| 夜色综合| 亚洲精品亚洲人成人网| 亚州熟妇精品| 免费a v| 韩日无码在线观看| 一区二区首页| 四虎精品永久在线播放| 丁香五月色| 欧美色天堂网在线视频| 国产肏逼网站| 99色| 中文字幕免费在线观看| 青娱乐亚洲自拍| 四虎影视在线| 亚洲精品国产日韩无码AV永久免| 日本福利社| 岛国不卡超碰护士AV在线播放| 亚洲97在线| 久久久久九九九| 精品人妻一区二区免费蜜桃| 日本影视久久免费| 99这里有精品| 999999精品| 国产CHASE男男GAYGA 毛多色婷婷| 久久久专区| 2019精品国产无码成人| 精品免费1| 精品91日日夜夜超清资源| 日韩精品中文字幕二区| 人妻素股| 肉嘟嘟www视频在线观看高清| 亚洲精品欧美专业| 岛国片在线播放| 嗯啊不要啊在线| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 麻豆国产原创AV色哟哟| 嗯嗯啊啊好爽| 国产亚洲人妻综合日韩 久久| 夜夜做夜夜爽精品视频| 色成人Www精品永久观看| 爱爱动态试试看6 0秒| 狠狠91| 亚洲影视综合网| 亚洲春色欧美| 亚洲精品99| 久久99久久99精品天美传媒棢·纸:. | 亚洲天堂一区| 亚洲限制级在线| 国产精品不卡av免费在线观看| 久久婷婷五月天| 国产精品另类| 久久日韩毛| 一区二区高清视频| 香蕉一区二区三区在线视频| 伊人五月天婷婷| 欧美97日韩| 久久av无码| 亚洲免费日韩在线一区二区| 国产精品99精品视频网站| 综合亚洲情色| 亚洲第一精品在线视频 | 久久这里是精品| 少妇第一页| 国产视频不卡在线观看| 欧美翘臀视频网站一区二区三区| 超碰碰97| 亚欧性爱在线无码| 绯色一区二区三区不卡少妇| 久久久久久久久久久久久久久乱码| 少妇综合| 亚洲污污网站| av资源在线播放天堂| chaopen97久久| 日本久久99| 欧美97在线欧| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 夜夜夜爽www精品视频| 中文字幕在线免费观看视频| 欧美性爱第1 页| 日韩精品人妻系列无码天堂| 亚洲免费在线探花| 日日躁夜夜躁狠狠躁超爽| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久久精品欧美一区蜜桃| 日本操逼视频导航| 久久九色| 欧美国产有色电影| 色色色网站| 视频一区二区免费在线| 啊啊啊在线看| 日韩亚洲美女一区久久| 国产日韩在线播放av| AV久日| 95人妻爽爽人人做人人澡| 中文字幕丰满子伦无码专区在线视频最新| 99蜜桃臀亚洲成人在线观看| 无码抄逼网| 91一区二匹| 欧美精品第四五页中文字幕在线观看| 国内精品伊人久久久久影院会| 夜夜爽夜夜操| 亚洲限制级| 五月天社区| 五月天我淫我色av| 97久久综合网| 熟女天天干| 国产激情av女片自拍| 人妻精品一区二区| 亚洲综合骚逼| 超碰超碰95| 思思热久久成人| 这里都是精品| 亚洲老司机123专区| 99热精品在线| 中文字幕123| 人妻色偷色噜| 天天舔日美女视频| 色麻豆AV| 偷拍亚洲高清图片| 男人天堂一区二区| 久久久久久久亚洲Av无码| 97中文字幕九区| 小骚逼被操的爽不爽| 激情五月天网站| 成人免费毛片| 亚洲超碰97| 五月天精品| 国产乱弄免费在线视频。| 国产成人+综合亚洲+天堂| 大香蕉乱级| 伊人欧美大香蕉视频| 色五月第四色| 9久综合网| 人人天天干干| 国产欧美岛国精品一区| 国产精品福利视频播放| 日韩一级二级三级在线不卡观看完整| 精品成人久久久人人亚洲| 美日韩一二三区| 国产九九久久久精品| 免费一级视频特黄色大片| 日本三级A片网站com| 97综合在线| 一本色道熟妇| 麻豆av一区二区| 蜜乳av一区二区三区| 夜夜国产一区| 色爱欲亚洲| 97超碰美国| 丁香九月激情| 日韩成人大片在线观看| 国产三级日产三级韩国三级| 欧美强奸乱能| 97人人操人人摸| 在线有码中文字幕| 麻豆性爱视频在线播放| 最新中文字幕精品在线| 八戒午夜福利理论片| 91天天综合日韩欧美| 欧美后入式| 久久九操在线观看| 强奸熟女一区二区三区| 一区二区亚州激情久婷婷欧美| 美女91在线观看| 色眯眯射| 成人久久精品| 色五月激情AV在线| 一区超碰一区| 91综合天天| 91N综合网| 九九九九九九九九九国产精品 | 91视频综合网| 亚洲成a人v欧美综合天堂下载| 欧美熟妇精品黑人巨大91| 久久久一区二区三区麻豆| 99日视频在线免费| 婷婷探花久久精品一区| 99色在线| 久久久久国色αv免费观看| 亚洲熟女一区二区| 亚洲不卡三级手机播放| 日韩三级在线观看网站| 91性高朝久久久久久久久| 日本性交操一区二区不卡系列| 青青青国产手线观看视频2| 18禁止看精品中文字幕| 91亚洲色人| 青椒国产97在线熟女| h无码动漫在线观看| 一区二区三区四区免费视频| 亚欧性爱在线无码| 欧美日韩情色一区二区| 超碰久久草| 欧洲亚洲综合| 国产熟女精品一区二区| 操B视频日韩无码| 人人操人人插人www| 中国东北熟女老太婆内谢| 人人透人人操| 国产一区二区三区中文字幕| 色女99一级片在线观看| 欧美激情色婷婷花野真衣一区二区| 91超碰碰在线| 国产欧美另类久久久精品课程| 精品久| 综合亚洲欧美精品日韩?v| 亚洲国产91精品一区二区久久| 日本精品无码三级网站| 九九激情网| 精品一区96| 性色av一区二区| 色婷婷A V一二三四区麻豆综合| 人妻久久| 操操吧亚洲乱伦视频| 无码 有码 国产18p| 亚洲AV免费在线| 成人精品电影| 中文字幕伊人| www.99色| 丁香六月啪啪| 欧美 熟女 日韩| 亚洲脚交| 蜜臀无码视频在线观看| 日本性爱不卡视频| 北条麻妃99精品青青久久| 亚码人妻| 香蕉人欧美综合| 人妻一二三区| 中文字幕日韩综合| 劲爆欧美人妖三区91| 91天天综合日韩欧美| 综合五月婷婷亚洲一区| 五月天色图影视| 精品国产乱码久久久兰草影视| 9Ⅰ超碰| 亚洲国产av中文字幕久久| 九九色逼| 91精品婷婷国产综合久久竹菊| 東南亚性呦成人伦理资源在线视频| 日韩欧美大片免费高清啪啪| 凹凸视频特色日本特黄| 色亚州人久干视频在线观看免费版| 人妻久久一区二区三区 | 久久久999网站| 久久视频少妇美女| 翔田千里A片一区二区| 日韩性爱再线视频| 亚洲综合影片| 人妻久久一区二区三区| 日本欧美亚洲高清在线看| 麻豆 欧美 日韩| 九九人妻| 免费?级毛片无码?∨蜜芽试看| 色婷婷视频| 中亚黄色三级大片| 麻豆视频国产一区二区| 激情自拍 校园春色| 少妇熟女视频一二三区| 国产日韩在线播放av| 91N五十路| 国产美女高潮视频| 亚洲成A∨人影院在线欢看| 97超碰色屌| 日韩超碰97| 国产精品午夜高潮呻吟久久av| 日韩美女高潮喷水视频| 成人自拍三级在线观看| 亚洲AV免费在线观看| 狠狠躁伊人中文字幕| 欧美日韩精品一区二区三区高清| 97青娱乐超碰久久| 欧美欧美啪啪视频| 韩国久久97| 花花AV导航| 免费A V在线| 久久机热| 最新日韩黄片| 少妇久久久免费| 探花一区二区三| 久久久久久久 九九九九九九九| 99精品九九九九九九| 成人三级片无码| 亚洲色图综合网| 成人精品一区二区91毛片不卡| 免費人妻夜夜爽天天爽爽一区| 国产日韩久久| 草草影院在线视频| 97在线免费看视频| 动漫片子网站3黄| 少妇久久久| 97久精品| 久久AV无码AV| 97欧美精品综合| 天美传媒精品一区二区| 久无码| 亚洲色天| 男人天堂.AB| 亚洲欧美999| 超AV色女| 99这里只有精品国产| 婷婷丁香一区二区三区| 少妇3P性爱自拍| 亚洲精品国产av天美传媒| 国内偷自视频区视频综合| 亚洲永久AV无码精品秋霞| 日韩偷拍一区二区三区| 亚洲AV无码久久精品蜜桃小说| av在线播放国产一区| 久久久久久中文版| www..com操老师| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 99re不伦| 色天使亚洲综合在线观看| 成人十八禁日韩欧美一二三| 熟女六十路| 国产精品农村妇女精品| 日韩无码嘿咻黑热久| 操逼A∨| 久久久穴999| 国产AV色黄看到爽| 免费99精品国产自在在线| 日韩一级片在线看| 成人国产二区三区在线,男女精品。| 中文字幕日韩综合| 国产黄色小视频网站| 精品一国2| 亚洲中文字母在线播放| 成人怡红院| 亚洲熟女综合| 日本成人电影资源网| 97在线播放 | 久久久成人免费av电影| 夜夜爽爽爽| 久久久国产av美女私房| 欧美 日韩第一性色| 无码又爽又硬又激情免费视频| 欧美国产精品久久九九| 欧美天堂亚洲电影院一区在线播放| 国产九九九九九九九九| 日韩欧无码一区二区三区免费不卡| 国产精品。| 在线人人人人人人精品超| 亚洲无码一区成人免费午夜| 熟女中出视频| 91精品久久综合熟女| 欧美色狠| 青青草女人天天干| 日本免费不卡二区| 男人a天堂手机在线版| 91欧美色| 日本一久是| 欧美日韩高潮喷水91| 国产高清精品一区二区三区毛片| 亚洲图片视频小说| 少妇六月天| 日韩不卡a级视频专区| 老女人综合网| 天天干夜夜| 亚洲欧洲美腿丝袜| 久久人人爽人人爽人人片Ⅴ| 精品高清av中文字幕| 神马久久久久久久久| 亚洲免费精品一区| 国产成人网站在线观看| 色就色综合| 久久久555| 男人网站婷婷| 四虎 精品 WWW| 乱伦日本色图AⅤ| 欧洲久久一二线| 破处bbq| 日韩AV中文字幕电影| 91色久| 国产人伦a片信息免费片| 好吊色综合| 成人精品水蜜桃久久久久久久| 九色 人妻 大香蕉| 伊人五月天| 国产日逼视频| 国产偷人伦激情在线观看| 蜜桃AV天堂| 久久久久ab| 97中文超碰| 无码少妇精品一区二区60岁老人| 久久久久久69国产一区二区| 亚洲精品久久久久毛片A片拉屎 | 91欧美另类| 久久本道| 国产免费一区二区三区最新不卡 | 婷婷色综合欧美日韩| 欧亚日本情色| 91n免费处女| 超碰97男人| 久久久精品国产亚洲伊人| 熟女人妇一区二区三区| 亚洲精品国产专区在线观看| 玖玖爱在线视频免费观看| 美女黄页网站| 欧美后入式| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 四虎av在线| 四虎在线观看网站| 久久99草| 日韩精品人妻中文字有码在线| 日本青青草在线| 亚洲色图超碰在线| 粉嫩国产精品久久粉嫩| 久久乐| 亚洲人妻av| 99久久综合网| 色爱国产| 99无码精品| 久久久久久久人妻| 亚洲久热| 920日本午夜免费| 五月丁香色综合| 五月丁香啪啪| 99色色| 九九在线视频| 日韩一级二级| 超碰97欧美在线 | 黑人粗大V S日韩女优视频| 久草精品一区| 毛片麻豆91糖心精品毛情片| 天天日美女的B| h色99999| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 日本色色色视频| 天天天天天天天天天天干美女| 亚洲最大成人a毛毛片| 国产免a费看黄片在线| 免费一级特黄特色大片在线观看看| 99久久精品无码一区二区毛片免费 | 亚洲精品一卡二卡三卡福利视频网站 | 亚洲男人天堂网久久| 成人熟女视频一区二区三区| 大香蕉国产中文自拍| 精品一久久久| 超碰在线第一页| 日韩无码服务区| 中韩中文字幕在线观看| 欧美色乱| 欧美人与动性人交a| 国产精品成人久久一区二区三区| 亚洲阿v天堂无码z2018| 男男H黄动漫啪啪无遮挡网站| 午夜福利视频在线一区| 99精品在线| 国产农村妇女一区二区| 亚州久久9| 欧美国产操逼| 91熟女在线| 一二三区操逼国产91| 欧美日韩黄片精品在线| 国产 无码 一区二区| 超碰免费人人| 欧美熟妇乱码在线一区| 欧美影音在线| 黄色成年| 日韩欧美亚欧在线视频| 深夜国产一区二区三区在线看| 3p国产欧美99热| 亚洲麻豆精品二区三区| 骚逼一区二区| 亚州黄站| 91AV入口| 久久鲁干| 青青草吊丝| 60秒免费视频| 久热一区二区| 美國A片| 99这里有精品视频| 精品十三区| 人人澡人人澡人人| 操逼无码操逼| 国产97色在线| 九月AV| 夜夜嗨老熟女AV一区二区三区| 伊人操| 亚洲日韩精品一区视频在线| 五月黑AⅤ| 4虎在线视频| 国产精品操| 久久九九视频九九视频| 91色艳| 人妻素股| 国产一区二区成人av在线播放| 黄aaaaaaaaaaaaaaaaaa色网站| 东北夫妻性偷拍| 超碰视97中文| 中国AV美女| 婷婷99狠狠| 久久大陆| av黄图片在线观看| 中文字幕jul-617人妻熟女| 亚洲美欧999| 欧美操逼录像国产黄色国产| av无线看| 久久一区无码| 欧美成人贴图| 久草国产在线视频| 国产精品久久久久久夜夜夜| 国产sv美女内射| 国岛片视频| 欧美婷婷久久| 极品色| 激情专区综合| 午夜AV污污污| 岛国在线免费视频| 91n美女视频| 欧美春色| 日韩人妻一区二区精品| 日本九九久久99| av网站免费线看| 99免费在线视频| 综合网亚洲1| 色色网91| 中文久久一区| 97爱爱| 天天干美少妇一区| 亚春色色| 人人插人人搞人人操| 天美传媒AV国产在线| 最新日本中文字幕| 久久日韩毛| 97干在线视频| 天天色播| 久久久久女教师免费一区| 围产精品一区二区三区视频播放| 97精品综合久久网| 午夜操逼不卡| 日韩99神马视频片| 久久久久亚洲三级电影| 亚洲综合113页| 99无码狠狠久久| 人人天天欧洲| 丝袜美腿av女优在线| 依人大香蕉| 97超级久久| 99久久九九| 中文字幕一二三av| 中文字幕在线高清男人的天堂 | 欧美 精品国产制服第一页| 国产少妇与亚洲av| 97超碰久久| 人妻少妇蜜桃视频欧美一区| 丰满熟女一区二区三区在线播放| 成人欧美一区二区三区黑人一| 91久久国产精品| 精品亚洲国产成人AV制服丝袜 | 中文字幕黄片在线| 97色视频在线| 精品人妻av在线播放| 国内97干免费看| 91艹B视频| 97久久精品不卡| 人妻熟女av国产网站| 天天操熟妇| 日本女人操逼| 97天天操| 伊人国产av| 在线无码视频| WWW美腿丝袜香蕉中文| 男人的天堂一区三区| 一卡二卡在线播放| 中文字幕日韩综合| 免费精品无码一级毛片牛牛影视| 亚洲精品欧美专业| 亚洲国产一区二区入口| 十八禁电影伊人网| 伊人久久婷婷| 超碰97人妻| 自拍二页| 午夜国产成人福利视频 | 亚洲一区二区三区播放在线| 久艹99| 色婷五月天| 国产在线观看一区二区三区| 做爱福利视频一区二区| 自拍偷拍2025在线观看| 97色亚洲| 麻豆一区在线| 不卡啪啪视频| 天天干天天操天天操夜夜操天天操| 天天做天天爱天天爽AV| 殴美在线AⅤ| 人妻第一页| 91在线视频免费中出| 中国大陆国产高清AⅤ毛片| 91操熟女视频| 色综合潮| 免费综合亚洲中文| 91综合网| 蜜臀av中文字幕| 亚洲高潮少妇| 日韩人妻制服丝袜av| 青青操日韩| 人人色人人射人人妻| 欧美日韩国产高清在线一二三区| 亚洲丝袜少妇在线| 欧美夜色| 99无码| 亚州免费啪啪视频| 伊人麻豆传媒| 99热这里只有是精品10| 嗯嗯啊啊视频在线看 | 大香蕉色十月| 韩国午夜理伦三级好看| 精品福利| 99热国产精品| 色月天AV导航| 丰满的三级少妇欧美久久久| 国产午夜精品理论片一二三区区 | 嗯……啊…嗯嗯…啊…好舒服| 综合影视国产无码| 日本久久女同性恋视频| WWW美腿丝袜香蕉中文| 久久a久久| 99精品久久久久久久婷婷蜜桃| 天堂69亚洲精品中文字| 91制服丝袜| 日影院久久婷婷夜夜网| 青青爽| 美女自卫慰黄网站免费| 国产一区二区三区白丝| 另类欧美色| 国产后入清纯| 国产超碰在线一区| 蜜臀av一区二区三区免费观看| 国产精品制服丝袜清纯唯美 | yazhousetuoumei| 99综合网| 国产一区在线免费播放| 国产传媒午夜理伦精品| 色欧洲| 33044男人的天堂深夜备| 麻豆一区二区三区精品| 大香蕉伊人亚洲| 一级黄色影片| 天天操天天舔| 国产高清26uuu| 色视频蜜乳| 国产91 丝袜在线播放00-百度| 国产精品97超碰| 亚洲AV不卡在线观看尤物| 色穴精品| 无码免费一区二区三区啪啪| 三级片网站在线播放| 国产区91柔拿会所技师| 国产一区免费午夜视频| 国语av狠狠色丁香婷婷综合激情| 97日韩超碰超碰中文字幕| 久久久久久久综合,国产| 999 久久久| 日韩情色AV| 啊啊啊啊啊操我视频| 日本有码久久| 九九综合| 免费精品99| 亚洲1区| 亚洲aV无码成人在线观看| 91c色| 亚洲国产尤物yw在线观看| 最新av中文字幕高清| 色吧5亚洲| 男人天堂网站| 清纯唯美亚洲| 国内外内射高清视频| 久操免费观看| 亚洲天天更新| 日本色日夜干| 神马久久午夜| 久久九色| 国产综合日韩伦理| 免费精品国偷自产在线在线| 欧美影院一区二区三区| 中文字幕精品探花视频 | 黑人嘿嘿嘿超爽免费视频| 国产黄片在线免费观看| 久久九九视频九九视频| 日韩探花精品在线视频| 人妻人人做人人澡人人爽欧美一区| 亚洲一区二区三区中文字幕| 国产精品久久久久久无码红治院| 久久黄色视频一区二区三区 | 天天日熟妇| 伊人久大| 蜜臀久久久99久久久久 | 久久婷婷在线观看视频| av午夜玫瑰| 噜噜噜久久亚洲精品色情| 久久九精品| 久久久久国产精品人妻aⅴ天堂| 少妇特黄一区二区三区| 天天操天天干美女网址导航| 99久久久| 欧美第一页| 国产精品蜜臀久久久久无码AV| 久久这里是精品| 亚欧无码在线| 99自拍视频在线| 在线观看AV不卡| 久久国产精品,久久国产| 成人久久精品| 97视频免费在线| 一区二区视频在看| 欧美精品三级黄片| 日韩在线一区高清在线| 爱av免费| 久久天堂婷婷网| 伊人大香蕉在线| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 天天射影院| 色九九九| 吊色| 欧美色乱| 欧美日韩国产另类综合| 立川理惠无码一区二区| 神马精品视频| 日韩不卡网操逼中文字幕日韩| 日日骚av| 亚洲欧美一区二区网址| 亚洲中文国际强奸字幕| 天天摸,夜夜摸| 爱啪精品一区| 久久久免费高清中文视频| 看全色黄大色大片免费视频| 性影在线视频| 五月天啪啪| 91天美传媒精品| 熟妇一区,二区,三区。| 中文字幕欧美丝袜07资源| 人人操肉肉| 日本 欧美 亚中文字幕| 久久久久亚洲一区女同性恋中文字幕| aV中文麻| 91av一区二区在线观看| 99久久9| 久久超碰97中文字幕| 激情婷婷黑人91| 秋霞操逼片| 五月天婷婷基地| 亚洲视频小说| 97精品在线视频| 欧洲成人性爱视频| 黄页大片在线观看| 美女爽爽爽刺痛洞洞| 狠狠婷婷亚洲中文综合久久| 午夜精品久久久久久久99蜜桃一| 韩国轻伦国内自拍一区| 91熟女视频网| 99这里只有精品国产| 日韩三级视频一区二区三区| 欧美亚洲成人在线一区二区三区| 啊啊啊啊好爽好舒服一区二区易域| 岛国网址国产| 91大神电影天堂| 深夜激情| 青青操综合网| 青青草亚洲一区 | 可能人人看人人摸| 香一区二区三区| 国产精品另类| 郑州宾馆老熟女露脸啪啪| 麻豆AV一区二区| 中文字幕激情小说| 午夜精品五区| 夜夜騷av、一區二區| 美女诱惑久久| 岛国精品视频在线观看| 综合欧美日韩在线| 四虎午夜影院| 日韩亚洲美州欧洲综三区一品在线| 超碰 国产熟女精品一区| 91av一区二区在线观看| 欧美 亚洲 制服 精品| 抽插一区二区视频| 日韩人成网站在线播放| 91黑丝美女| 手机看片91人妻| 成人婷婷丁香| 色与欲影视天天看综合网| 日本欧美一区二区三区免费| 青青草伊人久久| 国产精品久久久啊| 九九九九久久久| 97在线公开视频| 操屄不卡视频| 亚州高清av| 亚洲国产尤物yw在线观看| 久久国产精品,久久国产| 中文字幕后石码四区五区| 91超级碰碰| 精品丰满熟妇人妻一区| 自拍偷拍 日韩无码| 美美91成人国产精品欧美精品久久久久久久| 国产精品久久久啊| 欧美制服另类丝袜| 美女久久久久久久久久久| 一区二区三区视频| 超碰色美女| 麻豆国产免费影片| 欧美,日韩,中文,另类| 黑人嘿嘿嘿超爽免费视频| 麻豆精品三区视频| 26uuu国产日韩综合在线观看| 国产精品视频| 成人免费看吃奶视频网站| 麻豆人妻少妇在线免费观看| 国产精品免费1区2区视频| 成人女人国产| 9国产超碰| 91美女在线视频| 国产黄色在线播放观看| 成人热久久精品| 操逼大黄片| 欧美日韩国产人人| 久久久久久久国产a∨| 欧美高潮| 中日高清无码操逼视频| 97色操| 欧美天天插| 久久狠狠色噜噜狠狠狠狠97| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久操频道免费在线呗看| 色婷婷丁香五月| 试看60秒 爽| 亚洲天堂另类小说男人| 亚洲国产精品99久久久| 校园春色亚洲无码| 国产超碰人人爽人人做| 精品无av| 欧美性天天影视| 国产欧美在线观看免费观看| 五月天久久婷婷亚洲| 国产女乱淫真高清免费视频| 美国三级日本三级久久99| 少妇久久久久久| 91处女在线观看| 97超碰无码网| 亚洲最新av无码成人精品区| 国产中文字幕在线| 四虎AV在线观看| 人人弄人人摸| 粉嫩AV输入| 3p国产欧美99热| 久操97| 青青草五月天| 国产精品岛国片在线观看| 中国熟妇| 综合日韩激情另类图片| 欧美日韩操操操| 精品欧美乱码久| 久草资源在线视频官方总站日韩丝袜美腿| 十八禁av无码免费网站APP| 哑洲在线| 蜜色网色哟哟| 啪啪免费| 9久久精品| 91九九九逼| 亚洲无线码一区国产欧美国| 97精品网| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 天天日天天操心| 家庭乱伦国产精品| 职场同事知名国产国产精品久久欧美日韩 | 日本免费不卡二区| 99精品久久久久久久婷婷| 精品人妻一区二区三区视频在线| 久久精品天美| 国产成人精品日本亚洲语言| 在线免费观看高清无码视频| 亚洲色图自拍| 六月婷激情福利天堂69| 国产av又色又爽又黄| 五月情色天| 久噜噜| 亚洲不卡AV在线| 国产精品呦一区二区三区| 97天天操| 精吧天堂| 91色五月俺来也| 国产精品成人无码av| 日本性感人妻91| 天美传媒精品久久视频| 日韩成人午夜精品久久高潮| 国产日韩欧美三级片| 亚洲一卡二卡在线免费| AV中文字幕三四五| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 亚洲精品久久久久久久蜜桃臀| 大二网站亚洲| 巨乳特殊服务按摩| 久久m| 美女露胸露屁股| 中文字幕 国产区| se吧提供国产乱老熟视频胖女人 | 国产宅男宅女在线观看| 天堂无码| 久久精品噜噜噜成人看免欧美大片| 最新亚洲风情电影| 天天射影院| 在线人人人人人人精品超| 欧美高清18A片| 快灬快灬 一下爽蜜桃在线观看| 成人欧美日超碰| 日韩一999精品| 色婷婷视频| Blackedraw视频一区二区| 超碰97人妻免费在线| 熟妇一区二区| 九九久久国产精品怡红院| 在线观看视频91| 少妇毛片久久| 免费看毛片操穴| 女人被添高潮免费视频| 欧美极品性爱天天射| 波多野结衣之双飞调教在线播放 | 色哟哟1区2区| 欧美色图偷拍另类| 97人肏| 亚洲.欧美.丝袜.中文.综合| 国产精品久久久三级无码| AV不卡在线| 爽极品影院| 无码高清少妇久久| 国产又黄又粗又猛大片| 精品国产乱码久久久久久网站入口| 婷婷10月天青娱乐| 久久精品无码不卡| 欧美91久久久久| 不卡一区视频| 99久热精品99re6热| 国产女同性恋视频| 中文97国产| 一区二区首页| 好爽,再快点啊哈嗯嗯嗯嗯| 区日韩亚洲乱码av电影| 吻戏激情性巴克| 国产少妇肉丝在线观看| 日韩成人精品中文字幕| 丁香六月啪| 91狠狠综合久久| 久久草大香蕉| 超碰AV在线| 啪啪一区| 五月天综合| 中亚精品极乱| 殴美,日韩国产伦精品| AV天天在线观看| 精品妇女一区二区三区| 中文高清一区二区的| 亚洲无套久久嗯嗯| 人人喜人人妻| 中文字幕精品丝袜| 97色诱| 噜噜噜久久亚洲精品色情| 亚洲青色欧美| 国产精品午夜福利视频| 2019亚洲男人天堂| 九九久精品| 啊啊啊慢点| 91高潮| 人人爱人人乐人人操| 操b在线观看| 国内毛片无遮挡国产| 亚洲图片激情综合另类| 国产A v无码专区| 亚洲古典另类欧美在线| 91在线无码精品秘 软件| 色综合色色| 极品五月天噜噜| 哈哈操电影AV| 欧美亚洲se91| 大香蕉日亚洲日本亚大 | 亚洲91在线播放影院| 国产一级作爱毛片| 欧美日韩99| 天天综合亚在线| 97欧美精品综合| 国产熟女二区| 蜜桃网熟妇| 97超碰美女| 乱伦一二三区| 太久视频| 久久婷婷六月综合| 999久久久九| 青青草男人天堂| 97在线观看免费| 亚洲国产综合图区中文字幕| 国产超碰AV在线精品| 亚洲国产一级精品毛一级精品看免费视频 | 免费国产| 青青在线视频日韩欧美| 国产综合在线视频网站| 成人免费福利在线观看| 狠狠综合网| 99操| 亚洲色图 91| 尤物网站91| 日操粉逼逼| 日韩欧美视频青青| 中文字幕97色| 久久精品操| 色哟哟 日韩精品| 欧美视频一区二区在线| 男人兔费天堂| 欧美激情久| 男人的天堂视频精品乱在线| 自拍偷拍第26| 97最新在线播放视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 日韩视频啪啪| 美女露胸露尿口| 劲爆欧美人妖三区91| 色欧美亚洲| 2021久久国产综合精品青草| 大香蕉色十月| 香蕉色网| 麻豆三极片| 99久久久无码国产精品性男| 久久天天摸| 中文熟女五十乱码在线| 97国产精品视频| 成人免费福利网站国产| 五月天黄色av| 97欧美色| 内射小黄片| 丁香久久| 狠狠做深爱婷婷久久二区| 92一区二区| 亚洲精品亚洲人成在线麻豆| 一二三啪啪专区| 欧美亚洲韩国视频十五区 | 日韩无码人妻中字久久三区四区| 中文字幕日韩专区精品系列| 99精品久久| 欧美国产操逼| 91啦人妻| 丁香六月婷婷| 玖玖爱综合网| 日韩操逼性鲍| 性色一线| 成人AV在线网站| 精品九九国产无码| 色999人与兽| 啊啊在线| 亚洲天堂人妻熟妇视频| 嗯嗯嗯不要不要免费视频| 无码二级三级| 午夜爽爽爽在线观看永久入口姬片| 欧美熟妇乱码在线一区| 九九九九精品视频| 激情啪啪拍91| 久草男人天堂| 日本成熟少妇A∨网站| 99热精品在线观看| 很狠操| 黄色激情电影在线观看| 97蜜桃综合| 亚洲丝袜少妇在线| 韩国一级婬片A片AAAAA| 足交视频老司机| 欧美一二三级精品在线| 国产伊人自拍| 日本二三四区| 欧美一区二区三区日韩| 操淫穴亚洲五月丁香 | 天美传媒av一区二区| 国产精品一区二区亚洲人成毛片| 午夜性| 久9久精品视频| 成人免费视瓶| 国产不卡片| 久久这里只| 狠狠色综合网| 日日骚av| 日本午夜久久电影| 啊啊啊啊在线播放| 伊人激情五月天一区二区| 欧美页片| 中文字幕人成乱码熟女香港| 97综合日韩| 成人毛片免费| 99中出在线| 丰满熟女一区二区三区在线播放| 色婷婷影视| 熟女少妇视频| 五月婷婷综合网| 欧美欧美少妇| 精品人妻伦一二三区久久| 国产精选视频| 色五月激情网| 天美传媒AV在线| 加勒比无码一区二区三区| 激情欧美97| 花野真衣| 日产操逼| av情色影音| 国产欧美日本亚洲精品| 国产性刺激| 久久国产逼| 99热在线不卡| 色就色综合| 97超碰精品成| 婷婷五月天激情网| 日本亚欧爱爱| 开心五月婷婷激情| 人妻精品一区二区| 天天影视综合网欧美精品| 精品九九九九| 日韩人妻网站| 台湾成人无码AV| 啊啊啊啊好大好硬啊啊啊啊啊| 国产午夜无码片在线观看影视| 中精品一区二区三区| 超碰人人干| 超碰在线91| 国产原创精品| www.亚洲成人一区| B049AV在线播放| 亚洲中文字母在线播放| 精品人妻久久久| 校园春色制服丝袜中文字亚洲| V A在线| 欧美亚洲美少妇一区二区| 欧美视频一区二区在线| 日日干日日摸| 手机av天堂久久久久| 日日操免费视频| 久久精品中文字幕女同|