久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

Flutter鴻蒙化遷移實戰(zhàn):用dia依賴注入實現(xiàn)無感多端適配

Flutter鴻蒙化遷移實戰(zhàn):用dia依賴注入實現(xiàn)無感多端適配 最近 Flutter 社區(qū)里最熱鬧的事就是鴻蒙原生適配這條賽道。我手頭正好有個老項目核心依賴注入層用的是 dia 這個輕量庫趁熱把它遷到了 OpenHarmony 的 Flutter 分支上。整個過程比想象中順但也踩了不少教科書里不會寫的坑。這篇指南就是把我摸出來的路數(shù)完整復(fù)述一遍為什么選 dia 做解耦底座、它憑什么能“無感”橫跨 Android/iOS/鴻蒙三個平臺、真正的鴻蒙化適配要改哪些文件、以及構(gòu)建和運行時會遇到哪些詭異問題。目標(biāo)讀者很明確正在做 Flutter 鴻蒙化遷移、或者想在多端工程里引入依賴注入的開發(fā)者??赐昴隳苤苯诱罩挥迷倌弥?pub 上的老教程來回試錯。1. 為什么偏偏是 dia鴻蒙生態(tài)下的依賴注入選型老規(guī)矩先聊清楚“為什么是它”。依賴注入在 Flutter 生態(tài)里早不是什么新鮮詞get_it、provider、riverpod 滿天飛。可在鴻蒙適配這個場景里選型邏輯和純 Android/iOS 完全不同搞不好后面整個遷移都會卡殼。1.1 Flutter 鴻蒙化的現(xiàn)狀與痛點OpenHarmony 對 Flutter 的支持路線這兩年走得很快官方 SDK 分支已經(jīng)能跑起來不少純 Dart 項目但生態(tài)深度和安卓沒法比。最直觀的痛點有三個一是很多熱門的 pub 包沒做 OHOS 平臺適配尤其帶原生插件 (MethodChannel、FFI) 的基本一編就掛二是指標(biāo)采集、日志SDK、路由跳轉(zhuǎn)這類基礎(chǔ)組件沒有鴻蒙實現(xiàn)全得自己補三是構(gòu)建鏈路復(fù)雜經(jīng)典工程用 hvigor 編 HAP 包調(diào)試工具鏈和 Android Studio 那套完全是兩條路。然后你再把“工程解耦”這個訴求疊加上來。大多數(shù) Flutter 項目為了趕進(jìn)度業(yè)務(wù)模塊互相直接 importService 類滿天飛。這種結(jié)構(gòu)搬到鴻蒙上就是個災(zāi)難換一個平臺實現(xiàn)要改的不是一兩個文件而是關(guān)聯(lián)的一整片引用圖。能解決這個問題的唯一思路就是在架構(gòu)層引入“面向接口編程 依賴注入容器”讓業(yè)務(wù)代碼只認(rèn)抽象不認(rèn)實現(xiàn)。1.2 dia 與 get_it、provider 的取舍我在 dia 之前先用過 get_it也試過 provider。get_it 確實強(qiáng)大全局注冊、異步加載、作用域、自動注冊擴(kuò)展都有但它太重了。重到什么程度它的注冊風(fēng)格偏命令式你得在代碼里到處寫getIt.registerSingleton這對侵入性要求高的鴻蒙適配很不友好。provider 則是一套 Widget 樹狀態(tài)方案跟 DI 容器的定位壓根不是一回事。你當(dāng)然可以用它做服務(wù)定位但把邏輯和 UI 狀態(tài)綁定在一起跨端遷移時牽一發(fā)動全身。dia 的定位剛好是那個最優(yōu)解它是一個純粹的、無 Widget 綁定的容器實現(xiàn)核心 API 就幾個注冊、解析、移除、重置。代碼量小、零第三方依賴、純 Dart 編寫。最關(guān)鍵是它的注冊和獲取方式天然支持“類型到實例”的映射這讓鴻蒙適配可以做到非常干凈——需要替換某個實現(xiàn)時只在組裝層 (composition root) 改一行業(yè)務(wù)模塊全程無感。特性diaget_itprovider是否依賴 Widget 樹否否是支持類型映射解析是是弱容器生命周期管理支持重置與釋放部分支持無侵入性極低僅組裝層注冊中調(diào)用處需引定位器高UI 包 Provider鴻蒙移植成本純 Dart幾乎為零需要處理擴(kuò)展包兼容性需配合全局狀態(tài)改造1.3 dia 鴻蒙化后的價值無感替換與極端解耦“無感依賴注入”這個詞聽著玄其實說透了就一句話調(diào)用方永遠(yuǎn)不知道實際跑的是哪個平臺的實現(xiàn)。體現(xiàn)在鴻蒙化上就是用 dia 做了一個“平臺實現(xiàn)切換層”。以前你從 Android 遷到鴻蒙得在業(yè)務(wù)類里寫if (Platform.isOhos) ... else ...。有了 dia你在啟動時把接口綁定到 OHOS 實現(xiàn)業(yè)務(wù)代碼里只有Dia.getStorageService()至于背后是 Android 的 SharedPreferences 還是鴻蒙的 Preferences業(yè)務(wù)層完全不關(guān)心。至于架構(gòu)清流這個評價我理解是兩層意思。一層是模塊邊界干凈每個 feature 只暴露接口實現(xiàn)類全部下沉到 assembly 目錄另一層是構(gòu)建產(chǎn)物干凈dia 沒有碰任何 Dart SDK 內(nèi)部能力編譯期不需要代碼生成。2. dia 的核心機(jī)制解析容器、注冊與自動裝配很多初學(xué)者用 DI 庫只會調(diào) API不理解容器在內(nèi)存層面到底做了什么遇到問題就抓瞎。我在鴻蒙適配時想改一個注冊策略就是因為搞清了機(jī)制才能對癥下藥這塊必須展開講。2.1 容器是怎么設(shè)計的dia 的容器本質(zhì)上是一個類型到實例工廠的映射表類似MapType, InstanceFactory。它不是簡單地把對象塞進(jìn) Map而是維護(hù)了一條“如何創(chuàng)建這個對象”的指令鏈用哪種構(gòu)造函數(shù)、是否需要懶加載、是否需要單例、依賴的子服務(wù)有哪些。這個設(shè)計有個隱藏優(yōu)勢Dart 的泛型在運行時是真實存在的類型Dia.getFoo()傳進(jìn)去的Foo可以直接作為 Map 的 key不需要像 Java 那樣搞 String 字符串 key 的注冊表。這也是 dia 能保持輕量的原因之一。對比傳統(tǒng)new方式這塊邏輯上的差別太大了。傳統(tǒng)寫法里StorageServiceImpl的構(gòu)造過程散落在各個調(diào)用點以后換實現(xiàn)要一個個找。dia 把“怎么構(gòu)造”這件事統(tǒng)一收口到容器里調(diào)用點只需要說“我要一個 StorageService”。鴻蒙化時你只需要保證 OHOS 環(huán)境下注冊的工廠能正常構(gòu)造出 OHOS 實現(xiàn)其他代碼一行不用改。2.2 注冊與解析的工作原理dia 的解析流程一條鏈路大致是拿到類型 → 查映射表 → 獲取工廠 → 按策略創(chuàng)建實例 → 若依賴其他服務(wù)則遞歸解析 → 返回結(jié)果。以一段典型的注冊代碼為例// 初始化容器 final Dia dia Dia.instance; // 注冊接口到具體實現(xiàn) dia.registerStorageService(() OhosStorageService()); // 注冊單例 dia.registerSingletonAppConfig(AppConfig()); // 懶加載注冊首次使用時才構(gòu)造 dia.registerLazySingletonApiClient(() ApiClient( config: dia.getAppConfig(), ));這里的細(xì)節(jié)我后來才琢磨明白。register和registerLazySingleton的主要區(qū)別不是“內(nèi)存占用”而是構(gòu)造時機(jī)。鴻蒙設(shè)備上你希望 AppConfig 這種啟動就要用的配置對象立刻創(chuàng)建那就注冊成 eagerApiClient 這種耗資源的網(wǎng)絡(luò)客戶端最好等業(yè)務(wù)真正調(diào)網(wǎng)絡(luò)接口時才創(chuàng)建就注冊成 lazy。2.3 從 Dart 到鴻蒙dia 的可移植性判斷判斷一個 Dart 包能不能跑在 OpenHarmony 的 Flutter SDK 上我在遷移時總結(jié)了一套標(biāo)準(zhǔn)pubspec.yaml 里的依賴是否全部是純 Dart 包有沒有flutter:以外的基礎(chǔ) SDK 能力引用代碼里是否用了dart:ffi、dart:mirrors。mirrors 在 release 編譯模式直接不可用FFI 在鴻蒙上需要重新鏈接原生庫是否依賴了 Flutter 引擎的原生 API比如MethodChannel調(diào) Android/iOS 原生模塊。dia 在這三條全部命中安全性它的 pubspec 里幾乎只有sdk: flutter全程只用了dart:collection和dart:async這些通用庫。這就是為什么它能做到“鴻蒙化適配幾乎零成本”——不是我們做了多大改造而是它一開始就沒有綁死任何平臺能力。提示如果你打算遷移其他 Flutter 庫先按上面三條標(biāo)準(zhǔn)做個“可移植性體檢”比直接改代碼高效得多。我見過有團(tuán)隊把一個重度依賴 path_provider 的包硬遷到鴻蒙改了一周最后還是換成自己寫文件管理接口。3. 鴻蒙化適配的前置準(zhǔn)備動手改代碼之前先把環(huán)境和依賴梳理清楚。這塊沒弄好后面編一個錯一個而且錯誤信息還特別反直覺。3.1 確認(rèn) Flutter SDK 的鴻蒙分支OpenHarmony 官方社區(qū)維護(hù)了一份適配鴻蒙的 Flutter SDK 分支它和標(biāo)準(zhǔn) Flutter SDK 的主要差異在引擎層包含了鴻蒙的渲染適配、Ability 生命周期橋接以及針對 OHOS 編譯鏈路的配置支持。實際操作時建議直接把flutter命令指向這個分支。配置方式有兩種一種是把分支 clone 到本地后改環(huán)境變量FLUTTER_ROOT另一種是在 IDE 的 SDK 設(shè)置里指定。我更推薦用命令行因為 hvigor 構(gòu)建時經(jīng)常需要直接調(diào)用flutter_tools環(huán)境變量配置得好能少踩很多 shell 腳本的坑。3.2 把 dia 引入 OHOS 工程的三種方式引入方式適用場景優(yōu)點缺點pub 依賴dia 版本和鴻蒙分支 Dart SDK 完全兼容改動最小后續(xù)更新方便依賴網(wǎng)絡(luò)拉包純離線環(huán)境不可用path 依賴想鎖定某個本地版本或臨時修改 dia 源碼可控性強(qiáng)可打斷點調(diào)試每個開發(fā)者都要同一份本地路徑源碼拷入工程適配時深度定制容器行為完全自主失去上游更新后續(xù)維護(hù)麻煩首選方案肯定是 pub 依賴。但要注意鴻蒙分支的 Dart SDK 版本可能落后于標(biāo)準(zhǔn) Flutter 的最新版而 pub 上最新版的 dia 可能要求更高的 SDK。遇到這種情況用 path 依賴把你驗證過的 dia 版本固定下來dependencies: dia: path: ./third_party/dia這個操作還有個附加收益鴻蒙工程里經(jīng)常需要同時調(diào)整多個三方庫統(tǒng)一把源碼放到third_party目錄下維護(hù)起來比讓每個開發(fā)者各自改 pub 緩存清晰太多。3.3 依賴與混編檢查哪些庫會成為攔路虎我在做鴻蒙化前置檢查時列了一個“依賴檢查清單”照著排查再動手能省掉后面大量定位時間帶原生代碼的 Flutter 插件最典型的 path_provider、shared_preferences、flutter_secure_storage它們的 Android/iOS 實現(xiàn)不能直接用必須找鴻蒙版替代或自己用PlatformInterface補一套 OHOS 實現(xiàn)依賴反射/動態(tài)代理的庫部分序列化庫、ORM 庫在 Dart 里用了編譯期代碼生成 (build_runner) 還好一旦運行時反射就麻煩了涉及dart:io的庫鴻蒙分支對dart:io的支持已經(jīng)不是死角了但個別能力比如網(wǎng)絡(luò)套接字的底層實現(xiàn)仍可能和 Linux 內(nèi)核表現(xiàn)有差異遇到再說先不主動踩與函數(shù)式編程、流式處理相關(guān)的庫比如 rx_dart、fpdart 這類基本都是純 Dart通常沒問題。dia 完全不在攔路虎清單里這也是我敢拿它當(dāng)“鴻蒙化適配樣板間”的原因。你完全可以用它驗證整條鴻蒙適配鏈路是否通暢而不需要先解決一堆原生插件兼容問題。4. 實操核心適配步驟與關(guān)鍵代碼前面鋪墊了那么多現(xiàn)在進(jìn)入正題。我會按完整流程帶你走一遍創(chuàng)建 OHOS 工程、引入 dia、做雙端注冊、寫帶平臺差異的實現(xiàn)最后構(gòu)建驗證。4.1 第一步搭好 OHOS 的 Flutter 工程骨架OpenHarmony 的 Flutter 工程結(jié)構(gòu)比標(biāo)準(zhǔn) Flutter 工程多了一層鴻蒙的工程外殼因為最終產(chǎn)物不是 APK 而是 HAP (HarmonyOS Ability Package)。一個最小工程結(jié)構(gòu)大致長這樣my_app/ ├── ohos/ │ ├── entry/ │ │ └── src/main/ │ │ ├── ets/ │ │ │ └── entryability/ │ │ │ └── EntryAbility.ets │ │ ├── resources/ │ │ └── module.json5 │ ├── build-profile.json5 │ └── hvigorfile.ts ├── lib/ │ └── main.dart ├── pubspec.yaml └── oh_modules/EntryAbility.ets負(fù)責(zé)把 Flutter 的 View 加載到鴻蒙的 Page Ability 里。這里有個關(guān)鍵點鴻蒙的 Ability 生命周期必須和 Flutter 引擎的生命周期橋接好。如果只寫super.onCreate和loadName而不處理 onForeground/onBackground 的轉(zhuǎn)發(fā)Flutter 里的路由切換或后臺恢復(fù)時機(jī)就會出現(xiàn)問題。hvigorfile.ts里還要配置好 Flutter SDK 的路徑。如果flutter命令和鴻蒙分支不匹配第一輪構(gòu)建就會失敗而且錯誤信息往往指向一個和真正原因無關(guān)的文件。4.2 第二步完成 dia 容器的雙端注冊這一步是鴻蒙化適配里最“核心”的細(xì)節(jié)也是很多人在普通 Flutter 項目里沒搞透的容器一定要在 UI 構(gòu)建之前完成組裝。我在main.dart里寫了一個獨立函數(shù)來組裝Futurevoid bootstrap() async { WidgetsFlutterBinding.ensureInitialized(); // 初始化 dia 容器 final Dia dia Dia.instance; dia.reset(); // 確保熱重啟時容器是干凈的 // 注冊基礎(chǔ)服務(wù) dia.registerSingletonAppConfig(AppConfig.load()); dia.registerLogger(() PrettyLogger()); // 注冊平臺相關(guān)服務(wù)按當(dāng)前環(huán)境選擇實現(xiàn) dia.registerStorageService(() OhosStorageService()); dia.registerDeviceInfo(() OhosDeviceInfo()); // 注冊業(yè)務(wù)倉儲 dia.registerOrderRepository( () OrderRepositoryImpl( local: dia.getStorageService(), remote: dia.getApiClient(), ), ); } void main() { bootstrap().then((_) { runApp(const AppEntry()); }); }這段代碼有幾個要點。第一WidgetsFlutterBinding.ensureInitialized()必須在任何Dia.get()之前調(diào)用否則部分依賴 Flutter 引擎能力比如 PlatformChannel的服務(wù)在構(gòu)造時拿不到綁定。第二dia.reset()在熱重載場景下非常關(guān)鍵鴻蒙調(diào)試器支持熱重載如果容器狀態(tài)在上一次會話里殘留重載后就會跑出“幽靈單例”排查起來極其痛苦。第三容器組裝是異步的但沒有提前 await我用.then包裹啟動保證 runApp 之前所有注冊已完成。4.3 第三步用 dia 切換平臺實現(xiàn)類剛才注冊代碼里出現(xiàn)了OhosStorageService()這就是鴻蒙適配里“無感”二字的實體化。假設(shè)你的業(yè)務(wù)代碼原本這樣用class OrderDetailPage extends StatefulWidget { override StateOrderDetailPage createState() _OrderDetailPageState(); } class _OrderDetailPageState extends StateOrderDetailPage { late final StorageService _storage Dia.getStorageService(); override void initState() { super.initState(); _storage.save(order_cache, orderId); } }在 Android 階段容器里注冊的是AndroidStorageService到了鴻蒙階段你不需要碰OrderDetailPage任何一個字符只需要在bootstrap里把AndroidStorageService換成OhosStorageService。這就是無感替換的核心邏輯。更關(guān)鍵的是業(yè)務(wù)服務(wù)之間也通過 dia 傳遞依賴而不是自己 newclass OrderRepositoryImpl implements OrderRepository { final StorageService _local; final ApiClient _remote; OrderRepositoryImpl({ required StorageService local, required ApiClient remote, }) : _local local, _remote remote; }構(gòu)造函數(shù)的參數(shù)列表成了“需求清單”由 dia 在組裝階段統(tǒng)一“注入”。鴻蒙化時只要保證StorageService和ApiClient在容器里有對應(yīng)的 OHOS 實現(xiàn)OrderRepositoryImpl完全不需要意識到自己跑在哪個平臺。4.4 第四步構(gòu)建驗證與運行驗證工程配置完成、代碼組裝完成后進(jìn)入構(gòu)建環(huán)節(jié)。鴻蒙工程的構(gòu)建命令hvigorw assembleHap --mode module -p productdefault -p buildModedebug有兩點會直接影響構(gòu)建成敗。一是確保 Flutter SDK 分支與 hvigor 插件版本匹配我見過有人用標(biāo)準(zhǔn) Flutter SDK 去跑 HAP 構(gòu)建報了一堆莫名其妙的缺少引擎符號的錯二是首次構(gòu)建時鴻蒙分會加載 Flutter 引擎產(chǎn)物網(wǎng)絡(luò)不好會等很久但別中途強(qiáng)殺進(jìn)程強(qiáng)殺后緩存半殘第二次構(gòu)建會查不出來問題。構(gòu)建通過后用 hdc (HarmonyOS Device Connector) 安裝到真機(jī)或模擬器hdc install entry/build/default/outputs/default/entry-default-unsigned.hap運行起來后不要急著點頁面先在日志里確認(rèn) dia 是否正確完成了注注冊。我習(xí)慣在 bootstrap 末尾打一行容器健康日志dia.healthCheck(); // 檢查關(guān)鍵服務(wù)是否都注冊到了容器如果某個接口沒有注冊實現(xiàn)healthCheck 會直接拋缺失異常好在第一時間定位真正要查的業(yè)務(wù)邏輯問題別在啟動階段浪費半小時猜想哪一步漏了。5. 實戰(zhàn)場景dia 在鴻蒙工程里的解耦玩法架構(gòu)是拿來用的不是拿來曬的。下面三個場景是我在這個項目里實際跑過的代表了三類最常見的鴻蒙遷移痛點。5.1 場景一網(wǎng)絡(luò)層直接換實現(xiàn)Flutter 項目最常見的網(wǎng)絡(luò)層就是 Dio。Dio 本身是純 Dart 包鴻蒙上可以正常使用但很多線上應(yīng)用的網(wǎng)絡(luò)層在上層封裝了攔截器、日志、證書校驗這些實現(xiàn)和平臺或多或少有耦合。我在遷移時抽象了一個HttpDriver接口abstract class HttpDriver { FutureHttpResponse get(String url, {MapString, String? headers}); FutureHttpResponse post(String url, {MapString, dynamic? body}); }Android 和 iOS 下直接注冊 Dio 的實現(xiàn)dia.registerHttpDriver(() DioHttpDriver( dio: Dio(BaseOptions(baseUrl: https://api.example.com)), ));鴻蒙下如果發(fā)現(xiàn)某些網(wǎng)絡(luò)行為需要適配 OHOS 的證書邏輯我補了一個OhosHttpDriverdia.registerHttpDriver(() OhosHttpDriver( ohosContext: ohosContext, // 從 EntryAbility 傳入 ));業(yè)務(wù)模塊原先各種Dio().get(...)的地方現(xiàn)在統(tǒng)一Dia.getHttpDriver().get(...)。這套改完之后從 Android 切到鴻蒙只需要啟動時換一行注冊。更妙的是所有頁面代碼甚至不需要重編。模塊之間的網(wǎng)絡(luò)依賴關(guān)系在結(jié)構(gòu)上變成了“單行道”頁面 → HttpDriver 接口 → dia 容器 → 具體實現(xiàn)這種單向依賴把可測試性也順帶提上來了。5.2 場景二平臺通道的注入式適配鴻蒙適配里最麻煩的一件事就是平臺通道。你不可能把原生代碼直接拿過來只能重新寫一套 OHOS 的 MethodChannel-Style 實現(xiàn)這個場景下 dia 的價值不是“換實現(xiàn)”而是“按平臺裝配通道”。假設(shè)業(yè)務(wù)里有這樣一個獲取設(shè)備唯一ID的方法class DeviceId { static FutureString get() async { const channel MethodChannel(com.example/device); return await channel.invokeMethod(getDeviceId); } }頭鐵的做法是改成if (Platform.isAndroid) ... else if (Platform.isOhos) ...。而 dia 的做法是先定義一個接口abstract class DeviceIdProvider { FutureString getDeviceId(); }Android 下注冊走M(jìn)ethodChannel的實現(xiàn)鴻蒙下注冊走 OHOS 原生側(cè)實現(xiàn)dia.registerDeviceIdProvider(() OhosDeviceIdProvider());業(yè)務(wù)方只拿接口。而且這樣還可以順帶解決一個實際問題MethodChannel 的字符串 key 在 Android 和鴻蒙之間要做 name 空間隔離否則兩個平臺的原生代碼在混淆時可能會出現(xiàn) channel 名沖突隔離機(jī)制也可以包在實現(xiàn)類里不污染業(yè)務(wù)。5.3 場景三模塊間依賴的延遲裝配鴻蒙應(yīng)用啟動時系統(tǒng)對后臺任務(wù)和資源加載是有限制性策略的如果啟動階段塞太多非必要初始化很可能會觸發(fā)系統(tǒng)的資源管控甚至導(dǎo)致首次啟動白屏?xí)r間過長。dia 的懶加載機(jī)制正好治這個病。像日志上傳、埋點推送、圖片緩存這類模塊我全部注冊成 lazydia.registerLazySingletonAnalyticsService(() AnalyticsService()); dia.registerLazySingletonImageCacheManager(() ImageCacheManager());啟動時容器只創(chuàng)建一個超輕量的日志接口占位真正的AnalyticsService直到首次上報埋點時才觸發(fā)構(gòu)造。對用戶來說冷啟動更快對系統(tǒng)來說不會在啟動瞬間制造一堆并發(fā)任務(wù)。這里要特別叮囑一句懶加載不是白拿的必須在接口的注冊處寫明這個實例“什么時候能建什么時候不能建”。我在一個位置延遲加載了某個依賴數(shù)據(jù)庫連接的服務(wù)等到頁面調(diào)用時才構(gòu)造結(jié)果第一次調(diào)用卡了 300ms。解決辦法是給這個服務(wù)拆出一個isReady狀態(tài)配合 dia 的isRegistered方法做前置判斷確保調(diào)用時實例已經(jīng)完成了預(yù)熱。6. 踩坑記錄與排查速查表無論理論講得多漂亮真跑起來一定會遇到問題。這節(jié)專門記錄我在鴻蒙化過程中實打?qū)嵅冗^的坑以及沉淀下來的排查思路。6.1 我踩過的四個典型坑坑一Dart SDK 版本不匹配導(dǎo)致 pub get 失敗鴻蒙分支的 Flutter SDK 版本通常落后官方主干幾個版本而 dia 或者其他最新依賴包要求更高的 SDK。報錯經(jīng)常是The current Dart SDK version is 3.2.0, but dia requires 3.4.0.解決思路不是硬換 SDK而是去跟 dia 的 pubspec.yaml 里看到的兼容范圍取交集。我用的是environment: sdk: ^3.0.0的 dia 版本鎖到 path 依賴?yán)飭栴}當(dāng)場消失??佣嶂剌d后容器狀態(tài)殘留在鴻蒙調(diào)試器上按 R 熱重載第一次啟動業(yè)務(wù)正常第二次再啟動時頁面里出現(xiàn)了舊數(shù)據(jù)甚至有的頁面崩潰。排查了半天最后發(fā)現(xiàn)是 dia 容器里的單例沒有被清掉舊的 StorageService 持有舊工程的緩存路徑。解決方案就是前面說的在bootstrap最開頭調(diào)用dia.reset()并給容器做一個冪等的初始化保護(hù)if (Dia.instance.isInitialized) return;坑三注冊順序?qū)е逻\行時依賴缺失dia 解析是遞歸的比如OrderRepository依賴StorageService如果StorageService還沒注冊O(shè)rderRepository在構(gòu)造時就會拋 “No provider found for StorageService”。我一開始是隨意寫的注冊代碼后來改成把注冊列表拆成“基礎(chǔ)層、平臺層、業(yè)務(wù)層”三段每一段按依賴關(guān)系從基礎(chǔ)到上層排列還加了注釋。這個習(xí)慣在鴻蒙化這種多端環(huán)境下尤其重要因為不同的平臺實現(xiàn)可能注冊順序不一致。坑四混合編譯下產(chǎn)物中有兩個容器實例這個坑比較隱蔽。Flutter 引擎在鴻蒙工程里可能被同時掛在 entry 模塊和某個公共庫模塊下如果 dia 的代碼被編譯進(jìn)了兩個不同的har產(chǎn)物運行時就會出現(xiàn)“兩個容器”的假象你在這個模塊注冊的服務(wù)在另一個模塊Dia.get()拿不到。解決方法是檢查 HAP 產(chǎn)物里的 so 和 lib確認(rèn) dia 的 Dart 代碼是打在一個共享模塊里而不是多處重復(fù)編譯。這也是我前面推薦把 dia 源碼放到third_party統(tǒng)一管理的原因之一。6.2 問題排查速查表這里整理了一張速查表按癥狀、可能原因、解決思路三個維度列出來。毫不夸張地說鴻蒙適配 90% 的問題都能在這張表里找到對應(yīng)。癥狀可能原因解決思路啟動即崩日志里有No provider注冊順序不對或漏注冊檢查 bootstrap 各層注冊順序補齊缺失綁定頁面數(shù)據(jù)是上一輪的舊值容器狀態(tài)熱重載后未清理在 bootstrap 開頭調(diào)用dia.reset()pub get 報 SDK 版本沖突dia 與鴻蒙 Dart SDK 版本不匹配改用 path 依賴鎖定兼容版本HAP 里服務(wù)無法跨模塊獲取多份編譯導(dǎo)致多容器實例統(tǒng)一產(chǎn)物模塊確保 dia 編譯進(jìn)公共包子產(chǎn)品第一次調(diào)用某服務(wù)卡頓懶加載實例構(gòu)造太慢拆分服務(wù)預(yù)熱邏輯或用isRegistered判斷狀態(tài)日志打印完整但頁面白屏Flutter 引擎與 Ability 生命周期橋接缺失檢查 EntryAbility 的 onForeground/onBackground 轉(zhuǎn)發(fā)構(gòu)建時找不到 Flutter 引擎產(chǎn)物SDK 分支與 hvigor 插件不匹配核對分支版本并清理.flutter本地緩存6.3 獨家避坑技巧最后再分享兩個純經(jīng)驗的東西。一個是打印容器注冊清單。我常在 bootstrap 完成后把 dia 里所有注冊的接口和實現(xiàn)類打印出來一眼能看到有沒有遺漏、有沒有錯誤綁定。這在跨端適配時幾乎是無價的功能因為你沒法靠肉眼在一堆文件里找出隱蔽的“指向 Android 實現(xiàn)的殘留引用”。另一個是小步切換策略。別試圖一夜之間把整個項目從 get_it/provider 切到 dia。先挑一個模塊做試點比如只把存儲服務(wù)切過去等驗證了這個模塊在鴻蒙真機(jī)上能跑通再逐步把網(wǎng)絡(luò)、設(shè)置、用戶中心一個個模塊遷進(jìn)來。我在項目里就是這樣做的第一個模塊跑了三天才穩(wěn)定后面的模塊基本一天一個。7. 結(jié)語一次遷移三層收益說實話一開始做這個鴻蒙化適配的時候心里沒底生怕 dia 這種小眾庫在鴻蒙 SDK 上出幺蛾子。但跑完之后回頭看它帶來的收益遠(yuǎn)超“能上鴻蒙”這一個目標(biāo)。第一層收益是真正的多端能力同一套業(yè)務(wù)代碼Android、iOS、鴻蒙三端跑得完全一致平臺差異只在組裝層體現(xiàn)代碼修改量小到幾乎可以忽略。第二層收益是工程結(jié)構(gòu)被迫變好了為了適配我把原來散落各處的服務(wù)實現(xiàn)收斂到了各個接口背后整個工程的依賴圖變得非常干凈新同學(xué)看代碼也能很快就明白架構(gòu)邊界。第三層收益是測試成本下降因為業(yè)務(wù)邏輯不再依賴具體平臺實現(xiàn)單元測試直接 mock 接口就能跑不用再起模擬器。這個收益在項目后期特別明顯。所以如果你正在做 Flutter 鴻蒙化或者準(zhǔn)備做我建議先別急著改業(yè)務(wù)先把依賴注入的基礎(chǔ)打好。dia 是個很好的起點輕、穩(wěn)、可移植性極高。你在它身上投入的時間后續(xù)會在每一次多端適配中連本帶利都賺回來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
特污免视频| 国产美脚女优尤物在线观看| 五月开心久久AV官网| 色九久| 懂色中文一区二区三区| 国产精品岛国片在线观看| 91女人的网站| 免費黃色視頻觀看一| 91伊人影视综合| 久久视频,这里只有精品| 东京热男人的天堂| 久久久激情| 吊色| 99热只有这里有精品| 欧美老熟另类| 中文字幕一区二区视频在线观看| 色婷婷丁香五月| 亚洲性刺激| 国产在线视频午夜精华在 | 99久久99九九99九九九| 男女啪啪网站免费视频| 日本孕妇一区二区视频操逼免费看| 大香蕉在线视频重口味毛片在线| 熟妇在线视频一区二区| 婷婷久久大香蕉| 变态乱伦伪娘灌肠一区二区| 一级性爱视频免费观看| 国产精品人妻免费精品| 欧美色性情| 99后入| 欧美色日本| 国产乱弄免费在线视频。| 大香樵伊人网| 激情综合网激情五月天| 不卡码视频| 麻豆视频test| 亚洲狼狼干综合1| 人妻激情偷乱视频一区二区三区 | 色淫网站优优视频| 日韩精品-原创伙伴| 91性网| 男人的天堂VA| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 免费亚洲黄色视频在线观看| 精品人妻中文字幕4399| 日本操BAV| 婷婷伊人| 一区,二区,三区网站| 人妻夜夜爽天天爽麻豆三区网站 | 夜夜春夜夜操| 中文字幕精品探花视频| 天天看天天干| av在线一区二区三区| 久久透逼视频| 亚洲色图殴美色图激情乱伦| 亚洲精品欧洲精品| 2020中文字幕在线| 久热一区二区| 91亚洲人| 蜜乳视频网站| 大香蕉婷婷| 国产免费一区在线观看| 丁香婷婷色五月| 久久一级无码精品毛片6| 亚洲综合九九| 久久9亚洲| 久久香蕉超碰97国产精品| 日韩av熟女一区二区三区成人| 亚州成人a∨| 麻豆天美久久91| 俺去久久| 国产熟女二区| 怡红院成人视频| 免费操逼91| www熟女乱伦com| 俄罗斯一区二区视频在线观看| 一区二区三区黄色片a| 国产熟女免费观看久久| 男人的天堂网免费| 久久少妇视频| 性欧美91| 天天操夜夜嗨| 麻豆黄色五月天| 黄色小说亚洲| 日韩日韩日韩-国产乱码精品一区二区| 亚洲图片欧美另类综合免费视频大大香| 啊啊啊啊,啊啊好多水| 亚洲第一男人天堂| 浓厚中出中文字幕在线| 大香蕉综合| 伊人久久国产免费观看视频| 美女黑人91神马| 91精品国产91久久久久久久久久久久| 亚洲国产美女久久久久| 夜夜做夜夜爽精品视频| 91东北熟女| 精品偷拍13p欧美dodk视频| 五月天社区| 歐美一級亂黃99在綫精品| 亚洲少妇激情一区二区三区| 懂色av一区二区三区天美传媒| 日韩亚洲国产视频| 日本青青草在线| 97精品网站| 蜜臀久久99精品久久久电影| 国产又粗又又黄又猛| 欧美 日韩 另类 亚洲| 上床啊啊啊| 大香蕉专区| 中文字幕一区 二区三四五 区日 日骚| 2017大香蕉国产精品久久| 亚州性9| 日本不卡高清视频| 在线女人91| 精品一级| 亚洲综合另类小说色区亚洲成av人片在www| 操操啪| 久久成人网站| 精品v日韩欧美国产| 久久久婷| 国产精品免费久久久久久久久久| 天天综合~91入口| 99精品无码| 国产亚卅97| 天天操妹子| 东亚亚洲无码高清| 欧美综合自拍亚洲综合图| 翔田千里Av在线| 日本精品人妻少妇一区二区| 另类天堂| 婷婷三区| 婷婷色色五月天福利| 日韩另类色图| 中英熟女操女| 久久中日麻豆| 另类一区| 欧美日韩国产精品久久色婷婷| 91伊人久| 中文在线久久字幕| 亚洲啪啪视频一区二区| 精品传媒在线一区| 精品大久久| 精品九九| 亚州再线| 日本理论在线| 91搡老女人老妇女老熟女歌词翻译| 九月丁香| 一起草三级AV电影在线观看 | 亚洲人妻中文高清| 激情文学亚洲| 婷婷久久五月天| 欧美性性性| 六月婷婷激情| 婷婷伊人五月| 少妇九九九九| 91人妻超碰| 国模私拍一区二区三区神乳| 国产欧洲精品亚洲午夜拍精品| 亚洲女毛多水多21P| 欧美激情精品久久久| 抽插无码高清一区| 欧美色图 色综合图| 狠狠中文字幕| 丰满人妻一区二区三区大胸懂色| 四虎影视精品| 人妻日日夜夜精品| 欧美成人一区二区三区在线播放 | 国产第25页在线观看| 亚洲综合九| 操人91| 欧美色图小说综合| 人妻精品综合中文字幕在线| 被男人添B超爽视频| 亚洲美腿丝袜香蕉影视欧美成人| 婷婷三区| 亚洲精品三| 天天综合亚洲综合| 东京热99999| 亚洲另类久操网| 天天做日日做天天欢。| 白丝AV| 天天舔天天日天天射| 婷婷AV一区二区三区| 在线αⅴ| 久久欧美激情| AV男人天堂网| 亚洲高清内射| 亚洲av无码成人精品国产| 人妻精品视频一区二区三区 | 国产啊v在线免费播放| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 志村玲子视频一区二区| 国产AV色黄看到爽| av亚欧| 91精品少妇搡搡搡| 久久久久久久久久久999| 亚洲人人操| 99在线免费公开视频| 婷婷人妻激情| 蜜桃狠狠色伊人亚洲综合 | 国产第11页| 伊人97超碰| 黄网色一区二区三区四区精品| 蜜桃av色偷偷av老熟女| 日韩97超碰| 亚洲精品一卡二卡三卡福利视频网站| 天堂在线一区二区| 欧美成人精品一区二区三区| 91在线|亚| 色色丁香| 夜夜草网站| 欧美黄片视频在线观看免费 | 国产视频小说| 青青草白白色| 在线情色电影 91大| 丝袜狠狠草尤物人妻av91| 久久极品一区二区| 日本精品一区三区| 亚洲精品 大香蕉| 日本三级日本三级99| 国产精品视频一区二区三区八戒| 亚洲AV秘 精品久久老牛影视| 男女无套 免费网站| 96久久久久久久| 精品97久久| 人妻第一页| 欧美色图欧美| 色欧美亚洲| 久久久一区二区| 欧美在线视频观看一二三四区高清 | 欧美72网页| 久久綜合很很很| 亚洲色图欧美色图制服丝袜| 麻豆激情综合| 天天影视之亚洲综合网| 久久人| 麻豆三极片| 久久伊人最新网址视频| 久久中文字幕一区不卡| 日韩人妻播放| 久久黄色网址| 1204金沙人妻懂旧版免费| 亚洲日韩乱码中文无码蜜桃臀网站 | 97欧美精品| 成人线上超碰| 精品v日韩欧美国产| 秋霞蝌科网日本一区| 丁香五月电影| 日日夜夜骚| 欧美日韩青操| 九九伊人网| 99热这里| 最新精品久久蜜桃 | 波多野结衣一级视频| 中国大陆国产高清AⅤ毛片| 免费看日本操逼视频| 97操97色| 中文字幕精品三级久久久| 男人天堂2030| 亞洲久久直播| 国产丝袜美女诱惑| 九9精品| 97色网| av绯色| 综合熟女| 伊人在线大香蕉视频久久| 九热中文字幕| 国产日韩在线播放| 一区二区三区男女操逼黄色小电影| 日产国产精品中文久久婷婷| 国产成人五月天丁香花| 国产粉嫩出水在线播放| 热久久99999| JuliaAnnXXX888| 国产女同视频在线播放| 99国产精品人妻人伦| 天堂涩涩| 国产AV色黄看到爽| 亚洲综合色男人网| 国产伊人精品在线| 六月丁香婷| 亚洲黄a三级三级三级看三级| 成人免费性爱视视| 密臀成人视频久久久| 日本狂喷奶水在线播放212| 日本三级韩三级99久久| 青青欧洲黑| 久久五十路熟女人妻| 99这里有精品| 中文字幕97| 91久操| 青青草华人在线欧美在线| 国产又色又粗又黄又爽| 黑丝少妇麻豆| 91老熟女| 夜夜高潮夜夜爽高清视频一| 欧美中文综合| 精品久久久久久亚洲| 东京热AV男人的天堂| 黄色在线网站| 国产乱不卡| 日韩在线观看字幕精品| 熟女91网| 亚洲AV无码国产精品久久久久| 久久久111| 无码区蜜乳| 欧洲中文字幕| 富女玩鸭子一级毛片| 婷婷久草一区二区三区| 91看黄片| 97超碰精品成| 久久久久久AV无码免费网站| 亚洲激情深爱文学小说网站| 日本一区二区不卡精品| 青娱乐手机日韩在线视频| 黑人操一区二区| 大香蕉青青9| 亚洲成人久久一区二区| 熟女六十路| 97超碰总站| 日本色色色视频| 五月天AV资源| 亚洲色鬼| 亚洲国产精品9999在线观看| 亚av顶级裸体一区二区三区四区五区| 精品视频免费在线一区| 久久三区四区| 伊人久久久日韩一区| 男女激烈网站最新| 97 国产精品| 高清无码 国产精品| 欧美三四五区| 伊人大香蕉在线| 日本高清视频xxxx| 国产精品另类| 亚洲熟妇图片| 亚洲色 国产 欧美 日韩| 91模特在线观看| 国产一区96在线| 女性喷水高潮在线观看| 中文字幕二区| 人妻碰碰碰碰碰碰| 黄色av网站在线播放| 91 国产丝袜在线播放-百度| 一区=区三区视频| 人人贴人人摸| 亚洲成人激情小说视频| 欧美亚州综合网图片| 曰韩欧美国产传媒麻豆第一区| av爱爱爱| 极品色综合| 人妻精品一区二区全免费| 一个人免费HD91视频| 国产精品扒开腿做爽爽爽视频| 麻豆性爱视频在线播放| 大香蕉色十月| 亚洲精品中文字幕一区在线视频| 欧亚无码视频| 香蕉国产97| 亚州乱码中文字幕综合久久久| 97色婷婷| 一区二区视频在线播放| 欧美日韩免费性爱| 美国日韩黄片| 狠狠干91| 天天爱天天操| 青青草一本道福利视频| 天天干天天日天天射黄色片| 久久久久精| 国产伦精品一区二区三区在线观 | 人人爱人人操人人性| 国产1024在线播放| 超碰成人人人爽人人爽| 精品一区二区三区蜜桃臀赵总| 欧洲熟妇xxXx欧美老妇裸体 | 婷婷五月天色网| 99精品网站| 后入内射蜜桃臀| 欧美狠狠弄| 伦在线97| 后入式999| 欧美性五月| 久久久青青草| 日逼逼免费看| 97福利视频| 久久色激情一区二区三区| 91 国产丝袜在线放观看| 亚洲色图加勒比| 色网在线| 另类图片欧美激情综合| 97任你吞精| 人妻在线臀日韩| 神马九九九| 日本韩高清无砖码22o| 蜜臀久久99精品久久久久久无删减 | 日韩av色图| 搡老女人老熟女91老熟女综合网| 东亚亚洲无码高清| 射丝袜高跟鞋99| 人妻熟女一区二区三区在线| 超碰偷拍| 74成人在线| 91丨九色丨东北熟女| 97视频900| 日本国产欧美一区三区二区| 国产成人无码网站在线视频| 精品国产乱码久久久兰草影视| 欧美翘臀视频网站一区二区三区| 日韩国产中文字幕| 欧美性五月| 亚洲欧美在线观看2021 | 日本性一区| 一个国产在线综合网站| 久久综合日韩亚洲欧美| 在线观看中文字幕| 日韩AV片| 91综合色噜噜| 欧美1727免费观看视频| 日本熟妇浓毛hdsex| 怡红院视频在线| 亚洲av青草久久一区二区| 狠狠躁AV| 国产三级多多影院2022国产AA一级毛片无码 | 色乱二区| 中文字幕免费在线观看| 亚洲免费看片| 97视频在线| 欧美 综合 亚洲| 中国探花熟女| 天天看天天日天天操| 久偷拍| 国产91乱伦| 九99久久| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 26uuu国产免费观看| 欧美啪啪啪91| 超碰综合色| 337p大胆噜噜噜噜噜91Av| 91肉片| 蜜臀网址在线| 校园春色综合香蕉| 97欧美精品综合| 国产女性无套 免费观看| 九九九九AV| 国产精品亚洲四五区在线观看| 久久亚洲AV无码专区首页| 国产精品一区在线播放| 日日夜夜国产综合| 色五月婷婷久久| 大屁股人妻女教师撅着屁股| 97亚洲自在精品在线观看| 久久香蕉国产传媒一区剧情天美| 激情网色| 天天色黄色影院天天操| 人人搞人人插人人操| 91痴汉| 秋霞鲁丝午夜无码一区二区三| 久久久久久久久久久97| 韩日精品四区| 久久久影院| 免费强奸av| 超碰色男人操熟女| 一级毛片电影免费看| 久久东京热久久| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 青青青操| 色情亚洲日本成人| 330Dv国产女人终合视频极品人与兽| AA丁香综合激情| 久99视频| 操我啊啊啊啊啊| 久久嫩草国产成人一区| 日本不卡高清免v欧美日韩在线观看| 69精品少妇一区二区三区蜜桃| 97久久视频| 志村玲子视频一区二区| 青青草在线视频人人想人人上| 夜夜高潮夜夜爽| 久草男人天堂| 中文字幕黄色一起草| 91青青草| 美女操逼福利视频| 国产精品另类| 久久久一区二区三区三州| 国产高清吃奶免费视频网站| 操逼免费视频无码国产| 国产剧情AV不卡在线观看| 美女被艹尤物视频| 99热免费| 大香蕉中文网| 日日插夜夜| 免费看日产一区二区三区| 欧美日韩国产中文精品字幕自在自线,| 亚洲国产综合久久久性感熟妇| 青青伊人加勒比海| 欧美亚洲自拍另类人妻| 亚洲aV无码成人在线观看| 天美国产三级传媒| 97精品人妻一二三四| 91丨国产丨白浆秘 洗澡动漫| 韩国午夜理伦三级好看| 9 7超碰在线免费观看| 91人妻久久久久久久久久久久久| 极品另类| 色眯眯射| 在线中文字幕| 第二页中文字幕| 亚洲黄色| www.超碰| 凌辱美少妇久久aV| 一区二区三区在线资源| 国产精品福利视频| 欧美另类色图片| 亚州黄站| 婷婷综合久久| 超碰天天去日穴| 少妇极品熟妇人妻无码| 97aiaiai| 久久精品国产精品| 亚洲偷拍自拍在线视频| 97日韩欧美亚洲| 久久精品性| 九九九久| 青青草吊丝| 天天弄天天操| 另类欧美| 99免费在线视频| 99re98| 夜夜高潮夜夜爽| 国产精品久久久久久亚洲色欲| 爱欲AV| 尤物一级在线免费观看| 人人妻人人玩人人澡人人爽| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 超碰97欧美在线| a男人的天堂久久一级A毛片| 97色碰| 麻豆黄四叶草网站| 一区二区三区激情在线观看| 91亚洲色图| 内射卯月麻衣| 在线综合 亚洲 欧美中文字幕 | 9久久精品| 中文字幕美女91| 九九九九九九九| 精品婷婷| 国产精品蜜臀久久久久无码AV| 超碰97.com| 99热在线不卡| 久草久热| 哈哈操电影AV| 日本一二区免费| 中文字幕性感少妇av| 无码人妻一区二区三区色欲aⅴ| 5252色欧美在线男人的天堂| 亚av顶级裸体一区二区三区四区五区 | 亚洲精品久久一区二区三区蜜桃臀| 97在线/亚洲| 天操天操夜操夜月操月年年操| 小少妇| 一区二区日韩欧美久久| 欧美三级中文字幕hd| 九九九九国产| 久久久久女教师免费一区 | 久久婷婷一区| 人人操人人肉久久精品| 外国免费性情大片| 97超碰9| 日本欧美不卡| 欧美AB在线| 欧美黄色手机在线观看| 亚洲图片日本AⅤ欧美在线| 乱伦图一区| 粉嫩粉嫩一区性色AV片| 久久99午夜精品一区人妻| 日韩国产乱子伦App| 欧美日韩 强奸乱伦| 久久欧美性爱视频| 五月天婷婷欧美三区| 天天操天天射青青草| 97自拍一区| 久热99999| 日本色日夜干| 3p国产欧美99热| 大香蕉伊人亚洲| 99在线精品观看视频中文| 国产欧美另类久久久精品课程| 91色色网站| 黑丝自慰喷水网站| 老鸭窝亚洲毛片| 国语对白露脸XXXXXX| 精品国产一区二区三区香蕉欧美| 九九综合久久| 超碰天天操你比| 91另类| 日韩中文欧美| 午夜久久久| 丰满人妻-区二区三区免费看| 搡老女人911熟妇老熟女| 强奸乱亚洲| 啊啊啊啊啊好大好舒服想要| 久久男人的天堂| 狠狠色婷婷7777久| 久久久久久久六六| 污色区网站| 91美女中出| 99久久免费看精品国产一区| 欧美日韩黄片精品在线| 天美传媒一二三区永久网站| 97日韩欧美亚洲| 一区二区三区 日韩欧美| 一区二区三区男女操逼黄色小电影| 一级AAA片一区二区三区| 91午夜无码| 91在线免费观看处女| 熟妇女伦乱视频| 欧美亚洲中文字幕| 偷窥自拍亚洲| 偷拍在线观看视频| 影音先锋乱伦资源| 国产一区二区久久| 国产亚洲99久久精品| 日本一区二区不卡| 精品国产国产AV| 亚洲最新中文字幕免费| 0755午夜福利视频| 香一区二区三区| 日韩欧美性爱电影在线观看| 一区二区三区 丝袜高跟| 国产 日韩 另类 视频一区爱| 久久婷婷电影网| 中文色综合| 日韩三级av片| 国产乱伦亚洲| 97人人模人人爽人人| 韩国女主播青草在线| 三及片网站| 欧美成人性爱视频免费观看| 中美日韩毛片| sewuyueav| 夜间福利片1000无码| 内射中出日韩在线观看视频| 中文字幕三四五区| 日韩图区 偷拍| 99日韩| 久久大线蕉一区| 天美精品原创av片国产| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 人人操人人大香蕉| 超碰97精品在线| 欧美日韩97| 99自拍视频| 国产青青综合伊人| 乱伦Av网| 天天影视之亚洲综合网| 超碰国产精品久| 亚洲棕合电彰| 波多野结衣AV无码一区| 九一亚洲国产免费| 97日韩| 欧美日韩情色一区二区| 欧美天天射| 国内91熟女人妻丝袜天天精品视频在线| 熟女高潮精品一区二区| 欧美系列在线一区二区| 日韩国产九九精品一区二区三区毛片| 日韩欧美成人性爱在线| 丰满精品人妻少妇久久字幕| 欧美色图片| 久操九九九九| 精品一区二区三区国产| 亚洲人妻AV| 丁香色狠狠色综合久久小说| 久久一区无码| 午夜无遮挡男女啪啪视频| 亚洲欧洲久久天堂| 亚洲成人福利电影免费| 久草成人影片| 欧美婷婷| 婷婷五月天丁香| 激情小说亚洲| 69精品人人人人| 无码高清国产AV| 国产风韵犹存熟妇三区| 五月婷婷无码| 国产午夜在线观看| 久久夜夜夜| 激情视屏国产乱伦强奸| 九九九久久久| 欧美精品久久| 深爱激情五月天| 在线播放成人高清免费视频| 亚洲老司机123专区| 自慰白浆在线观看| 97欧美视频| 精品无人区麻豆乱码久久久| 熟女乱伦二区| 欧美黄色手机在线观看| 天天天操天天天爱| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 国产精品网站www| 日韩av不卡在线看| 欧美亚洲丝袜人妻制服中文99| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 五月婷婷影院| 精品国产无码中文| 日韩不卡网操逼中文字幕日韩| 秋霞无码av鲁丝片一区| 欧美双插| 丝袜狂射91| 内射白嫩美女| 超碰人人超在线观看| 99视频这有这里有精品| 欧美情色亚洲| 日欧毛片久久| 欧美激情总合网| 亚洲九月丁香| 人人看人人插| 丝袜足交视频| 国偷自 一区二区| 亚洲码专区| 黄片com.| 日韩欧美大力操| 在线综合网| 天天综合站| 欧美日韩少妇色情| 亚洲综合另类| 亚洲啪啪视频一区二区| 三级日韩一区二区三区| 婷婷人妻激情| 日韩在线观看AV| 久草草一二三四区久久| 欧美日韩免费专区在线| 色999;丁香五月| 园内精品自拍视频在线播放| A级国产欧美激情在线| 久久久三区二区一区| 日韩不卡码| 久久超碰亚洲人| 国产小视频91| 国产亚州日韩欧美看片| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 久久久蜜桃一区二区三区| 国产精品久久久久久片| 黄片qw| 99婷婷一区二区| 中文字幕丰满子伦无码专区在线视频最新| 亚洲欧美综合网站| 色偷偷人人玩人人舔人人操人人摸人人爽| 久久一留热品黄| 久久久艹艹艹| 久久精品欧美一区蜜桃| 蜜桃臀av在线观看| 超碰av在线| 激情看片网站| 国产亚洲99久久精品| 囯产乱伦一区二区三女| 日日碰狠狠添天天爽超| 国产精品熟女九色九色蜜臀| 久久久久久久国产视频| 亚洲AV噜噜狠狠网址蜜桃动漫| 日本操逼视频不卡直接放| 澳门黄片一香蕉视频| 蜜臀一区二区三区在线 | 成人黑料社久久| 99精品久久久久久久婷婷蜜桃| 成年人一级黄色毛片大全在线观看| 淫荡少妇免费| 一级啊性爱在线视频| 亚洲中文一区二区三区视频| 婷婷丁香熟妇综合网| 超碰亚洲欧美日韩无| 熟妇人妻一区二区| 九九夜精品九九在线| 熟女精品一区二区在线观看| 五月天欧美色图| aV中文麻| 91香蕉国产尤物视频| 国内精品嫩模A∨私拍小视频| 亚洲色色探花| 欧美黄色大香蕉一区二区| 婷婷久久久| 青青青操| 97超碰巨乳| 久草色在线观看| 97这里只有精品| 国模私拍一区二区三区神乳| 中文字幕一区二区韩| 狼人久草| 玖玖蜜臀资源网| 国产女人9999| 超碰人妻97| 中国一级特黄大片护士| 久操婷婷| 二级久久网| 九九草| 日韩亚洲中文字幕在线| 操91| 天天看高清麻豆| 久久九九网| 久久一二区四| 伊人在线大香蕉二。| 男人的天堂一区| 在线观看黄色电话| 九一综合精品视品av| 天天热精品| 91久久免费视频互動交流| 中文字幕交换人妻| 刺激性视频黄页| 久久久久久久久久久97| 91视频女生| 午夜a成v人电影| 99色色网| 超碰 国产熟女精品一区| 人妻精品一区二区三区| 欧美色性爱| 麻豆乱码久久精| 骚货 中文字幕 av| 亚洲乱码精品一区二区| 五月激情啪啪| 美女网站黄页| 欧美日韩国产一区二区小黄片大全| 日本超碰在线国产一区| 欧美日本不卡| 久久受www免费人成| 极品色社| 自拍啪啪视频| 亚乱色| 丝袜无码a片| 一区操逼| 国产人伦精品一区二区三区| 91bbbbbb| 国产高潮AA片免费看| 麻豆精品三区视频| 色哟哟AⅤ| 东京成人一区| 国产成年女黄特黄| 韩日精品四区| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 日婷婷| 四月丁香婷婷| 淫荡网址| 1024亚洲中文字幕久在线看片你懂的| 久超碰这里只有精品| 日韩激情中文字幕有码| 久久99精品国产| 午夜视频久久久久一区| 少妇一区二区三区在线观看| 超碰成人人人爽人人爽| 亚洲色色色| 综合欧美亚洲| 人妻少妇精品一区二区三区| 97香蕉网| 五月天色图| 五月天婷婷在线看| 亚洲欧美日韩有码| 国产精品一区二区久久精品| 国产精品2020| 日本国产亚洲一区在线观看| 91偷拍欧美亚洲| 日韩在线欧美精品一区二区| 国产一区麻豆免费观看| 亚洲乱色熟女一区| 天堂涩涩| 欧美成人午夜免费福利785| 91亚洲影视| 婷婷国产精品九区| 一二三四视频中文字幕在线看| 韩国女主播青草在线| 国产精品亚洲无码| 老熟女中文字幕高清| 久久久婷| 久久精品国产亚洲AV清纯| 91最新综合| 一区二区三区黄片免费观看| 亚洲交换| 五月天婷婷综合网| 亚洲自拍天堂| 天天搞欧美| 欧美毛片在线网| 国产9 9在线 | 亚洲| 亚洲欧洲无码一区夜| 亚洲天堂 视频你懂的| 欧美日韩97在线| 日韩性爱电影一区| 色香AV| 北条麻妃性愛视频| 综合欧美日本三级| 日本人妻伦在线中文字幕| 天天操天天看| 男人的天堂2019AV| 中文日本免费高清| 无马一区二区| 青青草视频在线观看一区二区| 亚洲操逼视频网站| 97爱爱爱| 亚洲欧美综合网站| 97国产超湿| 婷婷午夜成人色中色| 欧美人人天天网| 一牛影视久久久一区二区三区| 国产精品制服丝袜清纯唯美 | 人人妻人人狠人人| 女性91网站| 加勒比久久av| 亚洲一区二区 麻豆传媒| 色99视频| 视频在线观看免费一区二区三区| 亚洲 欧美综合| 伊人久久亚洲中文字幕不卡| 国产精品久久久久久久久AV大片| 在线播放免费av福利片| 欧美日韩亚洲天堂| 91熟女综合| 久久久久13| 日本护士高潮| 7777奇米影视久久| 熟妇色99| 国产蜜臀在线| 天天干夜夜肏| 日han少妇无码| 吻戏激情性巴克| 96久久精品一二三区色欲| 免费看黄片现成| 另类小说欧美激情校园春色| 亚洲人精品午夜不卡| 上床不卡网站| 久久人妻97久久久久久久| www.色99| 亚洲欧综合另类无码一区| 最近二区三区视频大全| 国产精品久久泡妞网站| 日本精品九九九| 亚洲揄拍网| 久久e6只有精品| 色色无码| 久99久视频| 一级黄色牲爱A级片| 国产日韩色综合| 欧美大香蕉久| 欧美18老人禁| 美女十八禁| 国产日韩怡红院| 欧美九九九| 激情文学小说一区二区 | 加勒比久久av| 黄站在线免费观看| 国产欧美日韩臀| 国产免费久久精品99re韩国| 日本不卡二三区| 超碰性爱97| 久偷拍| 青青草啪啪网| 后入式999| 亚洲情色 无码专区| 黑人综合色| 97伊人超碰| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 日韩国产欧美伦理在线| 日韩无码操逼片| 成人av影院在线观看| 成人性爱av| 99久久e免费热视| 日本性爱网址| 啊啊啊好爽快点啊啊啊嗯嗯| 99少妇精品视频| 欧美亚综合色图| 免费久久9999| 男人的亚洲天堂| 精品一级| 亚洲无码精品AV久久久| 91av熟女人妻| 乱伦1色页| 人人操肉肉| 成人免费不卡在线视频| 亚洲色啪| 国产精品经典一卡久久久 | 91丨国产丨白浆| baiduhicn.com。| 久久9精品网站| 97亚洲精品超碰| 9国产超碰| AV乱伦专区| 动漫爆乳3D奶水一区在线观看| 清柠毛片| av天天在线| 91亚洲最新在线| 久久久一二三四区| 欧美一区二区三区互相| av日韩在线观看电影| 大香蕉亚洲中文| 99热精品国产| 色阁阁AV综合网| 亚洲日韩美女丝袜美腿人妻视频| 男女日B国产| 欧美中出1| 欧美亚男人的天堂| 无卡一区=区| 黄色片A级一区二区三区| A级毛片在线看免费| 国模精品一区二区三区苹果色戒 | 在线中文AV| 视频不卡中文字幕| 亚洲图片欧美在线视频| 欧美丝袜激情| 欧美色91| 老熟女搡BBBB搡BBBB视频| 欧美精品自慰系列寂寞少妇| 久久综合激情| 色婷婷一区二区三区久久午夜| 欧美日韩久久精品爱爱| 伊人精品久久网站| 吻戏激情性巴克| 天天舔日美女视频| 国产精品毛片?v一区二区三区| 午夜大香蕉| 亚洲国产青青| 亚洲av性爱电影| 静品嫩模一区二区| 秋霞午夜视频一区二区| 97AV在线观看| 7777奇米影视久久| 亚洲AO在线| 久久久蜜桃臀无码视频| 久久精品国产亚洲AV无码电影| 一区二区三区四区五区高清无码永久视频| 9丨久久九九九| 婷婷中文网| 久久女人视频| 色五月av| 一级片在线观看高清无码| 女优视频第10页| 国产美女91| 欧美色五月| 国产精品69久久久久孕妇欧美 | 天天舔天天 | 人人干黄色| 欧美熟女激情| 97久久网| 精品国产乱码久久久久久久久1| 亚州综合AⅤ| 一本大道不卡一二三区| 97色诱| 色哟哟 日韩精品| 男人的天堂2018东京热啪啪啪| 香蕉综合网| 开心五月激情网| 深喉吞精| 99在线观看| 天天操夜夜操| 亚洲综合97中文网| 欧美 亚洲| 东京日日夜夜| 欧差乱伦二三| 久久25| 88xx成人精品视频| 天天91~综合入口| 日韩电影在线观看网址| 色婷婷aV一区二区三区麻豆综合| 99人妻| 夜色五月天| 欧美 日韩第一性色| 激情五月丁香五月| 久久αⅴ| 丝袜美腿诱惑亚洲欧美视频在线观看| 美熟女逼导航AV操逼| 色爱三区| 男人的天堂com| 欧洲Au麻豆| 日本性爰一道本| 人妻黑丝袜电影| 桃色五月天| 午夜操一操| 日韩精品操少妇| 国产69精品久久久久99尤物| 欧美综合色,www| 亚洲色天堂日韩中| 男女无套 免费网站| 99999久久久久9国产精品| 欧美精品日韩久久久九| 97爱啪| 婷婷午夜| 爽极品影院| av2014 日韩在线中文字幕| 69超碰综合| 精品亚洲一区在线观看| 日韩欧美~中文字| 男人天堂2019亚洲| 蜜乳视频网站| 久久AV色| 日本 欧美 亚中文字幕| 精品无码欧美三级| 精国久久一区二区三区98| 亚洲男人bt天堂| heyZO天然素人无码AⅤ专区| 国产人妻精品一区二区三区秋霞| 欧美色综合影院| 九色黄站| 欧美 日韩 婷婷 五月| 精品人妻美妇91job| 色婷婷六月丁香七月婷婷| 99精品丰满人妻无码| 啊啊啊好爽快点啊啊啊嗯嗯| 天天综合97| 久久99久久99精品天美传媒棢·纸:. | 国产精品干干干| 97超碰久久| 福利大香蕉| 日韩精彩免费| 色婷五月天| 91人妻做a观看视频| 天天艹天天日| 午夜视频好爽啊| 亚州一区二区| 久久6热精品99视频| 91在线欧色| 国产乱伦亚洲| 日本羞羞的视频在线播放 | 一级黄色视频网| 97在线/亚洲| 九一国产精品| 四季AV综合网址| 成人婷婷丁香| 五月婷丁香| 精品欧美А∨无码黑人大荫蒂| www.男人的天堂| 色爱欲亚洲| 亚洲丝袜天堂| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 精品美女在线视频| 九九综合色| 欧美十八禁网站| 狠狠操官网| 日韩电影在线观看网址| 色图四区| 91精品操美女| 亚洲成人色情五月天丁香花| 亚洲熟妇乱女区二区三区| 91一起操| 日韩精品在线观看网站| 在线a v| 国产亚洲日韩在线三区黑人| 亚洲视频中文一区| 亚欧成人一级片在线播放| 97视频免费播放| 漂亮人妻被强中文字幕hd| 99久久9| 少妇熟女视频一二三区| 天美传媒av一区二区| 亚洲美女色图| 青青草原人妻| 国产白嫩精品久久| 91黑丝少妇| 人人喜人人妻| 裸模AV女优| 欧美色图私拍91| 亚洲综合图文| 日韩不卡网操逼中文字幕日韩| 久久色一区二区| 欧美亚洲美少妇一区二区|