欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

基于Kernel IR的字節(jié)碼中間件:鴻蒙Flutter適配與高性能加載實(shí)踐

基于Kernel IR的字節(jié)碼中間件:鴻蒙Flutter適配與高性能加載實(shí)踐 1. 先說項(xiàng)目的定位為什么有人要用“字節(jié)碼中間件”做鴻蒙適配如果你所在團(tuán)隊(duì)正在把 Flutter 應(yīng)用往開源鴻蒙OH系統(tǒng)上遷移大概率會(huì)遇到一個(gè)非常尷尬的處境Flutter 引擎本身沒有對(duì) OH 的官方支持社區(qū)移植版本能不能跟上框架版本更新是個(gè)問題而你手里的業(yè)務(wù)代碼又極度依賴若干底層插件。我們最初就卡在這里——某個(gè)原生插件在 Android 上一切正常到 OH 系統(tǒng)上表現(xiàn)就不對(duì)為了排查問題不得不翻引擎源碼改配置改完還得重新編整個(gè) engine一次全量構(gòu)建小半天就沒了。后來我們把目光轉(zhuǎn)到了 Dart 的“中間表示”上也就是內(nèi)核系統(tǒng)中的 Kernel IR。Flutter 應(yīng)用在開發(fā)模式、部分動(dòng)態(tài)特性場(chǎng)景下運(yùn)行時(shí)加載的其實(shí)不是最終機(jī)器碼而是一個(gè)名為 dill 的 kernel 產(chǎn)物引擎拿到這個(gè)產(chǎn)物之后按需解析類、方法、語句。換句話說這一層是天然的“可介入層”。我們?cè)谶@一層寫了一個(gè) kernel 中間件不碰引擎源碼而是在 dill 產(chǎn)物被加載之前做代碼變換最終實(shí)現(xiàn)了平臺(tái)差異規(guī)避、性能插樁和運(yùn)行時(shí)補(bǔ)丁。這篇內(nèi)容適合兩類讀者一類是正在做 OH 平臺(tái) Flutter 適配、遇到插件或渲染兼容性問題、想找一個(gè)相對(duì)低侵入方案的開發(fā)者另一類是對(duì) Flutter/Dart 底層機(jī)制好奇想了解 kernel 如何能做到“在編譯后改程序行為”的人。我會(huì)把中間件的架構(gòu)、核心代碼、踩坑記錄按實(shí)操路徑寫清楚涉及的代碼片段可以直接拿來改一改跑起來。1.1 為什么不直接在引擎層改代碼直接修改 engine 源碼是最直覺的方案。比如某個(gè)平臺(tái)通道的實(shí)現(xiàn)不符合 OH 的線程模型你在引擎的 platform channel 代碼里改就行。但問題是Flutter 引擎的構(gòu)建鏈路非常重而且官方代碼迭代很快基于舊版本打出的補(bǔ)丁幾乎不可能平滑合并到新版本。更麻煩的是OH 的適配往往涉及多個(gè)底層模塊——圖形、字體、輸入、平臺(tái)視圖每處改動(dòng)都要跑全量回歸一次版本升級(jí)就能把團(tuán)隊(duì)拖垮。另外還要考慮團(tuán)隊(duì)定位如果你不是引擎維護(hù)方而是某個(gè)業(yè)務(wù)線的應(yīng)用團(tuán)隊(duì)長期維護(hù)一個(gè)私有引擎分支根本不現(xiàn)實(shí)。我們當(dāng)時(shí)的硬性約束是盡量不動(dòng)引擎源碼、不動(dòng) Dart SDK只動(dòng)最終產(chǎn)物。kernel 中間件剛好滿足這些約束。它允許你在 Flutter 官方引擎和業(yè)務(wù)代碼之間插入一層“私人訂制”隨構(gòu)建走、隨產(chǎn)物走不用改任何 C 代碼。1.2 中間件到底解決哪幾個(gè)問題歸納下來我們的 kernel 中間件核心解決四類問題平臺(tái)差異OH 系統(tǒng)對(duì)部分 API 的行為與 Android/iOS 不同很多暴露給 Dart 層的接口沒有對(duì)應(yīng)實(shí)現(xiàn)需要在加載時(shí)替換方法體或修改變量。插件橋接業(yè)務(wù)插件大多通過 MethodChannel 與原生通信通道名、參數(shù)格式需要按 OH 的規(guī)范調(diào)整。性能觀測(cè)想在關(guān)鍵渲染路徑、平臺(tái)消息回執(zhí)上埋點(diǎn)但不能污染業(yè)務(wù)源碼。版本升級(jí)Flutter 引擎升級(jí)后適配規(guī)則盡量不重寫規(guī)則與引擎解耦。一句話總結(jié)中間件就是“編譯后的最后一道適配閘門”。它讓業(yè)務(wù)代碼保持平臺(tái)無關(guān)把所有平臺(tái)相關(guān)的臟活、累活都集中在產(chǎn)物層解決。2. 底層機(jī)制Kernel IR 在 Flutter 體系里到底是什么角色2.1 從 Dart 源碼到 dill 的這一路先看一條完整的編譯鏈路Dart 源碼 - 分析器Analyzer- 前端編譯器CFE- Kernel IR - 二進(jìn)制 dill 文件 - VMJIT/AOT在 Flutter 的日常構(gòu)建里這條鏈路是這樣落地的Debug 模式構(gòu)建產(chǎn)物中帶kernel_blob.bin引擎啟動(dòng)即加載它用 JIT 方式執(zhí)行熱重載依賴的就是這個(gè)產(chǎn)物。Profile/Release 模式通常走 AOT產(chǎn)物是 ELF 快照。但部分工具鏈、增量構(gòu)建流程里kernel 變換仍然會(huì)一閃而過Dart DevTools 的許多動(dòng)態(tài)特性也依賴 kernel 相關(guān)的表達(dá)式求值。Kernel IR 本身是一種帶完整類型信息的 AST。它和 Java 字節(jié)碼不完全一樣但承擔(dān)的職責(zé)類似介于高級(jí)語言和目標(biāo)機(jī)器之間的、可分析和可變換的中間產(chǎn)物。把 dill 當(dāng)作“字節(jié)碼文件”來理解沒有大問題。這也是為什么項(xiàng)目標(biāo)題敢叫“字節(jié)碼中間件技術(shù)”——對(duì) JIT 場(chǎng)景來說這層就是真正被虛擬機(jī)消費(fèi)的代碼形態(tài)。對(duì)搞過 Java 字節(jié)碼的同學(xué)可以再給一個(gè)直觀類比dill 相當(dāng)于 .class 文件Kernel AST 相當(dāng)于字節(jié)碼指令序列而 VM 就是那個(gè)逐條執(zhí)行的解釋器。區(qū)別在于 Dart 的 AOT 會(huì)在部署前把這一切變成機(jī)器碼所以中間件的介入窗口主要在 debug 和 profile 階段以及部分要求“源碼級(jí)動(dòng)態(tài)修復(fù)”的線上場(chǎng)景。2.2 讀 dill一個(gè)最小可運(yùn)行的例子要把中間件跑起來核心就是圍繞 package:kernel 做讀、改、寫。下面是最簡(jiǎn)代碼先把整個(gè) dill 讀進(jìn)內(nèi)存再遍歷庫名最后原樣寫回一個(gè)新文件。// 需要依賴 package:kernel import dart:io; import package:kernel/binary/ast_from_binary.dart; import package:kernel/kernel.dart; Futurevoid main() async { final bytes File(kernel_blob.bin).readAsBytesSync(); final component Component(); final builder BinaryBuilder(bytes, uriToSource: (uri) null); builder.buildComponent(component); // 遍歷一下所有庫名 for (final library in component.libraries) { print(library.importUri); } // 寫回 final outFile File(kernel_blob_patched.bin); final sink outFile.openWrite(); final printer BinaryPrinter(sink); printer.writeComponentFile(component); await sink.close(); }注意BinaryBuilder / BinaryPrinter 并不是穩(wěn)定的公開 API不同 Dart SDK 版本接口名都可能變。別把它當(dāng)公共庫用要把它當(dāng)作隨 SDK 版本綁定的內(nèi)部工具。我在實(shí)際處理時(shí)直接使用對(duì)應(yīng) Flutter SDK 里緩存的那份 kernel 源碼編譯這樣版本一致性最有保障。2.3 kernel 版本兼容性最容易踩的深坑dill 文件本身有版本號(hào)對(duì)應(yīng)前端編譯器與 VM 的版本。如果你拿高版本的 package:kernel 去讀低版本 VM 生成的 dill輕則解析失敗重則出現(xiàn)字段錯(cuò)亂。我們最初就踩了一次用舊 Dart SDK 的 kernel 包去處理新 Flutter 引擎產(chǎn)出的 dill構(gòu)建直接掛掉報(bào)錯(cuò)信息還特別迷惑只說“Unsupported version”。結(jié)論很簡(jiǎn)單處理哪個(gè) Flutter 版本的產(chǎn)物就從哪個(gè) Flutter SDK 的 bin/cache/pkg 里拿 kernel 包不要圖省事全局依賴一份。這個(gè)“版本一致性檢查”應(yīng)當(dāng)做成中間件啟動(dòng)時(shí)的第一步構(gòu)建環(huán)境變量里強(qiáng)制記錄 SDK 版本不一致直接報(bào)錯(cuò)而不是帶著錯(cuò)誤往下跑浪費(fèi)半小時(shí)。3. 鴻蒙適配下的運(yùn)行時(shí)加載離線變換與在線補(bǔ)丁的管線設(shè)計(jì)3.1 先理清 OH 平臺(tái)上的加載鏈路在 OH 的 Flutter 移植版上應(yīng)用啟動(dòng)流程大致是這樣的宿主工程把 Flutter 模塊的產(chǎn)物打包到 assets。引擎初始化時(shí)在 assets 目錄里找kernel_blob.bindebug/profile 場(chǎng)景或找 AOT 快照release 場(chǎng)景。Dart isolate 啟動(dòng)后加載 kernel 產(chǎn)物按需解析類、編譯函數(shù)。引擎把平臺(tái)消息、渲染指令調(diào)度到平臺(tái)側(cè)。中間件的切入點(diǎn)就卡在第 1 步和第 3 步之間。我們用了兩種方式離線變換構(gòu)建腳本在產(chǎn)物生成后、打包前執(zhí)行一次 kernel 變換替換原 dill。生產(chǎn)環(huán)境用這個(gè)。在線補(bǔ)丁開發(fā)期不改打包流程通過引擎的熱重載機(jī)制把變換后的差量下發(fā)給運(yùn)行中的 isolate。這個(gè)體驗(yàn)非常接近原生熱重載。兩者共用同一套規(guī)則引擎所以離線能跑通的規(guī)則在線補(bǔ)丁也一樣能跑通只是處理時(shí)機(jī)不同。3.2 離線變換流水線離線變換這條流水線按順序一共六步獲取構(gòu)建產(chǎn)物kernel_blob.bin。中間件讀取并解析為Component。規(guī)則引擎加載配置YAML/JSON。對(duì)匹配到的庫、類、函數(shù)執(zhí)行變換。序列化寫出新的kernel_blob.bin。替換原產(chǎn)物并打包進(jìn)應(yīng)用。這六步里最容易被低估的是第 2 步的耗時(shí)。一個(gè)真實(shí)應(yīng)用的 dill 包含幾百個(gè)庫全量反序列化非常慢動(dòng)輒幾十秒。我們的做法是先解析出一個(gè)輕量的“庫索引”通過library.importUri判斷是否命中規(guī)則沒有命中的庫保持二進(jìn)制原文不動(dòng)等真正需要時(shí)再按需展開。這一層懶加載優(yōu)化把變換耗時(shí)從幾十秒壓到了幾秒。3.3 在線補(bǔ)丁把熱重載擴(kuò)展到“平臺(tái)適配”場(chǎng)景Flutter 熱重載的原理是把新的 kernel 增量下發(fā)給引擎引擎執(zhí)行reloadSources對(duì)比新舊 AST 圖然后原地更新。中間件可以利用這個(gè)機(jī)制先對(duì)舊 dill 和新 dill 分別做變換再計(jì)算差量變更集生成 hot reload 補(bǔ)丁下發(fā)到運(yùn)行中的 OH 設(shè)備。我們?cè)陂_發(fā)期拿到的好處是發(fā)現(xiàn)某插件在 OH 上有兼容問題時(shí)只需要修改規(guī)則文件、重新生成補(bǔ)丁、點(diǎn)一下熱重載整個(gè)修復(fù)從“修改源碼 重新編譯 重啟應(yīng)用”的分鐘級(jí)變成了秒級(jí)。排查問題的體驗(yàn)完全不像是跑在一個(gè)尚未被官方支持的平臺(tái)上。3.4 關(guān)鍵參數(shù)與緩存策略中間件里我最常調(diào)的幾個(gè)參數(shù)參數(shù)默認(rèn)值說明規(guī)則匹配優(yōu)先級(jí)精確 URI 通配符 包名前綴避免誤傷同類庫最小插樁語句閾值5 個(gè)表達(dá)式過小的方法不插樁避免噪音全局插樁采樣率0.01控制插樁引入的開銷緩存有效期輸入哈希一致即生效保證可重復(fù)構(gòu)建變換深度只允許在庫邊界操作禁止跨庫新增引用這里特別說一下緩存策略。每次構(gòu)建出的 kernel_blob.bin 內(nèi)容可能完全沒變但構(gòu)建流程還是會(huì)觸發(fā)我們的中間件。我們用輸入 dill 的 sha256 作為緩存 key如果 key 命中且規(guī)則配置沒變直接復(fù)用上次的輸出文件跳過整個(gè)變換過程。這個(gè)優(yōu)化在 CI 上尤其值錢能省掉大量重復(fù)計(jì)算。4. 代碼變換實(shí)戰(zhàn)三個(gè)高頻場(chǎng)景的拆解4.1 場(chǎng)景一給所有平臺(tái)通道名稱統(tǒng)一打標(biāo)在 OH 和 Android 雙端共存的環(huán)境里原生側(cè)經(jīng)常收錯(cuò)通道消息。我們希望把所有MethodChannel(xxx)的通道名自動(dòng)加上oh_v1_前綴這樣 OH 原生側(cè)只需監(jiān)聽?zhēng)熬Y的通道就不會(huì)和 Android 端的消息串?dāng)_。用 visitor 遍歷 AST找到構(gòu)造調(diào)用并修改字符串字面量class ChannelNameVisitor extends Visitorvoid { override void visitConstructorInvocation(ConstructorInvocation node) { if (node.target.name.text MethodChannel node.arguments.positional.isNotEmpty) { final arg node.arguments.positional.first; if (arg is StringLiteral) { arg.value oh_v1_${arg.value}; } } super.visitConstructorInvocation(node); } }這段代碼的關(guān)鍵在于只修改位置參數(shù)里的第一個(gè)字符串也就是通道名。如果業(yè)務(wù)代碼把通道名定義成了常量比如static const kChannel xxx這種直接改字面量的方式就失效了。我當(dāng)時(shí)的處理是增加了一個(gè)“常量傳播”模式先掃描庫內(nèi)的常量定義建立“名字 - 值”的映射然后在所有引用點(diǎn)按映射替換。但要注意這會(huì)把復(fù)雜度提高一個(gè)等級(jí)建議第一版只在字面量場(chǎng)景跑通確認(rèn)整個(gè)管線沒問題后再擴(kuò)展。4.2 場(chǎng)景二無侵入的性能插樁想在關(guān)鍵渲染和消息處理函數(shù)上自動(dòng)加耗時(shí)統(tǒng)計(jì)又不改業(yè)務(wù)源碼。傳統(tǒng)做法是在每個(gè)頁面里手動(dòng)埋點(diǎn)侵入性強(qiáng)且容易忘。用 kernel 中間件可以在產(chǎn)物層自動(dòng)完成。我的實(shí)現(xiàn)思路比較取巧先在項(xiàng)目里寫一個(gè)獨(dú)立的插樁輔助庫probe.dart它提供兩個(gè)最簡(jiǎn)函數(shù)// probe.dart void markStart(String key) { // 記錄開始時(shí)間 } void markEnd(String key) { // 記錄結(jié)束時(shí)間并上報(bào) }然后把這個(gè)probe.dart編譯成一個(gè)小型 dill作為模板 component。變換時(shí)把模板里markStart/markEnd的方法調(diào)用節(jié)點(diǎn)復(fù)制到目標(biāo) Procedure 的開頭和結(jié)尾。核心代碼示意如下override void visitProcedure(Procedure node) { if (!_isInterested(node)) return; final body node.function.body; final bodyBlock body is Block ? body : Block()..statements.add(body); final startStmt _buildMarkStart(node.name.text); final endStmt _buildMarkEnd(node.name.text); final tryBlock Block()..statements.addAll(bodyBlock.statements); // 用 try/finally 包一層避免插樁破壞原有控制流 final tryStmt TryCatch() ..body tryBlock ..finallyBlock Block()..statements.add(endStmt); node.function.body Block()..statements.add(startStmt) ..statements.add(tryStmt); super.visitProcedure(node); }這段代碼只是思路示意真正落地時(shí)有一個(gè)關(guān)鍵坑從模板庫復(fù)制節(jié)點(diǎn)會(huì)引入對(duì)probe.dart庫的依賴。如果目標(biāo) dill 里沒有這個(gè)庫的注冊(cè)信息運(yùn)行時(shí)會(huì)報(bào)函數(shù)未定義。所以每完成一次變換我都會(huì)跑一遍“未解析引用檢查”把所有引用節(jié)點(diǎn)、庫依賴完整做好 link。4.3 場(chǎng)景三用自定義 Dart 實(shí)現(xiàn)替換引擎默認(rèn)行為OH 系統(tǒng)觸摸事件的坐標(biāo)縮放邏輯與 Android 不同業(yè)務(wù)層又不想在每個(gè)頁面適配。最直接的辦法是找到GestureBinding._handlePointerEventImmediately在 dill 里對(duì)應(yīng)的 Procedure然后把方法體換成我們自己寫的oh_pointer_adapter。實(shí)際操作分四步先寫一個(gè)新實(shí)現(xiàn)源文件oh_pointer_adapter.dart。在變換階段讀取該源文件或加載它編譯出的 dill 模板。找到目標(biāo) Procedure替換function.body為新實(shí)現(xiàn)的方法體。保留原方法的參數(shù)列表和返回值類型必要時(shí)把新實(shí)現(xiàn)里的入?yún)⒆鲆淮晤愋娃D(zhuǎn)換。這個(gè)操作看似簡(jiǎn)單卻是最容易翻車的地方。一個(gè)方法體的引用關(guān)系、泛型參數(shù)、局部作用域都與原庫的其他代碼綁定直接整體替換成另一個(gè)庫的 AST 節(jié)點(diǎn)類型簽名很容易出錯(cuò)。我的經(jīng)驗(yàn)是新實(shí)現(xiàn)的方法體獨(dú)立成函數(shù)在目標(biāo)方法體內(nèi)只插入一行“調(diào)用新函數(shù)”的代碼而不是整段替換。這樣既能改變行為又最大限度保留了原方法的局部上下文。5. 性能收益與取舍這件事到底劃不劃算5.1 為什么這比運(yùn)行時(shí)動(dòng)態(tài)代理更劃算有人會(huì)問既然只是平臺(tái)兼容那我在每個(gè)調(diào)用點(diǎn)包一層動(dòng)態(tài)代理不也一樣嗎確實(shí)能解決一部分問題但代價(jià)完全不同動(dòng)態(tài)代理每次調(diào)用都多一層函數(shù)跳轉(zhuǎn)熱點(diǎn)路徑上直接吃掉幀預(yù)算。動(dòng)態(tài)代理難以應(yīng)對(duì) AOT 編譯部分反射特性在 release 構(gòu)建下會(huì)被 tree shaking 直接清掉。代理邏輯必須常駐業(yè)務(wù)源碼侵入性強(qiáng)業(yè)務(wù)方會(huì)有很大阻力。kernel 中間件則完全不同變換發(fā)生在編譯期運(yùn)行時(shí)的調(diào)用路徑上沒有任何額外跳轉(zhuǎn)。插樁邏輯雖然會(huì)有開銷但它只出現(xiàn)在被插樁的特定方法里而且可以通過采樣率控制不會(huì)全鏈路無差別加成本。這就是標(biāo)題里“高性能運(yùn)行時(shí)加載”的核心原因——中間件不參與運(yùn)行時(shí)運(yùn)行時(shí)自然沒有中間件帶來的負(fù)擔(dān)。5.2 一組實(shí)測(cè)數(shù)據(jù)參考下面是我們?cè)跍y(cè)試設(shè)備上拿到的對(duì)比數(shù)據(jù)需要說明的是這只是模擬項(xiàng)目 X 的相對(duì)值不同設(shè)備、不同引擎版本差異會(huì)比較大主要看趨勢(shì)。指標(biāo)未接入中間件接入中間件無插樁接入中間件含插樁冷啟動(dòng)到首頁可交互2100 ms1520 ms1680 mskernel_blob.bin 大小38.5 MB39.1 MB41.6 MB平均幀耗時(shí)17.2 ms16.8 ms17.5 ms構(gòu)建增量耗時(shí)-4.5 s12 s冷啟動(dòng)的改善主要來自對(duì)啟動(dòng)路徑上平臺(tái)判斷分支的“瘦身”把原來一串 Android/iOS/Web 判斷直接改成了 OH 優(yōu)先的直通邏輯。插樁帶來的體積和構(gòu)建時(shí)間增長是可控的因?yàn)椴蓸勇屎妥钚≌Z句閾值卡得比較穩(wěn)。5.3 還能怎么進(jìn)一步優(yōu)化產(chǎn)物層變換后的 dill 里存在大量未被引用的舊模板節(jié)點(diǎn)跑一輪不可達(dá)節(jié)點(diǎn)刪除體積能再降 5% 左右。加載層把插樁標(biāo)記點(diǎn)預(yù)編譯成索引方法名 - 偏移量運(yùn)行時(shí)第一時(shí)間定位避免字符串比較。構(gòu)建層讓多條變換規(guī)則并行執(zhí)行或者只對(duì)變更過的庫重跑中間件能進(jìn)一步壓縮構(gòu)建時(shí)間。6. 常見問題與排查實(shí)錄6.1 版本不匹配導(dǎo)致解析直接崩潰現(xiàn)象BinaryBuilder 在讀取 dill 時(shí)拋異常提示 kernel binary format version 不對(duì)。排查思路先確認(rèn)這份產(chǎn)物由哪個(gè) Dart 版本的前端編譯器生成在 Flutter 構(gòu)建日志里找 CFE 版本號(hào)。用對(duì)應(yīng) SDK 下的 pkg/kernel 編譯中間件。還不行就用 hexdump 查看 dill 文件頭部的版本號(hào)和工具期望的版本比對(duì)。這個(gè)問題的根因就是版本不一致。后來我們把版本一致性檢查做成了中間件啟動(dòng)邏輯的一部分凡是工具版本和產(chǎn)物版本不匹配的直接停掉并打出清晰錯(cuò)誤不再帶到后續(xù)流程里。6.2 變換后 dill 體積膨脹嚴(yán)重原因通常是兩條一是每次變換都向 AST 里插入模板節(jié)點(diǎn)舊的不可達(dá)節(jié)點(diǎn)沒有被清理掉二是修改字符串字面量后原字符串仍被常量池或其他節(jié)點(diǎn)引用沒被回收。我們做的優(yōu)化變換結(jié)束后統(tǒng)一跑一輪 constant collector 和死代碼清理。對(duì)純前綴打標(biāo)場(chǎng)景使用原地更新而不是新建節(jié)點(diǎn)減少 AST 對(duì)象數(shù)量。最后序列化時(shí)開啟壓縮選項(xiàng)或者外部再套一層 gzip。6.3 熱重載后界面行為不一致現(xiàn)象執(zhí)行 hot reload 后舊變換狀態(tài)部分殘留新規(guī)則沒有全部生效。原因是 hot reload 默認(rèn)比較前后兩個(gè) kernel 的 diff如果中間件修改后的 dill 與原工程編譯出的 dill 不在同一棵 AST 上diff 結(jié)果就可能只包含部分變更。解決方案有兩個(gè)確保熱重載時(shí)也走同一套變換管線把新產(chǎn)物先變換完再參與比較。在入口處放一個(gè)版本號(hào)常量每次變換都把版本號(hào)遞增。熱重載時(shí)檢測(cè)到版本號(hào)變化直接走全量更新而不是差量 diff。6.4 調(diào)試小技巧把 AST 打出來肉眼對(duì)比我強(qiáng)烈建議做一個(gè) dump AST 的小工具把變換前后的結(jié)果導(dǎo)成文本再 diff比用 debugger 單步走快得多dart run tool/dump_ast.dart before.dill before.txt dart run tool/dump_ast.dart after.dill after.txt diff before.txt after.txt打印 AST 時(shí)優(yōu)先輸出庫名、類名、方法名、語句數(shù)量、字符串字面量不要直接全量打印整棵樹否則輸出量大到根本看不過來。6.5 規(guī)則匹配久了會(huì)失效Flutter 升級(jí)一次內(nèi)部包路徑和類結(jié)構(gòu)經(jīng)常變導(dǎo)致匹配規(guī)則失效。我們的經(jīng)驗(yàn)是把匹配規(guī)則設(shè)計(jì)成“基于 URI 節(jié)點(diǎn)特征”的雙因子模式。即使某個(gè)庫因?yàn)橐嫔?jí)改了內(nèi)部包路徑只要節(jié)點(diǎn)特征還吻合——比如構(gòu)造調(diào)用的參數(shù)個(gè)數(shù)、方法名前綴、字符串參數(shù)的值——規(guī)則就能繼續(xù)命中。這一招幫我們扛過了好幾次 Flutter 小版本升級(jí)。7. 工程化落地從個(gè)人腳本變成團(tuán)隊(duì)基礎(chǔ)設(shè)施7.1 建議的接入方式別讓每個(gè)開發(fā)者手動(dòng)跑中間件直接做成構(gòu)建插件更現(xiàn)實(shí)在 Flutter 構(gòu)建輸出后注冊(cè)一個(gè) hook自動(dòng)觸發(fā)變換。在 CI 流水線中加入“產(chǎn)物校驗(yàn)與報(bào)告”步驟變換前后 AST 差異、插樁覆蓋率、產(chǎn)物大小變化。生成人可讀的 patch report出問題時(shí)可快速回溯是哪條規(guī)則導(dǎo)致的。這套流程跑起來之后團(tuán)隊(duì)里不懂 kernel 的同事也能正常接入只需要看報(bào)告不需要碰 AST。7.2 后續(xù)擴(kuò)展方向規(guī)則可視化把配置中心做成云端下發(fā)客戶端拉取后執(zhí)行對(duì)應(yīng)變換邏輯比如灰度插樁、線上問題定位。與監(jiān)控平臺(tái)打通插樁數(shù)據(jù)統(tǒng)一走結(jié)構(gòu)化日志自動(dòng)上報(bào)。從 kernel 變換擴(kuò)展到 AOT 快照階段通過 VM snapshot 機(jī)制做類似的事情進(jìn)一步覆蓋 release 場(chǎng)景。7.3 一點(diǎn)個(gè)人體會(huì)我在實(shí)際做這個(gè)項(xiàng)目的過程中感受最深的是kernel 中間件最大的價(jià)值不在于“能改代碼”而在于它提供了一條低風(fēng)險(xiǎn)的適配通道。只要把它約束在構(gòu)建產(chǎn)物層理論上可以對(duì)任何歷史版本的 Flutter 應(yīng)用做定向修復(fù)完全不用等引擎升級(jí)。如果你也在做跨平臺(tái)系統(tǒng)適配建議先畫清楚加載鏈路再?zèng)Q定到底要在哪一層介入而不是一頭扎進(jìn)引擎源碼里。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天日P天天射P| 婷婷 伊人 久久| 久久草大香蕉| 国产综合A片| 玖玖午夜视频| 少妇口诉沐足视频播放器网址| 春色激情| 国内外色色色色色成人视频| 丁香五月婷婷香| 色五月激情| 五月丁香激情综合网| 五月婷婷在线网站| 丁香五月综合久久八| 国产午夜精品一区二区三区四区| 婷婷五月天色色| 激情五月丁香激情综合网| 91n啪啪| 大香蕉婷婷丁香视频在线| 五月丁六月香av| 激情九九六月激情免费视频| 99久久高清视频| 深爱综合网| 婷婷色基地| 五月亚洲激情| 亚洲国产精品成人免费一区久久久在线观看AAAA| 国产精品美女久久久久AV超清 | 99亚洲视频| 色色综合日韩| 狠狠色丁香久久久婷| 亚洲AV成人精品网站在线播放| 九九综合精品| 五月丁香婷婷在线| 婷婷伊人网| 色J香五月天| 99精品在线播放| 婷婷狠狠青青| 九一九九黄色| 九热av| 综合久| WWW.婷婷五月天.COM| 五月丁六月香av| 黄色成人网站在线播放| 婷婷五月综合社区| 婷婷久久五月| 人妻狠狠操| 亚洲Av成人在线观看| www.五月天| 超碰操网| 五月婷九九草| 性爱激情久久| 国产综合丁香五月天| 九九色色| 5月丁香美女影院| 婷婷五月激情综合| 99性爱视频| 五月天激情小说| 超碰高清在线| 久久婷婷五月综合啪| 丁香五月激情无码视频| 欧美色爱五月天| 亚洲瑟瑟精品在线| 色99欧洲色19| 播五月开心婷婷欧美综合| 99思思热只有在这里看| 激情噜噜噜| 中文在线成人| 美女五月天婷婷| 99热18| 丁香六月激情综合| 操骚货在线| 国产操碰| 亚洲成av人影院| 天天日夜夜| 六月婷婷色综合| 六月综合婷婷开心伊人| 五月婷婷六月色| 久久丁香五月天| 操99| 久久婷婷丁香花综合网| 亚洲一级AV在线免费播放| 丁香五月伊人| 色婷婷小说| 四月婷婷五月色综合| 午夜婷婷丁香| 五月婷婷网五月在线| 婷婷五月花西瓜| 黄色笑话深爱激情网丁香五月婷婷啪啪啪啪啪 | 婷婷伊人久久| 欧美色色色| 丁香五月天激情小说| 爱的综合网| 成人视频婷婷| 色五月婷婷五月天| 婷婷五月精品中文| 色五月丁香网| 极品少妇XXXX精品少妇偷拍| 成人AV网站在线| 激情丁香六月| 97色婷婷五月天| 亚洲综合热| 欧美熟女99| 超碰免费在线| 色爱99| 久热9| 婷婷成人综合免费视频| 97色欧美| 91熟妇大香蕉| 久热最新视频| 91男同| 少妇性按摩无码中文A片 | 亚州激情九月| 襙比视频| 深爱综合网| 99热 日韩| 色久九| 激情综合激情五月| 青青草成人网| 久久婷婷91| 天天激情视频| 婷婷五月天激情四射| 噼里啪啦在线观看免费完整版视频 | 99视频| 任你操精品免费| 国产裸舞福利资源在线视频| 色五月婷婷综合| 国产精品久久久爽爽爽麻豆色哟哟| 激情综合在线播放| 99热日韩| 九月婷婷在线视频| 丁香五月婷婷姐| 99在线精品视频| 艹天天射| 性天天中文网| 天天日天天肏天天奸| 9 99免费视频| 深爱五月激情| 欧美久久久久久久久中文字幕| 丁香五月天偷拍| 日日日日日| www.色多多婷| 婷婷成人综合五月| 精品少妇人妻AV无码专区偷人| 99综合自拍| 六月色国内综合| 五月综合色| AV在线中文| 另类小说激情五月天| 538在线精品| 成人五月丁香社区| 91精品久久久久久| 99综合免费视频| 中文字幕久久一区二区三区| 天堂呦 呦百度搜索-百度搜索| 玖月婷婷爱丁香| 色五月婷婷操逼| 五月天停婷基地| 色播五月丁香| 亚洲另类毛片| 五月天伊人综合| 综久久久| 婷婷激情性爱| 天天做天天爱天天日| 六月丁香久久| 狠狠色狠狠鲁| 久草视频大香蕉99| 2020日日干| 五月天激情日色在线| 人人做人人看人人摸| 极品少妇高潮啪啪AV无码| www.99在线| 超碰a女人的天堂| 自拍视频在线观看9| 激情综合网激情五月欧美| 天天天天干| 人人人人人人人人人草| av操逼网| 婷婷 伊人 久久| 五月亭亭色| 俺去也五月天| 91久久99久久91熟女精品| 日韩精品999| 色伊人啪| XX色综合| 激情六月天婷婷| 人人操91| 久久五月天合网| 99视频只有精品| 99热精品网| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 丁香婷五月天开心六月| 九九视频免费| 五月婷无码| 婷婷婷婷婷婷婷五月丁香| 婷婷激情四射五月天| 五月婷婷六月丁香| 五月色亭丁香| www.久9| 可以看的AV网站| 国产精品美女| 免费黄色视频网址| 欧美草久久五月天91| 狠狠色丁香久久婷婷综合五月| 五月丁香婷婷激激激综合网色播| 99热亚洲精品| 97色五月婷婷在线| 日韩啪啪视频| 五月丁香六月婷婷国产视频| 色欲婷婷夜夜| 久草婷妨| 亚洲精品99| 台湾综合丁香五月蜜桃| 五月美女婷婷风骚| 色5月婷婷| 在线综合婷婷| 国产精品久久99| 五月天激情美女久久| www.99热视频| 久久这里面只有精品视频| 丁香五月综合| 99久久精品国产色欲| 狠狠操狠狠爱| 伊人五月婷婷国产视频| 激情人妻蜜夜系列区| 久久激情天堂| 精品亚洲VA网站| 五月婷成人| 欧在线一区| 五月天综合视频| 亚洲最大五月天成人网| 久久综合干| 久久视频在线视频| 日韩aaaaa| 亚洲天堂aaa| 激情五月深爱五月| www狠狠| 久久国产色| 六月婷婷开心| 天天色色天天| 《诡秘之主》在线观看| 丁香久久五月婷综合| 中国女人内射6XXXXX| 色五月天综合网| 桃色Av色哟哟| 色欲色天天香综合| 91精品在线看| 一本久道综合色婷婷五月| 真实熟女-91九色| 夜夜爽77777妓女免费下载 | 激情婷婷五月亚洲| 99惹在线精品免费观看| 色色激情五月天| 九九精品婷| 97精品人人A片免费看| 婷婷深爱五月| 色婷婷色99国产综合精品| 丁香五月天黄色片| www色五月| 天天舔天天爽| 日韩在线9| 五月天社区| 天天在线XXX| 天天色综合综合| 激情丁香淫荡婷婷| 26UUU在线观看| 加勒比色色| 天天天天天天天干| 99视频精品8 | 久久综合最新网址| 五月丁香六月停停停| 91男女视频在线观看| 久久婷婷六月综合| αv中文字幕在线观| 国自产拍偷拍精品啪啪一区二区| 538在线精品| 91狠狠色丁香婷婷综合久久| 综合天堂AV久久久久久久| 亚洲爆乳无码精品AAA片蜜桃| 狠狠五月天| 丁香六月婷婷综合激情欧美| 色五月激情五月开心五月| 九九九九这里只有精品| 国产AV国片偷人妻麻豆| 狠狠婷婷色| 五月丁香婷婷五月色| 91打屁股免费看| 成人国产欧美大片一区| 婷婷伊人綜合中文| 五月天丁香婷| A一级操| 六月婷婷狠狠| 99热6色| 免费观看大片视频 丁香婷婷 六月欧美| 婷婷色五月色| 99热日本| 五月丁小婷婷激情四射| 亚洲天堂大香蕉| 99久在线观看| 丁香五月天激情小说| 婷婷丁香综合成人| 午夜成人天堂久久无码日韩久久| 亚洲国产无线乱码在线观看| 玖玖爱导航| 日熟女| 91狠狠综合久久久久久| 99色色最新视频| 婷婷五月丁香香蕉| 丁香五月影院| 色99视| www九九| 六月丁香五月婷婷首页| xx人人xx| 青草视频在线观看视频| 欧美精品A片一区在线观看| 日本三级大片| 婷婷综合精品视频97| 婷婷五月天综合久久| 99热在线播放| 婷婷精品综合| 久久精品亚洲一级牲爱综合| 日日夜夜干| 67194线路二在线观看| 综合色网站| 中文人妻主播久久| 六月婷婷久久| 欧美日韩成人h| 欧美久久网| 千人斩操逼| 婷丁香五月天| 热婷婷av| 精品少妇蜜臀91| 另类精品视频在线观看| 国产女生爱爱AA| 五月天色导航婷婷资源婷婷| 99操免费视频| 国产精品岛国片在线观看免费| 那里有AV网址| 五月丁香亭亭操逼| 激情国产综合| 六月色丁香中文字幕| 九九热欧美| 日本欧美999久久久三级片| 天天五月丁香五月| 99婷婷| 久久艹网| 婷婷五月伦理网站| 5月丁香综合图区| 另类视频在线| 97人人超| 伊人99热| 五月天激情视频| 六月婷婷网| 亚洲 无码 中文字幕 中出| 26uuu精品一区二区| 激情婷婷护士激情| 2025年最新亚洲在线欧美| 国产亚洲精品久久久久久牛牛| 啪啪 综合网| 激情五月,激情综合网| 最近中文字幕2019视频1| 97婷婷狠狠| 五月丁香六月色| 99操九九网| 97干婷婷五月天| 色五月婷婷在线| 婷婷久久综| 99热色精品| 中文AⅤ大全| 亚洲精品色色色| 久九男女天堂| 天天干天天操天天爱| 专区无日本视频高清8| 丁香五月婷婷超碰在线| 可以免费观看的AV| 久久五月婷婷开心网| 超碰v| 亚州视频九九99| 天堂无码人妻精品AV一区| www,8050,午夜三级| 五月丁香久久| 狠狠狠狠免费| 久久99激情五月天| 少妇搡BBBB搡BBB搡毛茸茸 | www.五月婷婷| 国产精产国品一二三在观看| 久色五月婷婷综合| 丁香花操逼| 天天干,天天日| 久久久久98| 亚洲激情综| 久久9精品| 91丨九色丨熟女高潮| 轮奸综合网| 日韩色五月| 99综合99| 狼人久草| 五月天婷婷深深爱| 激情五月丁香色色去久久| 91午夜激情| 91视频精品99| 欧美韩国日本| 久久久免费精彩视频| 人人操 色| 婷婷五月丁香久久| 激情二色月| 超碰A V在线| 丁香五月激情网| 狠狠色婷婷7777久| 色www99| 99热国产免费| 伦乱美欧| www综合久久| 日本不卡中文字幕| 激情激情激情网| 99玖玖精品| 久久久WWW| 五月激情丁香久久综合网| 99热8在线| 色综合中文| 日操| 国产avapp 网| 日本波多野结衣视频| 99er免费在线观看| 特级操b片| 99这里都是精品| 五月成人网天天| 九九九九大香蕉| 久热婷婷| 狠狠狠狠狠干| 午夜爱爱爱成人| 五月丁香在线观看99| 另类专区在线观看| 停婷丁五月在线| 这里只有精品在线视频精品| 成人丁香五月婷| 日韩精品AV一区二区三区| www.婷婷五月| 丁香婷停五月激情综合深爱| 久久婷婷五月天激情新地址| 色伊人啪| 色爱综合五月| 丁香操逼| 亚洲av| 久久99网站| 色色色色色色网站| 成人丁香婷婷五月天| 久久三级视频| 99re在线视频| 五月婷婷婷| 久久五月婷婷综合网| 丁香五月性| 日日噜噜夜夜狠狠久久丁香五月| 天天添天天摸天天天天做| 91久久久久久久久| 大香蕉婷婷丁香视频在线| 亚洲天堂制| 亚洲情综合五月天| 超碰99在线观看| 五月婷婷丁香综合| 99精品视频偷拍| 日本五月婷婷| 国产在这里只有精品| 婷婷五月久久| 色婷五月| 性天天中文网| 五月天五月天激情网| a v色婷婷| 亚洲综合新99视频| 丁香午月AV中文字幕| 色综合久久88色综合天天看| 丁香五月777| 91精品国产色猫| 另类五月激情| 婷婷五月丁香综合瑟瑟| 日韩久操婷婷| 成人丁香五月婷| 91jiuseshunv| 久久综合五月婷婷| 久久婷婷五月综合啪| 99视频极品在线香蕉| 天堂二区| 欧美VA视频| 久久玖玖综合| 亚洲天堂爱爱| 色五月之第四色| 五月婷婷色综图片| 五月婷婷丁香六月在线| 色五月首页| 五月天伊人网| 九九热99视频| 亚洲无码99| 99热这里| 综合久久综合五月天婷婷| 久草婷| 久久五月情| 九月婷婷色色| 久久机热这里只有精品免费视频| VA国产在线综合网站| 深爱网深爱综合网| 亚洲视频图片婷婷五月| 91色婷婷综合久久中文字幕二区| 91狠狠色丁香婷婷综合久久精品| 欧美A级成人婬片免费看理论| 亚洲中文字幕翔田千里| 啪啪丁香五月| 99 频99热国里只有精品| 日日干夜夜撸夜夜骑 | 韩国情人在线电视剧免费观看高清版全集| 九月婷婷综合八月丁香在线观看| 四月婷婷丁香| 9久久久久久久久久久| 六月婷婷中文字幕| 香蕉99网| 九九热这里只有精品首页| 天天成人五月天| 99亚洲色| 人人爱国产| 亚洲成人无码专区| 综合视频久久| 色婷婷影音| 五月婷婷五月天在线| 五月婷婷丁香| 日韩野外 无套| 激情六月婷婷| 天天舔天天摸天天透| 荷兰av一级| www.zbzhongsen.com| 五月天婷婷色综合| 人人干天天舔| 精品99视频| 午夜性做爰电影| 97热超碰| www.色婷婷。com| 色色色99| 嫩模草| 婷婷五月天综合激情| 人人操人人爱丁香五月| 久热大香蕉| 婷色视频| 五月亭亭综合五码| 天天干天天干天天| www.久久爱.com| 五月丁香久久久| 级情九色| 久久大香蕉同僚| 九色视频这里只有精品| 亚洲色在线观看| 五月丁香 狠狠爱| 婷婷丁香69精华| 婷婷深爱五月| 97人人操人人插| 婷婷五月天日本无码| 91蜜桃婷婷狠狠久久综合9色| 182tv992tv人之初午夜免费观看| 丁香婷婷免费| 婷婷大香蕉| 色色色干| 91热在线| 婷婷狠狠18禁久久| 久久丁香久久| 欧美婷婷色| 九九综合视频在线观看| 日韩欧美颜射| A片一曲| 婷婷五月色情| 97超级操操| 淫荡综合网| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | 综合久久十三| 色婷婷社区| 色播五月婷婷综合| 中文字幕av在线播放| 成人五月丁香花| 日本va欧美va精品发布视频 | 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 伊人丁香五月婷婷潮吹| 天天射色五月天| 天久综合91综合首页| 激情婷婷五月女| 婷婷色网| 深爱五月综合网| 久热这里只有精品6| 五月天婷婷操逼视频| 色五月丁香婷婷久草| 综合精品啪啪| 99久久五月婷婷| 中文字幕亚洲-区久久99婷婷| 激情综合色播| 丁香五月激情网| 五月丁香在线| 9999久久久久| 婷婷导航| 欧美黑人巨大猛烈cuckold| 国产精产国品一二三在观看| 久久婷婷五月丁香| 大香人妻| 色五月成人| 五月丁香福利| 1000部毛片A片免费观看| 99热这里只有精品手机在线观看| 国产99久久久国产精品免费看| 色五月婷婷视频| 超碰妻人人| 激情综合网五月激情网| 日本一级特黄大片AAAAA级| 色啪综合| 99无码视频| 香蕉婷婷| 午夜性爱影视一区77| 精品9久| 激情五月丁香亭亭| 日本妈妈乱| 1024操逼| 蜜臀av粉嫩av懂色av| 91狠狠色丁香婷婷综合久久精品| 欧洲MV日韩MV国产| 免费视频99| 日本片日本片祼观看网站在线看中文版网页在线看 | 五月天婷婷色| 亚洲十月婷婷综合| 婷婷色五月天色色| 深爱婷婷网| 五月婷婷久久爱| 五月丁香中文婷婷中文| 狠狠色噜噜狠狠狠888| 狠狠色狠狠色综合日日91| 色五月情| 99re热在线视频| 五月天婷婷六月| 久久国产高清| 国产看真人毛片爱做A片| 婷婷射丁香| 99爱视频精品| 岛国资源站| 五月婷婷色播| 久久人妻精品| 激情丰满熟妇五月| 99色网站| 91综合网| 强辱丰满人妻HD中文字幕| 激情综合网五月天| 色婷婷综合五月| 91狠狠色色丁香婷婷综合久久| 无码少妇高潮喷水A片免费| 俺去也在线视频| 狼友超碰| 欧美色片中文字幕久久久久| 九九热视频思思| 五月丁香激情啪啪| 超碰AV成人| 成人做爰黄A片免费看直播室男男 A片试看120分钟做受图片 | 99在线播放视频| 99热99re6国产在线播放| 综合亚洲六月婷婷在线| 亚洲AV成人无码电影| 中文字幕在线免费观看视频| 99热综合在线观看| 最新av在线观看| 九月丁香久久网| 国产这里只有精品| 五月天综合在线观看视频| 亚洲色碰| 99热综合在线观看| 性色做爰片在线观看WW| 五月综合视频| 99色精品| 久久五月丁香| 噜噜色婷婷| xfplayav在线| 五六月丁香激情视频| 久久久久久xxxxx| 日韩一级片| 亚洲小电影在线观看黄999| 免费在线观看av网站| 九九热青草| 国产69久久久欧美黑人A片| 99在线精品视频| 黄色AV日韩| 91操在线视频| 青青草tp| 色999亚洲人成色| 九九99九九99九九99视频网| 色五月丁香六月欧美综合| 欧美日本一区二区三区| 先锋男人99资源| 综合激情五月综合激情五月激情1| 五月丁香网视频| 五月天激情影院| 日本欧美在线| 九九RE视频在线精品| 日本啪啪网| 色综合网址| 国产成人av在线| 久草婷婷| 五月丁香激情婷婷综合字幕| 思思热再线视频| 99爱视频免费看| 亚洲va欧美va国产综合久久久 | 99色干| 日本一级一级一级一级| 在线观看熟女少妇| 日本www五月婷婷| 五月天久久婷婷婷| 逼里香不卡| 色色色com| www.色婷婷.com| 99久视频| 7EzOBIhNq85TO| 色99最新网址| 久婷自拍视频| 久久精品婷婷| 2023天天日夜夜爽| 激情五月婷婷丁香| 亚洲另类婷婷综合| 99网| 久久人操-久草婷婷-成人AV| 色色色地址| 性爱动图国产麻豆一区二区三区| 色五月五月丁香| 日日夜夜婷婷| 久热99热| 99热66| 99热这里只有精品3| 色情五月综合婷婷| 99热这里是精品| 欧美黄色一级录像| 色五月色图| 青青热久精品视频在线观看| 婷婷伊人网| 深爱五月激情五月| 91人人人人人人人| 成人视屏在线观看| 丁香五月成人在线| 大香蕉中文| 国产SUV精品一区二区6| 99精品超在线播放| 小视频aaa久久久| 天天日夜夜帕| 亚洲午夜av| 色玖玖网| 久久婷婷五月丁香网| 天天综合干| www.色婷婷| 内射干少妇亚洲69XXX| 日韩伊人大香蕉| 成人在线精品| 婷婷五月天六点丁香五月| 大香蕉九九| 狠狠色婷| 色综合播放| 欧美日本国产欧美日本韩国99 | 丁香五月婷婷少妇| 这里只有精品视频在线观看免费| 婷婷丁香18| 香蕉AV福利精品导航| 97超级碰碰碰| 五月婷婷网五月在线| 天天天天操| 激情九月天天天天婷婷| 色狠狠色狠狠| 久久五月综合| 日本久久婷| 狠狠草狠狠草| 五月丁香婷婷五月色| 婷婷激情小说网| 99色综合| 91日综合欧美| 人人操Av| 99这里有精品视频| 91精品国产91久久久久青草| 99∨VTV| 中文字幕人妻一区二区| 99热这里只有精品13| www.久久99| 久99久视频| 五月婷婷丁香| 九九精品热播| 日本在线va| 五月 婷 久| 五月婷婷这里都是精品| 狠狠操狠狠| 五月天六月丁香| 草草视频91| 九九热视频99| 激情丁香六月| 久99热在线观看| 99乱视频| 九九狠狠干| 久久五月婷婷丁香| 久久99大全| 久草热视频在线观看| 久久久久九九九九视屏小说88| 三十路磁力链接| 内射人妻视频国内| 婷婷五月激情欧美大胆视频| 超碰亚洲欧美| 色爱终和网| 91九九九色在| 天天激情站| 日韩成人电影Av| 婷婷五月天视频| 色丁香五月| 久久网日本| 九九激情综合| 天天干一干| 天天天操天天天爰| 变态 另类 在线| 五月婷六月丁香| 婷婷情色五月| 97深爱伊人综合| 激情av| 热99久久这里只有精品| 人操综合| 婷婷六月天| 九九碰九九爱97超| 97人人草| 99色最新在线视频网站| 91啪啪啪啪| 狠狠狠激情网| 国产超碰在线| 青草性爱视频| 伊人久久婷| 国产成人av在线| 午夜色丁香| 99日本视频在线观看专区| 开心五月丁香婷婷| 97色在线| 亚洲综合在线伊人婷| 婷婷六月色开 | 99热www| 婷婷四色五月| 婷婷五月天亚洲天堂| 日本性视频| 91热网址| 婷婷五月花免费视频在线| 婷婷中文字幕欧美| 人妻少妇色综合| 亭亭丁香aV| 99久久久精品| 色色A| 九九色热| 欧美日韩色色| 亚洲天堂久久| av免费人人| 综合另类视频| 久久无码成人| 大香蕉婷婷色| 日本欧美国产| 五月丁香免费看| 亚州AV超碰人人操| 99视频内射三四| 日本三级第一页| 国产成人+综合亚洲+天堂| 婷婷丁香五月天小说| 色婷婷a| 国内自拍97在线| 六月丁香啪啪| 天天日,天天射,天天舔| 婷婷丁香五月天综合AV| 激情国产五月| 五月天婷婷久久| 五月婷婷av| 色五月久久成人婷婷| 天堂五月婷婷| 大香蕉综合视频在线| 国产 码在线成人网站| 九九热免费| 午夜一区| 婷婷九月在线| 丁香婷婷五月份| 综合性爱网| 五月婷婷丁香狠狠撸久久| 26uuu欧美日韩| 亚州婷婷五月激情综合| XX色综合| 天天日天天色| 色色色色色色色色五月先| 久热网在线视频| 青青热久久综合| 精品99在线看| 天天射色五月天| 五月天丁香色色| 五月婷色| 久久这里只有精品热在99| 丁香六月综合激情| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 婷婷五月丁香性爱| 天天射影院| 日韩无码专区| 五月婷婷丁香在线| 天天操无码| 五月婷婷综合潮喷| 26uuu欧美亚洲日韩| 亚洲网视屏| 色欧美一级| 欧美大片| 婷婷五月花| 99热首页| 综合网啪| 操逼巨乳91| 欧美这里只有精品| 国产日韩欧美| 日本色狠狠| 妻久久人久久| 五月丁香六月婷婷综合网站| 丁香六月久| 天天综合天天做天天综合| 五月婷精品| 综合大香蕉| 六月婷婷激情| 成人视频一区| 色婷婷五月天激情| 日本色噜| 婷婷五月天无码熟女| 激情综合网婷婷久久| 性小说五月天| 综合视频久久| 啪啪啪综合网| 六月婷婷网| 五月丁香好婷婷A片网| 婷婷六月激情丁香| 五月天婷婷香蕉狠狠超碰综合| 色婷婷成人久久| 超碰高清在线| 久久婷狠狠色| 99热r| 亚洲婷婷开心五月| 久久久久久综合五月婷婷| 丁香五月婷婷乱| 99视频网| 国产成人av在线播放| 97色婷婷| 成人无码精品1区2区3区免费看| 99久久66综合| 无码AV大香线蕉伊人| 99超碰人人| 丁香婷婷五月六月久久| 久久只有这里精品免费| 青草视频在线蜜臀| 天堂AV在线看| 天堂综合久| 激情五月天偷拍综合网| 亚洲成人在线播放| 亚洲精品又粗又大又爽A片| 激情 久久 婷婷| 婷婷五月天亚洲综合| 天天射美女| www.久久五月天.com| 欧美激情综合色丁香婷婷五月天| 手机旧版看人妻1025| 五月天激情小说| 亚洲av另类在线观看| 丁香五月综合久久综合| 亚洲精品网址| 天天天操天天天爰| 婷婷五月色播放| 亚洲九九视频| 国产熟女日日骚五月丁香爱| 天天爽夜夜爽| 丁香六月欧美| 天天色丁香| 久热在线中文字幕色999舞| 婷香狠狠爱五月| 极品色丁香| www.色窝| 久久作爱| 五月天小说激情| 大香蕉520| 日韩在线五月天婷婷| 91色综合| 99久热在线精品99re6热| 色噜噜综合网| 草逼大片| 东京热免费视频| 激情中文在线| 日本va视频| 人妻久久久久久久 | 九月婷婷人人操人人舔人人爱| 99久.| 99热在线免费| 丁香五月成人| 熟女网站久久| 五月婷婷激情综合视频| 色综合99| 日本人人干| 九九热婷婷| 密臀久久| 五月丁香久久| 日逼AV影音先锋男人资源站| 婷婷精品免费久久| 激情综合丁| 中文字幕在线免费观看视频| 久久久久久久久久91| 五月停停丁香| 最近中文字幕在线中文视频| 情色五月天网站| 丁香五月电影| 人妻激情久久| 婷婷丁香第一页| 成人看片网站| 五月婷婷影| 99无码黄色视频| 五月丁香六月激情| 五月丁香婷婷色色| 九九热这里只有精品一| 天天天天天日| 五月丁香激情综合网| 久综合色| 大香蕉久热| 午夜丁香 婷婷| 色综合色综合网| 色婷婷五月天成人网| 天堂网亚洲色图| 26uuu亚洲欧美| 中国操逼99| 婷婷激情综合无月| 九九色影院| 九九av| 五月婷婷六月丁香| 全高清无码视頻| 天天做天天爱天天高潮| 丁香香蕉婷婷| xx人人xx| 国内久久亭亭| 激情五月天网站| 婷婷欧美激情| 色婷婷国产精品综合在线观看| 九色porny在线观看激情四射| 国产精品成人av在线观看春天| av在线婷婷| 思思99久久| 91久久精品无码一区二区三区| 婷丁香五月天| 91大神操美女| 五月天堂色| 亚洲六月色| www久久99| 夜夜干天天操| 婷婷成人综合免费视频| 777精品久无码人妻蜜桃| ji'qing'luan'ren'lun| 少妇人妻人伦A片| 九九免费在线视频| 久久九网| 丁香五月中文字幕久色| 色婷婷狠狠18yy| 婷婷无码五月天| 九九精品热播| 久久激情综合| 色五月丁香总合网| 欧美性生交xXxX久久久| 色婷婷五月天在线| 日本久久极品| 九九九色综合| 天堂爱爱| 九九99精品免费播放| 五月丁香婷婷基地| 99综合一区| 九月丁香| 丁香五月婷婷色偷偷| 97极品在线| 亭亭玉月丁香| 五月婷婷无码专区| 色色综合激情| www.五月丁香| 色婷婷六月开心中文字| 99热久久日本| 亭亭五月丁香五月天激情| 婷婷精品在线| 99ri国产精品| 狠狠色狠狠操| 久热这里只有精品在线| 思思久久99热只有频精品66| 丁香五月婷婷亚洲综合精品在线| 久久婷婷青青草| 亚洲色网络| WWW,激情五月天,COM| 免费无码毛片一区二区A片| 夜夜撸天天日| 东京热人妻一区二区三区在线| 国产综合色婷婷精品久久| 欧美日韩大黄| 亚洲成人无码片| 婷婷丁香五月天激情| 丁香 婷婷 亚洲 熟女| 开心五月婷婷综合在线精品素人| 26uuu| 亚洲日日操| 超碰电影在线播放| 国产小精品| 99免费在线视频| 丁香五月骚喷水视频| 狠狠爱婷婷丁香| 内射人妻视频国内| 色色日本欧美| 五月天成人手机在线视频| 色综合香蕉| 五月婷婷色欲| 成人看片网站| 99热99热在线| 99久久婷婷五月综合| 欧美色频| 六月丁香婷婷色69| 日韩精品一区二区亚洲AV观看| 久久婷婷五月| 色色色99韩| 97偷拍对白视频| 欧美操人| 婷婷伊人久久| 日日操夜夜骑| 婷婷爱爱蜜臀天天操| 99青青草99| 99ri精品| 激情床戏| 天天干天天操天天爽| 丁香婷婷六月天| 9l视频自拍9l九色成人| 中文字幕性爱视频| 色999亚洲人成色| 亚洲综合视频网| 亚洲综合色色色| 丁香久色| 五月丁香久久网| 超碰9| 欧美、日韩、中文、制服、人妻| 激情五月丁香五月| 五月综合视频| 色五月亚洲开心网| 五月婷伊人| 天天综合色丁香| 丁香六月婷婷综合| 色婷婷久久综| 天天综合影院| 亚洲人人干| 99在线观看这里都是精品| 91精品久| 久久久潮喷-久久久九九-成人AV| Blackedraw视频一区二区| 天天日本夜夜谢| 激情的五月| 五月停停色色丁香| 婷婷五月天综合久久| 亚洲另类av| 99资源在线| 97成人在线视频| 婷婷黄色网| 1024欧美看片| a级毛片一区二区免费视频| 亚洲三A| 色哟呦av| 99A片| Av在线资源| 色天使久久综合| 日韩欧美婷婷丁| 99色免费在线观看| 亚洲av成人电影在线观看| 亚洲精品成人片在线播| 极品少妇婷婷五月| 69久热| 久七香蕉| 久久女人天堂| 国产成人高清| 91日本在线| 亚洲性天天| 婷婷五月丁香高清无码| 森林影视大全,最好看的2019年视频 | 婷婷久久五月天亚洲欧美国产日韩在线观看| 婷婷综合中文字幕| 在线观看av网站| 五月婷婷丁香五月 | 91九色熟女| 色五月91| 亚洲无码成人| 欧美色色色| 色五月丁香激情视频| 99热这里只有国产精品| 五月婷婷网站| 狠狠色综合五月| 丁香六月无码| 天天狠狠色| av狠狠操| 五月停亭六月,六月停亭的英语 | 92久久久| 国产看真人毛片爱做A片| 日韩成人精品中文字幕电影| 五月色情婷婷| 永久热91| 丁香五月香蕉| 天天婷婷操| 欧州色色| 五月丁香啪| 97caop| 五月丁香六月婷婷激情四射| 99热爱爱干干日| 色噜噜狠狠色综合日日免费| 另类激情五月| 热思思| 婷婷五月激情中文字幕| 婷婷五月天社区| 国产FREESEXVIDEOS性中国| 六月婷婷综合| 成人短视频免费| 99色色网| 激情五月天色婷婷| 色欲婷婷五月天| 五月婷婷之综合激情| 婷婷视频网| 色婷婷色综合| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 六月婷婷网| 亚洲性爱干干| 亚洲色另类| 激情久久久| 色婷婷电影网| 狠狠色丁香婷婷五月| 夜夜骑日日操| 天天日夜夜爽| 国产精品激情AV久久久青桔| 色综啪啪| 91超碰在线观看| 色婷婷AV在线观看| 人人叉久| 婷婷四色五月| 久热超碰| 久久99久久久久久久噜噜| eeuus五月婷| 97久久人人操| 激情综合婷婷| 午夜日日| 99热成人在线| 色欧美一级| 欧美噜噜噜草| 综合XX网| 热久免费视频9| 五月婷婷免费视频| 色综合久| 色婷婷88| 97五月天| 色站9/| 99热这里精| 婷婷五月花| 都市激情久久| 伊人激情| 99久久精品国产色欲| 五月婷婷婷婷| 五月婷婷婷色| 婷婷五月伦理| 国产99久久久国产精品免费看| 国产婷婷色五月| 天天狠天天叉| 丁香青青五月天| 久久这里只有精品无码| 日本精品人妻无码77777| 六月欧美综合色情| 亚洲精品亚洲人成人网| av无码电影| 人人播| 日韩日比视频| 免费视频99| 婷婷伊人綜合中文| 五月天婷婷爱| 成人网页在线观看| 色久五月天| 婷婷丁香精品视频在线观看| 精品国产va久久久| 婷婷五月综合色小姐小说| 五月久久亚洲|